▼2015年2月7日土曜日GHOST脆弱性を用いてPHPをクラッシュできることを確認したGHOST脆弱性について、コード実行の影響を受けるソフトウェアとしてEximが知られていますが、PHPにもgethostbynameという関数があり、libcのgethostbyname関数をパラメータ未チェックのまま呼んでいます。そこで、PHPのgethostbynameを用いることでPHPをクラッシュできる場合があるのではないかと考えました。試行錯誤的に調べた結果、以下のスクリプトでPHPをクラッシュできることを確認しています。4.0.2以降のすべてのバージョンのPHPで再現するようです。4.0.0と4.0.1では再現しませんでした。1028));CentOS6.5(32ビット)での実行の様子を下図に示します。(コアダンプ)$上記はコンソール上での実行ですが、Webからの呼び出しでもPHPがクラッシュします。このサンプルではgethostbynameを2回呼んでいますが、メモリの割り当て状況によっては1回の呼び出しでクラッシュさせることもできるでしょう。上記はあくまでPoCです。既存のアプリケーションに対して外部からの攻撃によりPHPをクラッシュさせる、さらには任意のコードを実行させるのは困難と予想しますが、影響が皆無というわけではないでしょうから、以下を確認しておくと安全です。5.5.22(現在はRC1)からはgethostbynameの引数が255バイトまでに制限されるので問題ないすなわち、gethostbynameの引数を外部から制御できるアプリケーションがある場合は、GHOST脆弱性に対するパッチを適用する(強く推奨)か、どうしてもすぐにパッチを出来ない場合は、gethostbynameの引数をバリデーションにより255バイト以下等に制限することを推奨します。PHP5.6.6、PHP5.5.22が公開された後にこれらにバージョンアップすることでも解決します。