脆弱性対応ウォッチ重大・クリティカル脆弱性のクラウド別対応まとめ
最新更新履歴CriticalHigh回避策のみパッチありAWSGCPAzureLinux
Critical CVSS 9.8
CVE-2026-17543

PHP の PostgreSQL 拡張にバックスラッシュのエスケープ漏れによる SQL インジェクション

情報取得日: 2026/07/30・本ページは公開情報の非公式まとめです

CVE IDCVE-2026-17543
製品PHP / PHP 8.2.0〜8.2.32 / 8.3.0〜8.3.32 / 8.4.0〜8.4.23 / 8.5.0〜8.5.8(ext-pgsql を使う構成)
CVSS9.8(Critical)
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
種別 (CWE)CWE-89 SQLコマンドで使用される特殊要素の不適切な無害化(SQLインジェクション)
登録/公開日2026/07/30
出典https://nvd.nist.gov/vuln/detail/CVE-2026-17543

概要

PHP の PostgreSQL 拡張(ext-pgsql)に SQL インジェクションがある。php-src の公式アドバイザリ GHSA-7qpv-r5mr-78m4 によれば、原因は php_pgsql_convert() が値を組み立てる際に使う PQescapeStringConn() が、PostgreSQL 9.1 以降の既定である standard_conforming_strings = on のもとではバックスラッシュをエスケープしないことにある。この設定では通常の文字列リテラルはバックスラッシュを特別扱いしないので、PQescapeStringConn() がバックスラッシュをそのまま通すのは仕様どおりである。ところが php_pgsql_convert() は値を E'...' 形式(エスケープ文字列定数)に入れて組み立てており、この形式ではバックスラッシュがエスケープ文字として解釈される。結果として、攻撃者がバックスラッシュに続けて単一引用符を送り込むと、リテラルの外へ抜け出して任意の SQL を継ぎ足せる。影響を受けるのは php_pgsql_convert() を経由する pg_insert() / pg_update() / pg_select() / pg_delete() の4関数で、pg_query_params() のようなサーバ側でパラメータを渡す関数は該当しない。修正版は 8.2.33 / 8.3.33 / 8.4.24 / 8.5.9 である。深刻度の評価は採番元と NVD で分かれており、CNA である PHP は CVSS 4.0 で 8.1 High、NVD は独自評価(Primary)として CVSS 3.1 で 9.8 Critical を付けている。本サイトは NVD の Primary 評価を採用している。CISA の KEV には本稿の確認時点(2026-08-23)で収載されていない。

クラウド/OS 別の対応状況

各ベンダー公式アドバイザリで確認できた事実に基づき整理しています。確認できていない項目は「情報確認中」と明記し、存在しないパッチ番号・バージョンは記載しません。

AWS / GCP / Azure は同じ対応区分です: 回避策のみ
Linux のみ異なります: ディストリ修正あり
環境対応状況対応方法・備考
AWS (ECS/EC2) 回避策のみ
EC2 / ECS 上の PHP を 8.2.33 / 8.3.33 / 8.4.24 / 8.5.9 以降へ更新する。Amazon Linux 2023 は dnf update php で、コンテナは php:8.x-fpm 系のベースイメージを引き直して再ビルドする。
AWS のマネージドサービス側に修正対象は無い。Elastic Beanstalk の PHP プラットフォームを使っている場合はプラットフォームバージョンの更新で入るため、独自に php を入れ直す前にプラットフォーム更新の有無を確認する。
参照リンク
GCP 回避策のみ
同上。GCE 上の PHP はディストリのセキュリティ更新で、Cloud Run / GKE はベースイメージを更新して再ビルドする。
App Engine スタンダード環境の PHP ランタイムは Google が更新するため利用者側の作業は無いが、反映時期は Google の告知に依存する。フレキシブル環境と Cloud Run は利用者のイメージなので更新が要る。
参照リンク
Azure 回避策のみ
同上。Azure VM 上の PHP はディストリのセキュリティ更新で更新する。App Service on Linux の PHP は、対応済みのマイナーバージョンへスタックを切り替える。
App Service の PHP バージョンは Microsoft が提供するイメージに依存するため、修正版が反映されるまでの間は該当4関数を使う経路の有無で判断する。
参照リンク
Linux ディストリ修正あり
Debian は trixie が php8.4 8.4.24-1~deb13u1(DSA-6406-1)、bookworm が php8.2 8.2.33-1~deb12u1(DLA-4732-1)、bullseye が php7.4 7.4.33-1+deb11u12(DLA-4733-1)で修正済み。sid / forky は 8.4.24-1。
Debian は php7.4 についても本件を修正対象としており(php8.2 / php8.4 と異なり not-affected ではない)、NVD の影響版一覧より広い。上流の修正コミットは php-8.4.24 の 53ac7025451c6481d44cf1835bb8385299a6a3a3。
参照リンク

解決の方向性(パッチ/回避策/代替)

対応の順序は、(1)ext-pgsql を実際に使っているかの確認、(2)4関数の使用有無の確認、(3)更新、である。まず ext-pgsql を読み込んでいない環境は影響を受けない。php -m の一覧に pgsql が出るかで判定でき、PostgreSQL を PDO_pgsql だけで使っている構成も本件の対象外である。ここで対象を絞れると、更新の優先度をかなり下げられる場合がある。次に、ext-pgsql を使っていても、影響するのは pg_insert() / pg_update() / pg_select() / pg_delete() の4関数に限られる。この4関数は連想配列をそのままテーブルの行に写す用途で使われるもので、pg_query_params() や PDO のプリペアドステートメントを使っているコードは経路が異なる。grep で4関数の呼び出し箇所を洗い、外部入力が配列の値として届く経路があるかを見る。呼び出しがゼロなら、更新は通常のセキュリティ更新の枠で扱ってよい。三つ目が更新である。8.2 系なら 8.2.33、8.3 系なら 8.3.33、8.4 系なら 8.4.24、8.5 系なら 8.5.9 以降へ上げる。系列をまたぐ移行は不要で、いずれもパッチリリースである。なお Debian は php7.4(bullseye)についても本件を対象として 7.4.33-1+deb11u12 で修正しており(DLA-4733-1)、NVD の記載する 8.2 系以降だけが対象とは限らない点に注意する。サポート切れの系列を独自ビルドで使っている場合は、自分のビルドに php_pgsql_convert() の該当コードが含まれるかを確認すること。緩和策はベンダーから提示されていない。更新までの間に取れる措置としては、該当4関数を pg_query_params() 相当の書き方へ置き換えることが実質的な回避になるが、これはコード変更であって設定による回避ではない。完了条件は、(1)ext-pgsql を使う全ホストが修正版以降であること、(2)該当4関数を使うコードについて外部入力の経路を確認済みであること、の2点である。

よくある質問(CVE-2026-17543)

CVE-2026-17543(PHP 8.2.0〜8.2.32 / 8.3.0〜8.3.32 / 8.4.0〜8.4.23 / 8.5.0〜8.5.8)の影響は?

Critical(CVSS 9.8)に分類されるPHP PHP 8.2.0〜8.2.32 / 8.3.0〜8.3.32 / 8.4.0〜8.4.23 / 8.5.0〜8.5.8(ext-pgsql を使う構成)の脆弱性です。PHP の PostgreSQL 拡張(ext-pgsql)に SQL インジェクションがある。php-src の公式アドバイザリ GHSA-7qpv-r5mr-78m4 によれば、原因は php_pgsql_convert() が値を組み立てる際に使う PQescapeStringConn() が、PostgreSQL 9.1 以降の既定である standard_conforming_strings = on のもとではバックスラッシュをエスケープしないことにある。この設定では通常の文字列リテラルはバックスラッシュを特別扱いしないので、PQescapeStringConn() がバックスラッシュをそのまま通すのは仕様どおりである。ところが php_pgsql_convert() は値を E'...' 形式(エスケープ文字列定数)に入れて組み立てており、この形式ではバックスラッシュがエスケープ文字として解釈される。結果として、攻撃者がバックスラッシュに続けて単一引用符を送り込むと、リテラルの外へ抜け出して任意の SQL を継ぎ足せる。影響を受けるのは php_pgsql_convert() を経由する pg_insert() / pg_update() / pg_select() / pg_delete() の4関数で、pg_query_params() のようなサーバ側でパラメータを渡す関数は該当しない。修正版は 8.2.33 / 8.3.33 / 8.4.24 / 8.5.9 である。深刻度の評価は採番元と NVD で分かれており、CNA である PHP は CVSS 4.0 で 8.1 High、NVD は独自評価(Primary)として CVSS 3.1 で 9.8 Critical を付けている。本サイトは NVD の Primary 評価を採用している。CISA の KEV には本稿の確認時点(2026-08-23)で収載されていない。

CVE-2026-17543 の対応方法・回避策は?

対応の順序は、(1)ext-pgsql を実際に使っているかの確認、(2)4関数の使用有無の確認、(3)更新、である。まず ext-pgsql を読み込んでいない環境は影響を受けない。php -m の一覧に pgsql が出るかで判定でき、PostgreSQL を PDO_pgsql だけで使っている構成も本件の対象外である。ここで対象を絞れると、更新の優先度をかなり下げられる場合がある。次に、ext-pgsql を使っていても、影響するのは pg_insert() / pg_update() / pg_select() / pg_delete() の4関数に限られる。この4関数は連想配列をそのままテーブルの行に写す用途で使われるもので、pg_query_params() や PDO のプリペアドステートメントを使っているコードは経路が異なる。grep で4関数の呼び出し箇所を洗い、外部入力が配列の値として届く経路があるかを見る。呼び出しがゼロなら、更新は通常のセキュリティ更新の枠で扱ってよい。三つ目が更新である。8.2 系なら 8.2.33、8.3 系なら 8.3.33、8.4 系なら 8.4.24、8.5 系なら 8.5.9 以降へ上げる。系列をまたぐ移行は不要で、いずれもパッチリリースである。なお Debian は php7.4(bullseye)についても本件を対象として 7.4.33-1+deb11u12 で修正しており(DLA-4733-1)、NVD の記載する 8.2 系以降だけが対象とは限らない点に注意する。サポート切れの系列を独自ビルドで使っている場合は、自分のビルドに php_pgsql_convert() の該当コードが含まれるかを確認すること。緩和策はベンダーから提示されていない。更新までの間に取れる措置としては、該当4関数を pg_query_params() 相当の書き方へ置き換えることが実質的な回避になるが、これはコード変更であって設定による回避ではない。完了条件は、(1)ext-pgsql を使う全ホストが修正版以降であること、(2)該当4関数を使うコードについて外部入力の経路を確認済みであること、の2点である。

自分の環境が CVE-2026-17543 の影響を受けるか確認するには?

PHP PHP 8.2.0〜8.2.32 / 8.3.0〜8.3.32 / 8.4.0〜8.4.23 / 8.5.0〜8.5.8(ext-pgsql を使う構成) を利用している場合、稼働バージョンが影響範囲に含まれるかを一次情報(https://nvd.nist.gov/vuln/detail/CVE-2026-17543)で確認してください。AWS・GCP・Azure・Linux それぞれの対応状況は本ページの「クラウド/OS 別の対応状況」表にまとめています。確認できていない項目は「情報確認中」と明記しており、存在しないパッチ番号・バージョンは記載していません。

参考情報(出典)

本ページの記載は下記の一次情報に基づく非公式まとめです。数値・対応状況は各出典元で最終確認してください。

免責: 本ページは CISA KEV・NVD・各ベンダー公式アドバイザリ等の公開情報をもとにした非公式まとめです。修正バージョンや対応可否は変更される場合があります。実際の対応は必ず 出典元および各ベンダー公式情報・自環境で確認してください。

« 一覧に戻る