
# 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
이 저장소에는 영상에서 사용된 샘플 웹 앱과 Claude Code 프롬프트가 포함되어 있으며, 다음을 시연합니다:
/var/run/docker.sock을 컨테이너에 마운트하면 해당 컨테이너가 호스트에 대한 루트 수준 접근 권한을 얻게 되는 이유docker save + 읽기 전용 tar 바인드 마운트 사용my-calc-app/Next.js/React 계산기 앱으로, 멀티 스테이지 프로덕션 Dockerfile(node:20-alpine, 비루트 사용자)을 포함합니다. 영상에서 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과 같은 공급망 공격에 대비하려면 태그 대신 SHA256 다이제스트로 Trivy 이미지를 고정하세요.