PHP 用ライブラリ jmespath.php の CompilerRuntime において、エスケープ処理の不備に起因するコードインジェクションの脆弱性が発見された。攻撃者が制御可能な JMESPath 式が CompilerRuntime または JP_PHP_COMPILE オプションが有効な状態で評価されると、不適切にエスケープされた関数名が PHP ソースコードとしてキャッシュファイルに書き込まれる。このキャッシュファイルが実行時にロードされることで、攻撃者が注入した任意の PHP コードが実行される仕組みである。デフォルトの AstRuntime を使用している場合は影響を受けないが、高速化のためにコンパイラ機能を利用している場合にリスクが生じる。
対象ソフト
jmespath.php は PHP で JSON データから要素を検索・抽出するためのライブラリであり、AWS SDK for PHP などの主要なプロジェクトでも利用されている。
影響
攻撃者は PHP プロセスの権限で任意のコードを実行できる可能性がある。これにより、サーバー内の機密情報の漏洩、データの改ざん、またはシステム全体の制御奪取につながる恐れがある。
対応策
2.9.1 以降のバージョンにアップグレードすること。直ちに対応できない場合は、JP_PHP_COMPILE を無効にし、CompilerRuntime の代わりにデフォルトの AstRuntime を使用することで回避可能である。