【PHP】php-pearにセキュリティ侵害!?改ざんの有無を確認
-
カテゴリ:
- PHP
前月の話になりますが、php-pear(go-pear.phpファイル)にバックドアコードが混入された形跡が発見された!という記事を拝見しました。
記事の内容によると、2017年7月から2017年12月にかけて、PHPのライブラリを提供するツールである「PEAR」のサーバに攻撃があり、ファイルの改変などのセキュリティ侵害の恐れがあるとのことです。
実際運用しているサーバだけでなく、開発環境用としてローカルに構築している環境に対してもPHPを使っているのであれば、2017年7月から半年以内にphp-pearの導入を行った場合ファイルが改ざんされていないか確認する必要があります。
今回は自分でphp-pearの改ざんの有無を確認したので、その手順をメモとして残しておきます。
手順1. pearの実行ファイルの有無
まずは自分の環境にpearが入っているか、入っている場合はなんのライブラリがあるか確認します。
$ sudo find / -name *.phar
/usr/bin/phar.phar
・・・
・・・
上記のシェルコマンドで対象を洗い出すことができます。自分の場合は「/usr/bin/phar.phar」だけでした。
手順2. MD5ハッシュによる改ざんのチェック
手順1で洗い出した対象のPEARに対して、改ざんされていないかのチェックを行います。
チェックにはmd5sumコマンドを使います。
ここで簡単にmd5sumコマンドの説明をさせて下さい。
md5sumコマンドとは、一言でいうと対象ファイルのMD5ハッシュ値を算出してくれるコマンドです。
正直、MD5の細かな仕組みは分かりませんが>_<、自分の理解としては対象のファイルの内容をもとにMD5のアルゴリズムによって128ビットの特定の文字列を出力してくれるものだっと思っています。
ファイル名に関係なく、ファイルの内容が同じであれば同じハッシュ値が算出され、少しで内容が異なれば違うハッシュ値が算出されます。
この仕組みを使って、PEARのファイルのハッシュ値と改ざんされ悪意のあるコードを含むファイルのハッシュ値を比較することで、改ざんの有無を判断する感じです。
悪意のあるコードのハッシュは上記のリンクの記事によれば「1e26d9dd3110af79a9595f1a77a82de7」らしいです。
それでは確認手順に入ります。
$ sudo find / -name "phar.phar" | xargs md5sum
d68***************************** /usr/bin/phar.phar
自分の環境で使われるPEAR(今回はphar.phar)に対してmd5sumコマンドでハッチ値を計算している例になります。 「1e26d9dd3110af79a9595f1a77a82de7」と一致していなければセーフです。
最後に念のため、全PHPファイルに対して、悪意のあるコードと一致しないか確認しました。
$ sudo find / -name *.php | xargs md5sum |grep "1e26d9dd3110af79a9595f1a77a82de7"
上記コマンドを実行して、何もヒットしなければ一安心です。
手順3. GitHubのソースとの比較
手順2までの内容で対象ファイルが検出されたり、悪意のあるコードのハッシュ値と一致した場合は、GitHubに公開されている最新版と比較し、コード内容に差異あるか確認する必要が出てきます。
以下のURLから対象ファイルをダウンロードできます。
※対象はhttps://github.com/pear/pearweb_phars/releases/tag/v1.10.7
ファイルをダウンロードし終えたら、自分のファイルと比較してみます。
$ diff /usr/bin/go-pear.phar /var/tpjt/web/pearweb_phars-1.10.7/go-pear.phar
これで差分が出てこなければ問題ないかと思います。