サイバーセキュリティ研究者は、漏洩したLaravelのAPP_KEYが数百のアプリケーションでリモートコード実行を可能にする重大なセキュリティ問題を発見しました。
「LaravelのAPP_KEYは機密データの暗号化に不可欠ですが、しばしば(例:GitHub上で)公開されてしまいます」とGitGuardianは述べています。「攻撃者がこのキーにアクセスすると、逆シリアル化の脆弱性を悪用してサーバー上で任意のコードを実行できるため、データやインフラが危険に晒されます。」
同社は、Synacktivとの協力のもと、2018年から2025年5月30日までにGitHubから26万件以上のAPP_KEYを抽出し、その過程で600以上の脆弱なLaravelアプリケーションを特定したと述べています。GitGuardianによれば、GitHub上で1万件以上のユニークなAPP_KEYを観測し、そのうち400件が有効であることを確認しました。
APP_KEYは、Laravelのインストール時に生成されるランダムな32バイトの暗号鍵です。アプリケーションの.envファイルに保存され、データの暗号化・復号、セキュアなランダム文字列の生成、データの署名と検証、ユニークな認証トークンの作成などに使用される、極めて重要なセキュリティ要素です。
GitGuardianは、Laravelの現行のdecrypt()関数の実装が、復号化されたデータを自動的に逆シリアル化することで、リモートコード実行の可能性を開くセキュリティ問題を引き起こしていると指摘しています。
「特にLaravelアプリケーションでは、攻撃者がAPP_KEYを取得し、細工されたペイロードでdecrypt()関数を呼び出せる場合、LaravelのWebサーバー上でリモートコード実行が可能になります」とセキュリティ研究者のGuillaume Valadon氏は述べています。
「この脆弱性は、CVE-2018-15133で最初に文書化されており、Laravel 5.6.30以前のバージョンに影響を与えていました。しかし、この攻撃ベクトルは、開発者がSESSION_DRIVER=cookie設定でクッキー内のセッションシリアライズを明示的に構成した場合、新しいLaravelバージョンでも持続します。これはCVE-2024-55556で実証されています。」
なお、CVE-2018-15133は、AndroxGh0stマルウェアに関連する脅威アクターによって、誤って設定された.envファイルを持つLaravelアプリケーションをインターネット上でスキャンした後、実際に悪用されています。
さらに分析したところ、APP_KEYの漏洩の63%が.envファイル(またはその派生ファイル)に由来しており、これらにはクラウドストレージトークン、データベース認証情報、ECプラットフォームやカスタマーサポートツール、AIサービスに関連するシークレットなど、他の貴重な情報も含まれていることが判明しました。
さらに重要なのは、約28,000件のAPP_KEYとAPP_URLのペアが同時にGitHub上で漏洩していたことです。そのうち約10%が有効であり、120のアプリケーションが簡単なリモートコード実行攻撃に対して脆弱であることが判明しました。
APP_URLの設定はアプリケーションのベースURLを指定するため、APP_URLとAPP_KEYの両方が漏洩すると、脅威アクターがアプリに直接アクセスし、セッションクッキーを取得し、漏洩したキーで復号を試みる強力な攻撃ベクトルとなります。
単にリポジトリからシークレットを削除するだけでは不十分です—特に、すでにサードパーティツールによってクローンやキャッシュされている場合はなおさらです。開発者に必要なのは、CIログ、イメージビルド、コンテナレイヤー全体で今後機密文字列の再出現を検知する監視体制と、それを支える明確なローテーション手順です。
「開発者は、漏洩したAPP_KEYを単にリポジトリから削除するだけで済ませてはいけません」とGitGuardianは述べています。「正しい対応は、漏洩したAPP_KEYを直ちにローテーションし、新しいキーで全ての本番システムを更新し、今後の漏洩を防ぐために継続的なシークレット監視を実施することです。」
この種のインシデントは、phpggcのようなツールを使って攻撃者がオブジェクトロード時に意図しない挙動を引き起こすガジェットチェーンを作成できる、より広範なPHP逆シリアル化脆弱性の一例でもあります。Laravel環境でキーが漏洩している場合、こうしたガジェットを使うことで、アプリのロジックやルートを突破せずとも完全なRCEが可能となります。
この情報公開は、GitGuardianがDockerHubレジストリで公開されているDockerイメージから「驚異的な10万件の有効なシークレット」を発見したと明らかにした後に行われました。これにはAmazon Web Services(AWS)、Google Cloud、GitHubトークンに関連するシークレットも含まれています。
また、Binarlyによる8万件以上のユニークなDockerイメージ(54組織、3,539リポジトリにまたがる)を対象とした新たな分析でも、汎用認証情報、JSON Webトークン、HTTP Basic認証ヘッダー、Google Cloud APIキー、AWSアクセス・トークン、CircleCI APIトークンなどを含む644件のユニークなシークレットが発見されました。
「シークレットはソースコード、設定ファイル、さらには大型バイナリファイルなど、さまざまなファイルタイプに現れます。これらは多くの既存スキャナーが見落としがちな領域です」と同社は述べています。「さらに、コンテナイメージ内にまるごとGitリポジトリが含まれている場合、深刻かつ見落とされがちなセキュリティリスクとなります。」
しかし、これだけではありません。エンタープライズ主導のAIアプリケーションでエージェントワークフローを実現するためにModel Context Protocol(MCP)が急速に採用されていることにより、まったく新しい攻撃ベクトルが生まれています。その中でも特に懸念されるのは、MCPサーバーからGitHubリポジトリに公開されたシークレットの漏洩です。
具体的には、GitGuardianはMCPサーバーのうち202件が少なくとも1つのシークレットを漏洩しており、これは全リポジトリの5.2%に相当すると発見しました。この数字は同社が述べている「全公開リポジトリで観測された4.6%の発生率よりやや高い」ものであり、MCPサーバーが「新たなシークレット漏洩源」となっていることを示しています。
本調査はLaravelに焦点を当てていますが、根本的な問題—公開リポジトリ内の無防備なシークレット—は他のスタックにも当てはまります。組織は集中型のシークレットスキャン、Laravel特有のハードニングガイド、.envファイルやコンテナシークレットの管理におけるセキュア・バイ・デザインのパターンの導入を検討すべきです。
翻訳元: https://thehackernews.com/2025/07/over-600-laravel-apps-exposed-to-remote.html