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 を再起動してください。ファイアウォールは代わりになりません。

対策の手順

PHP セキュリティ解説 · 防御向け

PHP の SSRF とは?直し方

URL プレビュー、Webhook、画像の取り込み、PDF 生成などの機能はサーバーに URL を取得させます。その URL を訪問者が操作できれば、自分では届かない場所へサーバーを向けられます。

最終更新

どんな問題か

サーバーはたいてい信頼されたネットワークの内側にあります。そこからのリクエストはデータベース、管理画面、ほかのマイクロサービス、認証情報を返すクラウドのインスタンスメタデータに届きます。SSRF は URL を取得する機能を内部ネットワークへのプロキシに変えてしまいます。MITRE では CWE-918 に分類され、OWASP には専用の対策チートシートがあります。

見つけ方

直し方

読み取り専用の確認と安全な書き方

# Find server-side fetches that may take a user-supplied URL (read-only)
grep -rnE "(curl_setopt.*CURLOPT_URL|file_get_contents\s*\(\s*\$|fopen\s*\(\s*\$)" --include=*.php . | grep -v /vendor/

// Allowlist hosts and schemes before fetching
$u = parse_url($url);
$allowed = ['api.example.com'];
if (($u['scheme'] ?? '') !== 'https' || !in_array($u['host'] ?? '', $allowed, true)) {
    throw new RuntimeException('URL not allowed');
}
curl_setopt($ch, CURLOPT_PROTOCOLS, CURLPROTO_HTTPS);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);

127.0.0.1 をブロックすれば十分ですか?

いいえ。別表記の IP、IPv6、プライベートアドレスに解決されるドメイン、リダイレクトで単純なブロックリストは回避されます。OWASP は許可リストを勧めています。

WAF で SSRF は防げますか?

一部のパターンは止められますが、どの内部ホストが重要かは WAF にはわかりません。コードで直してください。

ほかの PHP の脆弱性の種類

出典

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

  1. CWE-918: Server-Side Request Forgery (SSRF) — MITRE CWE
  2. Server-Side Request Forgery Prevention Cheat Sheet — OWASP Cheat Sheet Series