PHPのfsockopen()関数において、ホスト名にnull文字が含まれている場合の検証が不十分な脆弱性が発見されました。この問題により、parse_url()関数がホスト名を誤って解釈し、セキュリティ上の問題を引き起こす可能性があります。影響を受けるバージョンはPHP 8.1.0から8.4.10までの範囲です。この脆弱性は8.4.10で修正されました。
この脆弱性は、攻撃者がnull文字を含むホスト名を指定することで、parseurl()関数に誤った情報を与え、予期せぬ動作を引き起こす可能性があります。これにより、アプリケーションのアクセス制御をバイパスしたり、機密情報を漏洩させたりするリスクがあります。例えば、ユーザーが入力したホスト名を検証せずにparseurl()関数を使用している場合、攻撃者はnull文字を挿入することで、意図しないリソースにアクセスできる可能性があります。この脆弱性は、PHPアプリケーションのセキュリティを著しく損なう可能性があります。
この脆弱性は、現時点ではKEVに登録されていません。CVSSスコアはLOW(3.7)であり、攻撃の難易度は比較的低いと考えられます。公開されているPoCは確認されていませんが、脆弱性の性質上、将来的に悪用される可能性があります。NVD(National Vulnerability Database)およびCISA(Cybersecurity and Infrastructure Security Agency)の情報を定期的に確認し、最新の情報を把握することが重要です。
Applications built using PHP that rely on user-supplied hostnames for access control or resource identification are at risk. This includes web applications that connect to external services or databases using dynamically constructed URLs. Legacy PHP applications with outdated security practices are particularly vulnerable.
• php: Examine PHP application code for instances of fsockopen() and parse_url() where hostnames are used without proper validation. Look for patterns where user-supplied input is directly passed to these functions.
// Example of vulnerable code
$hostname = $_GET['hostname'];
$url = parse_url('http://' . $hostname);
$ip = $url['host'];• linux / server: Monitor PHP error logs (typically in /var/log/php_errors.log) for errors related to URL parsing or hostname resolution. Use journalctl -u php-fpm to filter for relevant errors.
• generic web: Use curl to test endpoints that accept hostnames as parameters. Attempt to inject null characters into the hostname and observe the response. curl -H "Host: example.com%00" http://your-application/
disclosure
エクスプロイト状況
EPSS
0.04% (11% パーセンタイル)
CISA SSVC
CVSS ベクトル
この脆弱性への対応策として、まずPHPをバージョン8.4.10以降にアップデートすることを推奨します。アップデートが困難な場合は、ユーザーからのホスト名入力を厳密に検証し、null文字が含まれていないことを確認する入力検証を実装してください。また、WAF(Web Application Firewall)を導入し、null文字を含むホスト名に対するリクエストをブロックするルールを設定することも有効です。PHPのコードレビューを実施し、parse_url()関数を使用する箇所で適切な検証が行われているか確認することも重要です。アップデート後、アプリケーションの動作をテストし、問題がないことを確認してください。
PHPを最新バージョンにアップデートしてください。PHPのバージョンに応じて、8.1.33、8.2.29、8.3.23、または8.4.10以上のバージョンにアップデートしてください。これにより、影響を受ける関数におけるヌルバイト終端の脆弱性が修正されます。
脆弱性分析と重要アラートをメールでお届けします。
PHPのfsockopen()関数におけるホスト名検証の不備により、null文字を含むホスト名が許可され、parse_url()関数が誤った解釈を引き起こす可能性があります。CVSSスコアはLOW(3.7)です。
PHPのバージョンが8.1.0–8.4.10である場合、この脆弱性の影響を受ける可能性があります。特に、ユーザーからのホスト名入力をparse_url()関数で処理しているアプリケーションは注意が必要です。
PHPをバージョン8.4.10以降にアップデートすることを推奨します。アップデートが困難な場合は、入力検証を実装し、WAFを導入するなど、緩和策を講じてください。
現時点では、公開されているPoCや、活発な悪用事例は確認されていません。しかし、脆弱性の性質上、将来的に悪用される可能性はあります。
PHPの公式アドバイザリは、PHPの公式サイト(https://www.php.net/security)で確認できます。