Critical SQL Injection Vulnerability Found in ADOdb PHP Library – CVE-2025-46337 (CVSS 10.0)
2025/05/05 SecurityOnline — 世界中で 280万件以上のインストール数を誇る PHP データベースの抽象化ライブラリ ADOdb に、深刻なセキュリティ脆弱性が発見された。この脆弱性 CVE-2025-46337 は、PostgreSQL ドライバの pg_insert_id() メソッドに存在し、脆弱なアプリケーション上での任意の SQL コマンド実行を、攻撃者に許す可能性があるものだ。

アドバイザリには、「クエリ・パラメータの不適切なエスケープにより、ADOdb を使用するコードが PostgreSQL データベースへの接続を行い、ユーザーが指定するデータで pg_insert_id() が呼び出される際に、攻撃者に対して、任意の SQL 文の実行を許す可能性がある」と記されている。
この、SQL インジェクション脆弱性 CVE-2025-46337 には、CVSS スコア 10.0 が割り当てられている。また、この脆弱性が影響を及ぼす範囲は、postgres64/postgres7/postgres8/postgres9 を含む、複数の PostgreSQL ドライバとなる。
この脆弱性は、ユーザーが制御する入力に対して、適切なサニタイズ処理が行われない状況で、pg_insert_id() 関数の $fieldname パラメータとして渡されたときに発動する。それにより攻撃者は、結果である SQL クエリを操作し、基盤となるデータベースを侵害する可能性を手にする。
なお、このアドバイザリがには、「示されている深刻度は、最悪の使用シナリオに対応していることに注意してほしい」と明示されている。
コンフィグレーションにより、HTTP リクエスト・パラメータまたはユーザー・フォーム・データから、pg_insert_id() メソッドに対してダイレクトに入力データが受け渡される場合が、最も危険である。SQL 実行を完全に制御する攻撃者が、データベースの権限と統合状況に応じて、データの窃取/削除などを達成し、リモートコード実行さえも可能にするという。
この脆弱性は、ADOdb のバージョン 5.22.9 (コミット 11107d6) で修正されている。開発者に対して強く推奨されるのは、速やかなアップグレードにより、リスクを排除することだ。
迅速なアップグレードが不可能な場合のために、一時的な回避策が提供されている。このアドバイザリには、「pg_insert_id() メソッドの $fieldname パラメータには、制御されたデータのみを渡してほしい。さもなければ、最初に “pg_escape_identifier()” でエスケープしてほしい」と記されている。
PHP アプリケーションで広く利用されている DB 抽象化ライブラリである ADODB に、深刻な SQLi 脆弱性が発見されました。開発者の皆さまは、迅速なアップグレードおよび回避策の実施を、ご検討下さい。よろしければ、PHP で検索も、ご参照下さい。
You must be logged in to post a comment.