
YouTube動画「Stop Mounting docker.sock — Run Trivy Without Giving Away Root Access — (inspired by CVE-2026-33634)」の付属ソース
動画の付属リポジトリ: Stop Mounting docker.sock — Run Trivy Without Giving Away Root Access — (inspired by CVE-2026-33634)
https://www.youtube.com/watch?v=xLTYzfPY3xI
このリポジトリには、動画で使用したサンプルWebアプリとClaude Codeプロンプトが含まれており、以下を実演します:
/var/run/docker.sock をコンテナにマウントすると、そのコンテナにホストへのルートレベルのアクセス権が与えられる理由docker save + 読み取り専用のtarバインドマウントを使用する方法my-calc-app/Next.js/React製の電卓アプリで、マルチステージの本番用Dockerfile(node:20-alpine、非rootユーザー)を備えています。これは動画でTrivyによってスキャンされるアプリです。
ビルドと実行:
cd my-calc-app
docker build -t my-calc-app:prod .
docker run -p 3000:3000 my-calc-app:prod
アプリは http://localhost:3000 で利用できます。
注: ファイル public/secret.txt にはダミーのRSA秘密鍵が含まれています。これは意図的なものです — 動画の最初のスキャンでTrivyのシークレットスキャナーがこれを検出し、Trivyのシークレット検出機能を実演できるようにするために存在します。実際の鍵ではありません。
prompts/trivy-report-for-prod-docker-prompt.md動画でTrivyのJSONスキャン出力を分析するために使用したClaude Codeプロンプトです。脆弱性を場所(アプリの依存関係 vs. OSパッケージ vs. npm/yarn内部)ごとに分類し、リリース可否の判定を生成します。
自分のイメージで使用するには:
# 1. イメージをtarファイルとしてエクスポート
docker save my-calc-app:prod -o my-calc-app-prod.tar
# 2. tarに対してTrivyを実行(docker.sockは不要)
docker run --rm \
-v trivy-cache:/root/.cache/ \
-v ./my-calc-app-prod.tar:/image.tar:ro \
aquasec/trivy:latest image --input /image.tar -f json > report.json
# 3. Claude Codeにレポートの分析を依頼
claude -p "$(cat prompts/trivy-report-for-prod-docker-prompt.md) report.json"
以下の代わりに:
# Docker API経由でコンテナにホストへの完全なルートアクセス権を与える
docker run -v /var/run/docker.sock:/var/run/docker.sock aquasec/trivy image my-app:latest
次のようにします:
# 1. イメージをtarファイルに保存
docker save my-calc-app:prod -o my-calc-app-prod.tar
# 2. tarファイルのみをバインドマウント(読み取り専用)、ソケットアクセスなし
docker run --rm \
-v trivy-cache:/root/.cache/ \
-v ./my-calc-app-prod.tar:/image.tar:ro \
aquasec/trivy@sha256:<pin-to-digest> image --input /image.tar -f json > report.json
CVE-2026-33634のようなサプライチェーン攻撃に耐えるため、TrivyイメージはタグではなくSHA256ダイジェストで固定してください。