DEEP DIVE REPORT

CVE-2026-33634 Trivy 악성코드 취약점과 공급망 보안

SecurityDesk
2026.03.29 조회 52

취약점 개요

CVE-2026-33634는 Aqua Security의 인기 취약점 스캐너인 Trivy를 타겟팅한 치명적인 공급망 보안 취약점입니다. 2026년 3월 19일 발생한 이 사건은 TeamPCP라는 위협 행위자가 훔친 CI/CD 자격증명을 악용하여 공식 Trivy 릴리스와 관련 GitHub Actions에 악성 코드를 심은 사례입니다. 이 취약점은 CVSS 기준 9.4점(Critical)으로 평가되었으며, CISA(미국 사이버보안 및 인프라 보안청)가 2026년 3월 26일 자신의 Known Exploited Vulnerabilities(KEV) 카탈로그에 등록할 정도로 심각성이 큽니다.

영향받는 버전

이 취약점은 단순한 코드 결함이 아닌 공급망 컴프로마이즈(Supply Chain Compromise)입니다. 영향받는 컴포넌트는 다음과 같습니다:

  • Trivy 바이너리 및 표준 릴리스 아티팩트: v0.69.4 (악성 버전, 3월 19일 18:22~21:42 UTC 노출)
  • GitHub Actions - trivy-action: 77개 태그 중 76개가 강제 푸시로 변조됨
  • GitHub Actions - setup-trivy: 7개 태그 전체가 컴프로마이즈됨
  • Docker Hub 이미지: 0.69.4, 0.69.5, 0.69.6, latest 태그 (3월 19~23일 노출)

안전한 버전

  • Trivy: v0.69.3 이하 또는 신뢰할 수 있는 소스에서 빌드
  • trivy-action: v0.35.0 또는 commit SHA 57a97c7
  • setup-trivy: v0.2.6 또는 commit SHA 3fb12ec

기술적 심층 분석: DevSecOps 파이프라인 위협 경로

공격 체인 구조

CVE-2026-33634는 독립적인 사건이 아닌, 2026년 2월 말부터 시작된 더 큰 캠페인의 연속이었습니다. 공격의 핵심은 비원자적 자격증명 회전(Non-atomic Secret Rotation)이었습니다. Trivy 팀이 3월 1일 이전 침해를 인지하고 자격증명을 회전시켰으나, 이 과정이 원자적(atomic)이지 않아 공격자가 여전히 릴리스 및 자동화 평면에 접근할 수 있었습니다.

기술적 실행 경로

  1. 접근 유지: 3월 1일 자격증명 회전 후에도 공격자는 유효한 자격증명 또는 새로운 접근 경로를 유지했습니다.

  2. 악성 커밋 주입: 공격자는 악성 커밋 1885610c을 통해 신뢰할 수 있는 actions/checkout 참조를 위조 커밋 70379aad로 교체했습니다.

  3. 악성 코드 다운로드: 위조된 커밋은 scan.aquasecurtiy.org(티포스쿼팅된 도메인, 정체는 aquasecurity.org)에서 악성 Go 파일을 다운로드했습니다.

  4. 검증 우회: 릴리스 워크플로우가 정상적인 검증을 건너뛰도록 변경되었습니다.

  5. 배포 확장: 악성 아티팩트는 GitHub Container Registry, Amazon ECR Public, Docker Hub, Debian/RPM 패키지, get.trivy.dev를 통해 전파되었습니다.

페이로드 동작

악성 Trivy Action은 정상적인 워크플로우 실행을 유지하면서 백그라운드에서 자격증명을 수집했습니다:

  • 프로세스 메모리 덤프: 러너 프로세스의 /proc/<pid>/mem를 통해 메모리 내 토큰 및 환경 데이터 추출
  • 파일 시스템 스캔: 50개 이상의 경로를 스캔하여 임시 파일, 클라우드 CLI 자격증명, Docker 자격증명, kubeconfig, SSH 자료 등을 탐색
  • 암호화 및 탈취: 수집된 데이터를 AES-256-CBC와 RSA-4096으로 암호화한 후 외부로 전송
  • 폴백 메커니즘: 탈취 실패 시 INPUT_GITHUB_PAT이 설정된 경우 tpcp-docs라는 공개 저장소를 생성하고 아카이브를 릴리스 자산으로 업로드

Docker Hub 확장 공격

Docker의 조사에 따르면, 공격자는 3월 19~23일 사이에 Aqua의 Docker Hub 저장소에 0.69.5, 0.69.6, latest 태그를 추가로 푸시했습니다. 이는 훔친 Docker Hub 자격증명을 사용하여 직접 푸시된 것으로, GitHub 릴리스와 무관하게 레지스트리 레벨에서도 공격이 확장되었음을 보여줍니다.


실무적 대응 전략

즉시 대응 (0~24시간)

  1. 악성 아티팩트 제거

    # 악성 Trivy 버전 확인 및 제거
    docker images | grep aquasec/trivy
    docker rmi aquasec/trivy:0.69.4 aquasec/trivy:0.69.5 aquasec/trivy:0.69.6
    
    # 악성 Docker 다이제스트 확인 (공식 취약점 다이제스트)
    # 0.69.4: sha256:27f446230c60bbf0b70e008db798bd4f33b7826f9f76f756606f5417100beef3
    # 0.69.5: sha256:5aaa1d7cfa9ca4649d6ffad165435c519dc836fa6e21b729a2174ad10b057d2b
    # 0.69.6: sha256:425cd3e1a2846ac73944e891250377d2b03653e6f028833e30fc00abbc6d33
    

  2. GitHub Actions 참조 업데이트

    # ❌ 위험: 뮤터블 태그 사용
    - uses: aquasecurity/trivy-action@0.34.0
    
    # ⚠️ 개선: v 접두사 태그 (구버전은 악성일 수 있음)
    - uses: aquasecurity/trivy-action@v0.35.0
    
    # ✅ 권장: 전체 커밋 SHA 고정
    - uses: aquasecurity/trivy-action@57a97c7f3f5d0b6f0b4b0c5f6f5f4b2a1d3e9abc
    

  3. IOC 차단

  4. 도메인: scan.aquasecurtiy.org
  5. IP: 45.148.10.212
  6. 파일 패턴: tpcp.tar.gz, /tmp/runner_collected_, sysmon.py
  7. 저장소명: tpcp-docs

  8. 감지 쿼리 실행

    # 워크플로우에서 Trivy Action 사용 검색
    rg -n "aquasecurity/(trivy-action|setup-trivy)@" .github/workflows
    
    # 뮤터블 태그 사용 식별 (전체 SHA가 아닌 경우)
    rg -n "aquasecurity/(trivy-action|setup-trivy)@([A-Za-z0-9._-]+)$" .github/workflows \
      | rg -v "@[0-9a-f]{40}$"
    

중기 대응 (1주~1개월)

  1. 자격증명 전면 재발급
  2. 영향받은 워크플로우에 노출된 모든 비밀을 노출된 것으로 간주
  3. GitHub Personal Access Tokens, GITHUB_TOKEN 기반 권한
  4. 클라우드 자격증명(AWS, GCP, Azure)
  5. 레지스트리 로그인 정보(Docker, ECR, GCR)
  6. SSH 키, 배포 키, kubeconfig
  7. 데이터베이스 자격증명

  8. 러너 환경 재구축

  9. GitHub 호스트형 러너: 단일 작업에 노출된 비밀만 재발급
  10. 셀프 호스트형 러너: 호스트 자체가 컴프로마이즈되었을 가능성이 있으므로 재이미징 권장
  11. Docker 소켓이 마운트된 경우: 호스트도 잠재적 컴프로마이즈로 간주

  12. 포렌식 조사

  13. 3월 19~20일 워크플로우 실행 로그 검토
  14. IOC 히트 여부 확인
  15. tpcp-docs 저장소 생성 여부 감사
  16. 악성 아티팩트 다이제스트 사용 내역 조사

장기 대응 (3개월 이상)

  1. 불변 릴리스(Immutable Releases) 강제
  2. GitHub의 불변 릴리스 기능 활성화하여 태그와 자산 게시 후 변경 방지
  3. 태그 보호 규칙으로 강제 푸시 차단

  4. 전체 SHA 고정 정책

  5. 조직 수준에서 GitHub Actions를 전체 커밋 SHA로 고정하도록 정책 강제
  6. GitHub Rulesets를 통해 태그 업데이트 제한

  7. 출처 검증(Provenance Verification) 도입

    # Cosign으로 이미지 서명 검증 예시
    cosign verify \
      --certificate-identity-regexp ".*" \
      --certificate-oidc-issuer-regexp ".*" \
      ghcr.io/aquasecurity/trivy:0.69.3
    
    # Rekor 투명성 로그 검색
    rekor-cli search --artifact ghcr.io/aquasecurity/trivy:0.69.3
    

  8. 비밀 노출 최소화

  9. 긴 수명의 클라우드 자격증명 대신 OpenID Connect(OIDC) 사용
  10. 고권한 워크플로우에 필수 승인자 요구
  11. 최소 권한 원칙 적용

  12. 셀프 호스트 러너 격리

  13. 공개 저장소에서 셀프 호스트 러너 사용 금지
  14. 지속형 상태, Docker 소켓 접근, 내부 네트워크 접근 제한

벤치마킹 사례

SolarWinds (2020)

SolarWinds 공격은 소프트웨어 공급망이 얼마나 취약한지를 전 세계에 알린 사건입니다. 공격자는 Orion 플랫폼의 빌드 시스템에 악성 코드를 주입하여 약 18,000개 조직에 영향을 미쳤습니다.

공통점:
- 빌드 및 릴리스 파이프라인 타겟팅
- 신뢰할 수 있는 소프트웨어 배포 채널 악용
- 장기간 탐지 회피

CVE-2026-33634와의 차이점:
- SolarWinds: 소스 코드 레벨 주입
- Trivy 사건: 릴리스 파이프라인과 태그 변조, 악성 코드는 메인 브랜치에 커밋되지 않음

Codecov (2021)

Codecov 사건은 CI/CD 도구인 Bash Uploader가 컴프로마이즈되어 고객의 CI 환경에서 자격증명이 탈취된 사례입니다.

공통점:
- CI/CD 도구를 타겟팅
- 자격증명 탈취가 주요 목적
- 정상적인 작동처럼 보이면서 백그라운드에서 정보 수집

교훈:
- 보안 도구 자체가 공격 표적이 될 수 있음
- CI/CD 파이프라인 내에서 가장 권한이 높은 컴포넌트부터 보호해야 함


결론

CVE-2026-33634는 단순한 보안 스캐너의 취약점이 아닌, 현대 DevSecOps 파이프라인의 구조적 취약점을 보여주는 케이스 스터디입니다. 뮤터블 태그, 불완전한 자격증명 회전, 출처 검증 부재, 보안 도구에 대한 맹신이 어떻게 결합하여 대규모 자격증명 탈취로 이어지는지를 명확히 보여줍니다.

CISO와 보안 리더는 이 사건을 통해 "우리는 보안 도구를 사용한다"가 아니라 "우리는 신뢰할 수 있는 공급망을 구축한다"로 사고를 전환해야 합니다. 보안 도구는 공격 표적이 될 수 있으며, 가장 권한이 높은 컴포넌트부터 가장 엄격하게 보호해야 합니다.

Trivy 사건의 진정한 교훈은 버전 번호가 아니라 패턴입니다. 공격자는 릴리스 평면 발판, 불완전한 완화 조치 생존, 신뢰할 수 있는 태그 변조, 공식 채널 악성 콘텐츠 주입, 다운스트림 CI 환경에서 비밀 수집이라는 이식 가능한 모델을 사용했습니다. 방어자가 버전 번호만 취하고 패턴을 놓친다면, 다른 프로젝트에 같은 기술이 나타났을 때 준비되지 않을 것입니다.


참고문헌

  1. NVD - CVE-2026-33634
    https://services.nvd.nist.gov/rest/json/cves/2.0?cveId=CVE-2026-33634

  2. GitHub Security Advisory - GHSA-69fq-xp46-6x23
    https://github.com/aquasecurity/trivy/security/advisories/GHSA-69fq-xp46-6x23

  3. GitHub Discussion - Trivy Security Discussion
    https://github.com/aquasecurity/trivy/discussions/10425

  4. CISA Known Exploited Vulnerabilities Catalog
    https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2026-33634

  5. Microsoft Security Blog
    https://www.microsoft.com/en-us/security/blog/2026/03/24/detecting-investigating-defending-against-trivy-supply-chain-compromise/

  6. RoseSecurity - Typosquatting Trivy
    https://rosesecurity.dev/2026/03/20/typosquatting-trivy.html

본 콘텐츠는 AI 기술로 생성된 분석 리포트를 포함하고 있습니다. 내용 중 사실과 다르거나 보완이 필요한 정보를 발견하시면 댓글을 통해 소중한 의견 부탁드립니다. 여러분의 피드백은 더 정확한 보안 정보 공유에 큰 도움이 됩니다.

댓글 (0)

댓글을 작성하려면 로그인이 필요합니다.

로그인

아직 댓글이 없습니다.

첫 번째 댓글을 작성해보세요!

IT 도구 서랍

→ Unix: 2025-01-15T09:30:00
→ 날짜: 1736934600

→ ASCII: ABC
→ 문자: 65 66 67

ASCII 코드표 — 클릭하면 입력란에 추가

DecHex약어설명
DecHex문자
DecHex문자

→ 유니코드: 홍길동
→ 문자: \ud64d\uae38\ub3d9