何が起きたか・対象
AWS SAM CLIのsam build -uで外部プロジェクトをコンテナビルドすると、プロジェクト内のシンボリックリンクをCLIがホスト側で解決し、その参照先をコンテナへ共有する問題がありました。参照先がソース領域内かの検査がなく、通常は共有しないホストの別ファイルまで、コンテナ内から読めるようになりました。
シンボリックリンクは、ファイルの内容ではなく参照先のパスを持ちます。説明用に、プロジェクト内のdataがホスト上の別ディレクトリを指す場合を考えます。CLIがその参照先を解決し、Dockerへコンテナ内のdataとして見せるよう依頼すると、コンテナ内のビルド処理からその内容を読めます。リンクの名前がソース内でも、実体までソース内とは限らないことが問題です。
研究の再現では、プロジェクトのtemplate.yamlでMakefileを使うビルド方法を選び、そのMakefileへ共有先を読む処理を入れています。利用者のsam build -uがそのビルドを起動します。研究環境ではsudoでCLIとDockerを使うため、通常ユーザーに許されないホストファイルも共有され得ます。全てのOS・起動方法で同じ権限になるとは限りません。攻撃者が内容を入手するには、さらにログ・成果物を読めるか外部へ送れる経路が必要です。
識別子はCVE-2025-3047、CVE-2025-3048です。開発者のホストとビルド用コンテナの共有対象の問題で、AWSサービスや別アカウントへ直接侵入できるという報告とは区別します。
報告・修正・公開の時系列
2025-02-04に報告、03-31に二つのCVEが公開され、04-08に研究資料が公開されました。研究の検証環境はAWS SAM CLI 1.132.0とUbuntu 24.04.1です。CVE-2025-3047の開発元資料は1.133.0を修正版に指定しています。 CVE-2025-3048の個別の修正範囲は、ここでは確認できていません。
正常ならどう動くはずだったか
コンテナで外部プロジェクトをビルドする場合は、利用者が共有を認めたソース領域だけをコンテナから読めるようにします。ホスト側のディレクトリやファイルをコンテナへマウントすると、その中のビルド処理にも内容が見えます。
プロジェクト内のリンクdataが、ホスト上のソース領域外を指す場合を考えます。CLIがリンク先を解決すると、検査すべき対象はdataという名前ではなく、その領域外の実体です。Dockerへ実体の共有を依頼すると、コンテナから同じ内容が見えます。ソース内にリンクがあることと、そのリンク先を利用者が共有してよいことを区別します。
技術的な原因
sam build -uはソース内のリンクをホスト上で解決し、解決先がソース領域の内側かを検査せず、そのホストファイルをコンテナへマウントしていました。コンテナのビルド処理から、通常は共有していないホストのファイルが見えるようになります。隔離の内側のコードではなく、ホスト側が共有対象を増やす処理に不備がありました。
攻撃が成立する条件と流れ
攻撃者は、ホストの別ファイルを指すリンクと、コンテナ内でその内容を読むビルド処理をプロジェクトへ含めます。利用者がその外部プロジェクトでsam build -uを実行すると、CLIがリンク先を共有し、ビルド処理が共有されたファイルを読みます。読み取れる範囲は、OS、Dockerの起動方法、ホスト側で使う権限にも依存します。
確認された事実と、想定される影響
研究の再現では、ビルド領域外のホストファイルの内容がコンテナ内のビルド処理から読めることを示しています。秘密を含むファイルも共有される構成なら、その内容をビルド出力や成果物へ含められるおそれがあります。攻撃者が実際に情報を入手するには、さらにそのログ・成果物を読める、またはビルド処理から外部へ送信できる経路が必要です。
成果物のリンクをキャッシュへコピーする派生形もありますが、研究者はそれらを悪用しにくい防御強化の報告として区別しています。主な読取経路と同じ成功条件や被害を一律に当てはめません。
開発元はローカルのコンテナビルド用ワークスペースへの影響とし、AWSサービス、本番環境、別アカウントの問題ではないと説明しています。ホストファイルを読める研究結果と、実際の攻撃者による持ち出しの観測は区別します。
実際の修正・対応方針
CVE-2025-3047は1.133.0で修正と案内されています。従来のホスト側リンク解決を許す動作には、明示的な--mount-symlinksが必要になりました。各変更行とCVE-2025-3048の修正範囲は、ここでは直接確認していません。
利用者・運用者が確認すること
修正済みのサポート版を使い、リンク共有を許可する必要があるか確認します。未信頼ビルドは秘密や不要なホスト共有のない使い捨て環境で行うと、ビルド処理が読める対象を小さくできます。
開発者への教訓(教材としての考察)
コンテナの内側が隔離されていても、ホスト側が秘密ファイルを共有すれば読めてしまいます。隔離の評価では、実行するコードに加え、リンク解決後に何を渡すかを確認します。
出典・確認範囲
- [1] Path traversal in AWS SAM CLIGitHub Security Lab / 確認日 2026-10-29
- [2] Path Traversal in AWS SAM CLI allows file copy to build containerAWS / 確認日 2026-10-29
CVE-2025-3048の個別アドバイザリの取得と、各修正差分の直接確認・実悪用の観測は未確認です。