본문 바로가기

POST/Insight

트리비(Trivy) 공급망 공격 사태: 보안 도구가 해킹의 문이 됐다

Image generated by Gemini

 

보안을 위해 설치한 도구가 오히려 해커의 침입 경로가 된다면 어떨까요? 상상만 해도 끔찍하지만, 이 일이 실제로 벌어졌습니다. 전 세계 개발자들 사이에서 꽤 충격적인 사건으로 회자되고 있는 트리비(Trivy) 공급망 공격 이야기입니다.

 

사건의 배경

트리비는 컨테이너 이미지나 파일 시스템의 취약점을 스캔해주는 오픈소스 보안 도구입니다. 많은 기업들이 CI/CD 파이프라인에 당연하다는 듯 붙여 쓰는, 이름 그대로 "보안 지킴이" 역할을 하는 녀석입니다. 그런데 이 녀석이 공격의 통로가 됐습니다.

 

아쿠아 시큐리티(Aqua Security)의 분석에 따르면, 공격자들은 trivy-action의 기존 버전 태그를 몰래 바꿔치기했습니다. 새로운 버전을 배포한 게 아니라, 이미 수많은 기업의 파이프라인에서 참조하고 있던 태그를 직접 덮어쓴 겁니다. 그 결과, 아무것도 모르는 자동화 시스템들이 평소처럼 빌드를 돌리다가 스스로 악성 코드를 내려받고 실행하게 됐습니다.

 

어떻게 벌어진 일인가

공격 타임라인을 보면 이 사건이 얼마나 치밀하게 진행됐는지 알 수 있습니다.

  • 2026년 2월 말: 트리비 GitHub 환경의 설정 오류를 파고들어 권한 토큰을 탈취
  • 3월 1일: 침입 사실을 감지하고 자격 증명 순환 작업을 시작했지만, 이 과정이 완벽하지 않아 공격자는 접근권을 계속 유지
  • 3월 19일: 무려 76개 버전 태그에 악성 코드를 강제 푸시(force-push)
  • 3월 22일: 추가 저장소 변조 및 자동화 계정 악용까지 확인

초기 대응에서 새로 발급한 비밀 키까지 탈취당하면서 공격은 2주 넘게 이어졌습니다. 불을 끄려다 기름을 부은 셈이 된 상황입니다.

 

핵심 수법: 태그 포이즈닝

이번 공격의 기술적 핵심은 "태그 포이즈닝(Tag Poisoning)"입니다. 많은 CI/CD 파이프라인이 코드의 실제 내용보다 버전 레이블을 더 신뢰한다는 점을 정확히 노린 수법입니다.

 

공격자들은 단순히 코드를 심은 게 아니라 들키지 않으려는 노력도 상당했습니다.

  • 원본 커밋의 작성자 이름, 이메일, 타임스탬프를 그대로 베껴 정상 커밋처럼 보이게 했습니다.
  • 변경 파일은 entrypoint.sh 하나로 최소화해 diff 검토 시 눈에 띄지 않도록 했습니다.
  • 한 가지 실수라면 GPG 서명이 빠진 것인데, 이걸 눈치채는 팀은 많지 않았을 겁니다.

여기에 aqua-bot이라는 해킹된 자동화 계정을 활용해, 트리비의 공식 릴리스 경로처럼 보이게 악성 코드를 퍼뜨렸습니다.

 

무엇을 훔쳐갔나

악성 페이로드는 50개 이상의 파일 시스템 경로를 스캔해 다음 정보들을 체계적으로 긁어갔습니다.

  • 클라우드 자격 증명: AWS Access Key, GCP, Azure 서비스 주체
  • 인프라 접근 정보: Kubernetes 인증 토큰, SSH 키, Docker 설정
  • 개발 환경 정보: Git 자격 증명, 환경 변수 파일, 셸 히스토리
  • 암호화폐 지갑: 비트코인, 이더리움 등

데이터 외부 전송이 막힌 경우에 대비해, 피해자의 GitHub 계정에 tpcp-docs라는 공개 저장소를 생성해 탈취 데이터를 업로드하는 백업 경로까지 마련해뒀습니다. 상당히 꼼꼼한 공격입니다.

 

트리비만의 문제가 아니다

같은 맥락에서 AI 에이전트 도구인 오픈클로(OpenClaw) 저장소에서도 트로이목마 유포 사례가 확인됐습니다. 더 걱정스러운 건 CanisterWorm입니다. 탈취한 NPM 발행 토큰을 이용해 NPM 생태계 전반으로 악성 코드를 전파하는 방식인데, 한 조직의 침해가 생태계 전체로 번질 수 있다는 점에서 공급망 공격의 위험성을 잘 보여줍니다.

 

지금 당장 해야 할 것들

아래 내용은 이미 피해를 입었을 수 있는 팀이라면 우선순위를 두고 확인해야 할 항목들입니다.

 

1단계: 버전 즉시 업데이트

컴포넌트 안전한 버전 사용 금지 버전
Trivy Binary v0.69.2, v0.69.3 v0.69.4
trivy-action v0.35.0 이상 v0.34.2 이하
setup-trivy v0.2.6 이상 -
Docker 태그 - 0.69.5, 0.69.6

 

2단계: 비밀 정보 전면 교체

 

침해된 버전이 한 번이라도 실행됐다면 아래 항목들이 유출됐을 가능성을 전제하고 움직여야 합니다. NPM Publish 토큰은 이미 악용이 확인됐으므로 최우선으로 처리하세요.

  • 클라우드 자격 증명 (AWS, GCP, Azure)
  • SSH 키, Kubernetes 토큰, VPN 설정 파일
  • 데이터베이스 접속 정보 (.pgpass, .my.cnf 등)
  • TLS/SSL 개인키
  • 암호화폐 지갑 키

3단계: 침해 흔적 확인

  • 2026년 3월 19~20일 사이 워크플로 실행 로그를 꼼꼼히 살펴보세요.
  • GitHub 조직 내에 tpcp-docs라는 저장소가 생성되어 있다면 침해 징후입니다.
  • 개발자 PC에서 ~/.config/systemd/user/sysmon.py 파일 존재 여부를 확인하세요.
  • aquasecurity/kics-github-action을 함께 사용 중이었다면 해당 부분도 점검 대상입니다.

4단계: 재발 방지

 

태그는 언제든 바뀔 수 있다는 사실을 이번 사건이 명확히 보여줬습니다. GitHub Actions 설정에서 버전 태그 대신 전체 커밋 SHA 해시를 사용하도록 바꾸는 것이 가장 확실한 방어책입니다.

# 취약한 방식
uses: aquasecurity/trivy-action@v0.34.2

# 권장 방식
uses: aquasecurity/trivy-action@57a97c7e7821a57...

 

마치며

이번 사태가 불편한 이유는 단순히 도구 하나가 뚫렸기 때문이 아닙니다. 우리가 "보안을 위해" 신뢰하고 사용하던 바로 그 도구가 공격의 매개체가 됐다는 점입니다. 도구를 쓴다고 안전해지는 게 아니라, 그 도구가 어디서 왔고 지금 어떻게 동작하는지까지 들여다봐야 한다는 교훈이 남습니다.

 

지금 당장 여러분의 GitHub Actions 설정과 클라우드 자격 증명 상태를 한 번씩 점검해보시길 권합니다. 

 

[OSC Korea 긴급 지원 프로모션]

저희 OSC Korea는 이번 사태로 혼란을 겪고 계신 고객분들을 지원하기 위해, 검증을 마친 '안전한 Chainguard Trivy 이미지'를 12개월간 무료로 제공해 드립니다.

  • 혜택: 12개월간 안전한 Trivy 이미지 무료 제공
  • 기간: 2026년 4월 30일까지 신청 가능
  • 신청 방법: 신청서 작성

보안 위협으로부터 귀사의 자산을 안전하게 보호할 수 있도록, 이번 프로모션에 많은 관심과 신청 부탁드립니다. 추가적인 기술 지원이나 점검 도움이 필요하시면 언제든 연락해 주시기 바랍니다.

 

 

원문 출처: 

애플경제 보안 도구 ‘트리비’ 악용한 CI/CD 공격 확산

“보안 도구에 오픈클로까지”… 개발자 노린 공급망 공격 잇따라

Update: Ongoing Investigation and Continued Remediation

 

 

 

참고 링크:

[리포트] 컨테이너 보안 ROI 233%? 체인가드(Chainguard)가 증명한 숫자의 힘

패치 지옥 탈출법? 제로 CVE 컨테이너 전략

[AIS 2025] 오에스씨코리아 인재홍 상무, “제로 CVE 시대”를 여는 새로운 보안 접근법 제시