php.net ではありません · NVD ではありません · CISA ではありません

PHP 脆弱性トラッカー

PHP のセキュリティ脆弱性に関する非公式ブリーフィング

English简体中文日本語DeutschFrançaisNederlandsEspañol

セキュリティ警報

PHP2Shell:PHP をアップデートしてください。それが唯一の完全な修正です。

CVE-2026-109618 と CVE-2026-109619 は、PHP 本体に存在する認証不要のリモートコード実行(RCE)の深刻な脆弱性です。PHP プロジェクトは 2026 年 10 月 21 日、サポート中の 8.2〜8.5 系に修正版を公開しました。アップデート後は PHP を再起動してください。ファイアウォールは代わりになりません。

対策の手順

関連インシデント · CA 秘密鍵の漏えい · 2026年10月17〜21日

eMudhra 中間 CA 秘密鍵の漏えい:PHP サーバーで確認すべきこと

ブラウザは数時間で保護されました。PHP は事情が違います。curl と OpenSSL 拡張はサーバーの CA バンドルをそのまま信頼し、ブラウザ向けの失効リストは通常受け取らないため、古いバンドルが問題になります。

最終更新

何が起きたか

対応の時系列(UTC)
日時出来事
2026-10-17 18:05Chrome ルートプログラムに報告
10-17 19:45Chrome が CRLSet で TLS 中間 CA 6 件を公開鍵単位でブロック
10-17 22:59Firefox が OneCRL で 8 件すべてをブロック
10-18eMudhra が 8 件を失効
10-19Apple がブロック、Sectigo がクロス署名を失効
10-20Microsoft がブロック。NSS 3.131.1 が emSign ECC Root CA - G3 を削除。curl の cacert.pem 2026-10-20、composer/ca-bundle 1.4.16・1.6.0
10-27(予定)Chrome Root Store が全デバイスで emSign ECC Root CA - G3 を削除

自分の PHP サーバーは影響を受けるか

PHP は独自の CA リストを持ちません。openssl と curl 拡張は openssl.cafile / curl.cainfo が設定されていればそれを読み、なければ OpenSSL の既定パス(通常はディストリビューションの ca-certificates)を使います。CRLSet や OneCRL は受け取りません。そのバンドルに emSign ECC Root CA - G3(クロス署名の場合は AAA Certificate Services)が残っていれば、サーバーは漏えいしたチェーンをまだ信頼しています。

手順 1:PHP が読むバンドルを確認
# Which CA file does PHP use? Run as the same user/SAPI as the site if you can.
php -r 'print_r(openssl_get_cert_locations());'
php -i | grep -E 'openssl.cafile|openssl.capath|curl.cainfo'
手順 2:報告者のテストホストで確認
# Does PHP still trust the compromised eMudhra intermediates?
# Good result: bool(false) plus a "certificate verify failed" warning.
# Bad result: the page body is printed (the chain was trusted).
php -r 'var_dump(file_get_contents("https://dv-g3b-emudhra.we-have-a-problem.com/"));'
php -r 'var_dump(file_get_contents("https://dv-g3b-aaa-emudhra.we-have-a-problem.com/"));'

# Same check through the curl extension
php -r '$c = curl_init("https://dv-g3b-emudhra.we-have-a-problem.com/");
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
var_dump(curl_exec($c), curl_error($c));'
手順 3:バンドルにルートが残っているか確認
# Is the eMudhra root still in the bundle?
ls /etc/ssl/certs | grep -i emsign            # Debian/Ubuntu symlinks
grep -n "emSign ECC Root CA - G3" /path/to/cacert.pem   # curl/Mozilla-format bundle
# composer/ca-bundle version inside a project
composer show composer/ca-bundle | grep versions

SAPI ごとに確認してください。PHP-FPM や Apache mod_php は CLI と異なる php.ini を読むことがあるため、php --ini とサイトの phpinfo() を比べます。

対処方法

システムのバンドルと Composer の ca-bundle を更新
# Debian / Ubuntu (and Debian-based php:* Docker images)
sudo apt-get update && sudo apt-get install --only-upgrade ca-certificates
dpkg -l ca-certificates

# RHEL / Fedora / AlmaLinux / Rocky
sudo dnf upgrade ca-certificates

# Alpine (php:*-alpine images)
apk upgrade --no-cache ca-certificates

# Composer projects that ship composer/ca-bundle
composer update composer/ca-bundle    # 1.4.16+ or 1.6.0+

# Restart long-running PHP processes afterwards
sudo systemctl restart php8.3-fpm     # or apache2 / httpd / your queue workers
独自のバンドルを持つ環境(XAMPP、WAMP、古いパネル)
; php.ini — for stacks with their own stale bundle (XAMPP, WAMP, old panels)
; Download a current Mozilla-derived bundle from https://curl.se/ca/cacert.pem
; (the 2026-10-20 release or later), then point both settings at it:
curl.cainfo   = "/path/to/cacert.pem"
openssl.cafile = "/path/to/cacert.pem"
; Restart Apache / PHP-FPM so the new values load.

古いオールインワン環境や長く更新されていないパネルは、curl.cainfo を製品同梱の更新されないファイルに固定していることがよくあります。ベンダーの更新情報を確認するか、上記のように最新の cacert.pem を指定してください。

修正済みのソフトウェア

報告者のテストサイトが挙げる修正版(2026年10月21〜22日時点)
ソフトウェア修正版
Mozilla NSS3.131.1 (Bug 2084101)
curl CA bundle (cacert.pem)2026-10-20
composer/ca-bundle1.4.16, 1.6.0 (2026-10-20)
Debian ca-certificates20250419~deb12u2, 20250419+deb13u1, 20260816+nmu1
Ubuntu ca-certificates20260816ubuntu0.22.04.1, 0.24.04.1, 0.26.04.1, 0.26.10.1
Fedora ca-certificates2026.2.92_v9.0.319
Alpine ca-certificates20261020-r0
Arch ca-certificates-mozilla3.131.1-1
FreeBSD ca_root_nss1.131.1

当サイトで curl の公開中の cacert.pem(Last-Modified は2026年10月20日)を取得したところ、emSign ECC Root CA - G3 と AAA Certificate Services のどちらも含まれていませんでした。composer/ca-bundle 1.4.16 と 1.6.0 は CaBundle::findDistrustedCertificate も追加しています。

この一覧にないリリース(Ubuntu 20.04 や Debian 11 など)は、参照した情報源では修正済みと示されていません。ベンダーのトラッカーで確認してください。

よくある質問

統合環境とホスティングパネル

XAMPP やホスティングパネルは独自の PHP ビルドを同梱しているため、CA バンドルが OS の ca-certificates 更新に追従しないことがあります。XAMPP、cPanel、Plesk、DirectAdmin、CloudLinux、aaPanel、宝塔面板 の製品ページ、または製品一覧を確認してください。

自分のサイトの証明書は影響を受けますか?

可能性は低いです。eMudhra は 8 件の中間 CA がエンドエンティティ証明書を発行していないとし、Chrome もブロック前に CT ログへの記録はなかったとしています。ただし emSign ECC Root CA - G3 につながる証明書を使うサイトは、ルートが削除されるため証明書の再取得が必要です。

数千万枚の証明書が危険になったのですか?

いいえ。出回っている大きな数字は eMudhra の過去の総発行数で、漏えいした鍵で署名された証明書の数ではありません。

ブラウザが安全なら PHP サーバーは関係ないのでは?

ブラウザは CT を強制し、CRLSet や OneCRL を受け取ります。PHP の curl や OpenSSL は通常どちらも行わないため、読み込む CA バンドルが eMudhra のチェーンを信頼しなくなるまで保護されません。決済 API、Webhook、SMTP over TLS、Composer のダウンロードなどの外向き通信が対象です。

PHP はどのバンドルを使っていますか?

php.ini で curl.cainfo と openssl.cafile が設定されていればそれを、なければ OpenSSL のビルド時の既定パス(通常はディストリビューションの ca-certificates)を使います。Composer などは composer/ca-bundle を使い、システムのバンドルを優先し、見つからない場合に同梱の cacert.pem を使います。

出典

外部リンクは本サイトの外に移動します。本サイトはエクスプロイトコードを掲載しません。

  1. Protecting Firefox users following the compromise of eMudhra intermediate certificates (20 October 2026) — Mozilla Security Blog
  2. Protecting Chrome and Android users from compromised eMudhra intermediate CA certificates — Google (Chrome and Android Security)
  3. eMudhra statement on recent certificate security incident (updated 21 October 2026) — eMudhra
  4. eMudhra Intermediate CA Compromise: client check and patched-software list — we-have-a-problem.com (reporter’s test site)
  5. Bug 2083449 — eMudhra: Private key compromise of Intermediate Certificates — Mozilla Bugzilla
  6. Bug 2084101 — Remove eMudhra emSign Root CA - G3 from NSS — Mozilla Bugzilla
  7. Compromised eMudhra Intermediate Certificates (guidance for trust store operators) — Mozilla dev-security-policy
  8. Indian certification authority eMudhra’s private keys compromised – one of them was the number 4 (20 October 2026) — The Register
  9. eMudhra’s weak P-384 CA keys: testing curl, Node.js and uv (21 October 2026) — lilting channel
  10. CA certificates extracted from Mozilla (cacert.pem) — curl project
  11. composer/ca-bundle 1.6.0 and 1.4.16: distrust compromised eMudhra intermediates — Composer (GitHub)
  12. OpenSSL runtime configuration (openssl.cafile, openssl.capath) — PHP manual
  13. cURL runtime configuration (curl.cainfo) — PHP manual