Skip to content
tutorials

PHPの20年来の秘密がついに明らかに

PHPの静かなバグが20年以上にわたって機密情報を漏洩させており、HTTPSからHTTPへのリダイレクト時でさえ発生していました。公式の修正がついにリリースされましたが、重大な欠陥により、カスタムAPIキーが依然として露出する可能性があります。

Marcus Lee
PHPの20年来の秘密がついに明らかに

20年続いたリダイレクトの罠

20年間、PHPの微妙ながら重大なセキュリティ上の欠陥が、数え切れないほどのアプリケーションを静かに侵害してきました。2003年以来、URLコンテンツを取得するために広く使用されている file_get_contents 関数は、HTTPリダイレクトを無条件に自動追跡していました。この一見無害な機能が深刻な脆弱性を生み出し、意図せず機密性の高いユーザーデータを露出させていました。

スクリプトが file_get_contents を使用してAPIにアクセスし、Authorizationヘッダー(ベアラートークンやその他の資格情報を含む)を含めた場合、PHPはこのヘッダーをリダイレクト先として指定されたあらゆる新しいドメインに盲目的に転送していました。システムはリダイレクト先が信頼できると想定し、リダイレクト先が全く別のサーバーであっても認証情報を送信し続けていました。

最も危険なシナリオは、HTTPSからHTTPへのダウングレードを伴うものでした。最初のセキュアなリクエストが暗号化されていないHTTPエンドポイントにリダイレクトされた場合でも、PHPは機密トークンを送信していました。これは、本来TLSで保護されていた資格情報が、完全に暗号化されないままネットワーク上を移動することを意味し、悪意のある攻撃者によって容易に傍受される状態でした。この静かな転送メカニズムは、数多くのアプリケーションを危険にさらしていました。

パッチはリリースされたが、完璧ではない

根本的な問題は、リダイレクト中にPHPが機密データを静かに転送していたことでした。幸いなことに、新しいパッチがこの数十年来の問題に対処し、重要なセキュリティチェックを導入しました。現在では、リダイレクトによってスキーム(HTTPからHTTPSなど)、ホスト、またはポートが変更された場合、PHPはインテリジェントに Authorization ヘッダーと Cookie ヘッダーを削除します。この重要な介入により、機密情報が意図しない、あるいは悪意のある可能性のある新しいサーバーへ誤って送信されることを防ぎます。

この重要なセキュリティアップデートの恩恵を受けるには、開発者は速やかにPHPインストールを更新する必要があります。この修正は、PHPバージョン 8.2から8.5 の最新パッチリリースで利用可能です。更新を行うことで、この特定の資格情報漏洩から積極的に保護するバージョンをサーバーで実行でき、長年存在していた重大なセキュリティギャップを埋めることができます。

重要な点として、このパッチですべての資格情報漏洩シナリオが解決されるわけではありません。公式の修正は、広く認識されている標準の Authorization ヘッダーと Cookie ヘッダーにのみ適用されます。X-API-Key やその他の独自のトークンなど、使用している可能性のあるカスタムヘッダーは、依然として同じリダイレクトの罠に対して脆弱なままです。これらのカスタム資格情報は引き続き新しいサーバーへ自動的に転送されるため、慎重な手動対応が必要です。

なぜ Guzzle は Laravel を救ったのか(そして自分自身を守る方法)

Laravel の HTTP クライアントや基盤となる Guzzle ライブラリを使用している多くの開発者は、この20年前からの脆弱性からすでに保護されていました。堅牢な HTTP クライアントである Guzzle は、セキュリティ第一の考え方でリダイレクトを管理しています。異なるスキーム、ホスト、またはポートへリダイレクトする際、Authorization や Cookie のような機密ヘッダーを盲目的に転送することを明示的に回避しており、PHPのネイティブな file_get_contents よりもはるかに安全なアプローチを提供しています。

PHPの新しいパッチ(バージョン8.2から8.5で利用可能)は Authorization ヘッダーと Cookie ヘッダーに対処していますが、すべてを網羅しているわけではありません。X-API-Key のように送信する カスタムヘッダー は、リダイレクト中に引き続き転送され、機密情報が漏洩する可能性があります。これらを真に保護するには、file_get_contents の follow_location コンテキストオプションを false に設定し、PHPの自動リダイレクトを無効にする必要があります。

独自の安全なリダイレクトロジックを実装するには、慎重な手順が必要です。HTTPレスポンスの30xステータスコードを手動で検査してください。リダイレクトが発生した場合は、Locationヘッダーを抽出して新しいURLを取得します。重要な点として、新しいリクエストを開始する前に、この新しいURLのドメインを信頼できるリストと照らし合わせて検証してください。この新しいリクエストでは、機密性の高いカスタムヘッダーを明示的に除外する必要があります。これにより、認証情報が意図しない宛先に送信されることを防ぎます。関連する修正の詳細については、CVE-2026-91766: PHP had the redirect credential leak curl fixed in 2018を参照してください。

この記事が気に入ったら、毎朝同じようなものをメールで受け取れます。

1日1通 · 2クリックで解除 · サードパーティのトラッキングなし

PHPのセキュリティにおける新たな章

PHPにおけるこのリダイレクトバグが20年間も存続していた事実は、成熟した言語を維持することの複雑さについて、厳しい教訓を与えています。長年深く組み込まれてきたfile_get_contentsのようなコア機能であっても、言語の進化の中で見過ごされてきた微妙な脆弱性が潜んでいる可能性があります。2003年からの問題を今になって発見し修正することは、広大で長期間運用されているコードベース全体でセキュリティを確保することの計り知れない難しさを示しています。

「PHPは死んだ」という絶え間ない言説にもかかわらず、バージョン8.2から8.5に対するこの重要な修正は、PHPが活発に開発され続けていることを強調しています。Modern PHP、特にLaravelのような堅牢なフレームワークは、一貫して高品質なアプリケーションを提供しており、その永続的な関連性を証明しています。Guzzleのようなライブラリがデフォルトでリダイレクトを安全に処理するなど、強力なエコシステムには組み込みの保護機能が備わっていることがよくあります。

最終的に、PHPのコミュニティは、このパッチを通じて言語の近代化とセキュリティ強化に対する揺るぎないコミットメントを証明しました。20年にわたるレガシーな脆弱性に対処することは、信頼を強化し、プロアクティブなセキュリティ改善を示すものです。この献身的な取り組みにより、PHPはWeb開発において強力で関連性の高い選択肢であり続け、常に新しいセキュリティ環境に適応し、将来に向けたより強固な基盤を構築しています。

よくある質問

PHPのAuthorizationヘッダー漏洩バグとは何ですか?

20年以上にわたり、file_get_contentsのようなPHP関数は、HTTPリダイレクトを自動的に追跡し、Authorizationのような機密ヘッダーを新しい宛先に転送していました。これは、リダイレクト先が別のサーバーである場合や、安全なHTTPSから安全でないHTTPへのリダイレクトであっても発生する可能性がありました。

どのPHPバージョンに修正が含まれていますか?

このパッチは、PHP 8.2、8.3、8.4、および8.5の最新リリースで利用可能です。保護されるためには、これらのシリーズ内の最新パッチバージョンに更新する必要があります。

新しいPHPパッチはすべてのヘッダー漏洩を修正しますか?

いいえ。公式の修正は、ドメイン間リダイレクト時に標準のAuthorizationおよびCookieヘッダーのみを削除します。X-Api-Keyなどのカスタムヘッダーは削除されず、引き続き漏洩します。

LaravelはこのPHPバグの影響を受けましたか?

いいえ。LaravelのデフォルトのHTTPクライアントはGuzzleに基づいて構築されており、Guzzleは独自により安全なリダイレクト処理ロジックを実装しています。Guzzleは機密ヘッダーを異なるホストに転送しないため、Laravelアプリケーションはこの特定の問題に対して脆弱ではありませんでした。

Found this useful? Share it.

For builders

Want Stork to write one of these about your product?

Send us a URL. We use the product, form a view, and publish what we actually think — in 8 languages, labeled Sponsored, with no copy approval on your side. That last part is what makes it worth quoting.

See how it works$500 · AI tools & software only

ビルダーの方へ

このページは、他社のツールのために働いています。

AIエージェントが読み、購入検討層がたどり着きます。8言語とMCP経由で答えます。あなたのツールにも同じページを — 24時間以内に公開。