1.概要PHP コードを CGI として実行するインタプリンタ「PHP-CGI」のクエリストリング処理には、任意の引数を指定して PHP-CGI を実行できてしまう脆弱性が存在しました。リモートの第三者に悪用されると、任意の PHP コードのソースコードが漏えいしてしまう可能性、任意の PHP コードを実行される可能性がありました。この脆弱性は 2012 年 5 月に修正されましたが、2013 年 10 月に、この脆弱性の悪用を容易にするエクスプロイトコードが公開されました。実際にこのエクスプロイトコードに基づく攻撃が確認されていることから、影響を受けるバージョンの PHP-CGI を導入している環境では、可能な限り以下に記載する対策を実施してください。2.深刻度(CVSS)7.5http://nvd.nist.gov/cvss.cfm?name=&vector=(AV:N/AC:L/Au:N/C:P/I:P/A:P)&version=2※この CVSS 値は、CVE-2012-1823 のものです。3.影響を受けるソフトウェア ※PHP 5.4.3 より前のバージョン 5.4 系の PHPhttp://www.php.net/ChangeLog-5.php#5.4.3PHP 5.3.13 より前のバージョン 5.3 系の PHPhttp://www.php.net/ChangeLog-5.php#5.3.134.解説PHP には、PHP コードを CGI として実行するインタプリンタ(言語処理系)「PHP-CGI」があります。2012 年 5 月、PHP-CGI において、任意に引数を指定して PHP-CGI を実行できてしまう脆弱性が公開されました(*1)。この脆弱性を悪用すると、CGI として実行される PHP コードのクエリストリングに任意の PHP-CGI の引数を指定することで、それらの引数を指定してPHP-CGI を実行できてしまいました。このとき、PHP-CGI の引数に「-s」オプションを指定すると、PHP コードのソースコードが漏えいしてしまいます。また、「-d allow_url_include=On」と「-d auto_prepend_file=php://input」を指定したうえで、POST メソッドで任意の PHP コードを送信すると、そのPHP コードを実行されてしまいます。この脆弱性は、公開されると数日で修正されました((*1)の [Disclosure timeline] によると、元々 CERT およびPHP 開発者と協調しながら脆弱性の修正を進めていたことが分かります)。この脆弱性が公開された 2012 年 5 月頃のエクスプロイトコード(*2)、および確認された攻撃の痕跡(*3)によると、この脆弱性を悪用するためには「PHPコード(例:index.php)を指定する必要がある」と考えられていました。しかし、2013 年 10 月に「PHP コードを指定せずに、『PHP-CGI』を直接指定して」この脆弱性を悪用するエクスプロイトコードが公開されました(*4)。PHP 開発者は、URI で直接 PHP-CGI を指定しても、PHP-CGI が CGI として実行されないように、php.ini で cgi.force_redirect を有効にすることを推奨しています。この設定が有効になっていると、Web ブラウザなどで、PHP-CGI を直接実行させようとしても実行できません。しかし、このエクスプロイトコードでは、クエリストリングに「-d cgi.force_redirect=0」を含めることで、URI で直接 PHP-CGI を指定して、この脆弱性を悪用することを可能にしました。このエクスプロトコードによって、Web サイトで CGI として動作する PHP コード(例:index.php)が存在していなくても、PHP-CGI をインストールしているだけでも、この脆弱性を悪用されてしまうことが発覚しました。このエクスプロトコードをもとにした攻撃が多数確認されているため(*5)、影響を受けるバージョンの PHP-CGI を導入している環境では、可能な限り以下に記載する対策を実施してください。(*1): https://web.archive.org/web/20131101070143/http://eindbazen.net/2012/05/php-cgi-advisory-cve-2012-1823/(*2): http://blog.tokumaru.org/2012/05/php-cgi-remote-scripting-cve-2012-1823.html(*3): http://blog.sucuri.net/2012/05/php-cgi-vulnerability-exploited-in-the-wild.html(*4): http://www.exploit-db.com/exploits/29290/(*5): http://blog.tokumaru.org/2013/11/apache-magica-attack.html http://www.morihi-soc.net/?p=114 http://d.hatena.ne.jp/ozuma/20131103/1383413495 http://neoredribbon.blog5.fc2.com/blog-entry-275.html5.対策以下の Web サイトを参考に PHP 5.4.3/5.3.13 以降を入手しアップデートすることで、この脆弱性を解消することが可能です。PHP: Downloads http://us1.php.net/downloads.phpまた、Linux ディストリビューションにおいては、それぞれのディストリビューションに関連する情報を確認してください。・Red Hat(Fedora)Red Hat Bugzilla Bug 818907https://bugzilla.redhat.com/show_bug.cgi?id=818907・UbuntuCVE-2012-2311http://people.canonical.com/~ubuntu-security/cve/2012/CVE-2012-2311.html・DebianCVE-2012-2311http://security-tracker.debian.org/tracker/CVE-2012-2311・GentooGentoo Linux Documentation -- PHP: Multiple vulnerabilitieshttp://www.gentoo.org/security/en/glsa/glsa-201209-03.xml6.ソースコード(Web非公開)(執筆:株式会社ラック サイバー脅威分析センター)※Web非公開該当コンテンツ閲覧をご希望の方はScan Tech Reportにご登録(有料)下さい。Scan Tech Reporthttp://scan.netsecurity.ne.jp/archives/51916302.html