
보안을 위해 설치한 도구가 오히려 해커의 침입 경로가 된다면 어떨까요? 상상만 해도 끔찍하지만, 이 일이 실제로 벌어졌습니다. 전 세계 개발자들 사이에서 꽤 충격적인 사건으로 회자되고 있는 트리비(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
참고 링크: