Trivy GitHub Actions 공격, CI/CD 파이프라인을 노리다!
Trivy GitHub Actions의 공급망 공격으로 인해 CI/CD 파이프라인의 보안 취약점(Security Vulnerability)이 노출됨
공격자는 GitHub Actions 버전 태그(Version Tag)를 변조하여 악성 코드를 배포, 기밀 정보 탈취 시도
GitHub Actions 런너(Runner)의 메모리 덤프(Memory Dump) 및 파일 시스템을 통해 AWS, GCP, Azure 등 클라우드 자격 증명 탈취
GitHub Actions 사용 시, 커밋 SHA(Commit SHA)를 사용하여 액션(Action) 고정(Pinning)하는 것이 유일한 해결책으로 제시됨
GitHub Actions 태그 변조를 통한 공격
공격자는 Trivy GitHub Actions의 기존 버전 태그를 변조하여 악성 코드를 삽입했다. 특히, 75개의 기존 태그를 force-push하여, 해당 태그를 사용하는 모든 CI/CD 파이프라인이 악성 코드를 실행하도록 유도했다. 이러한 공격은 GitHub Actions의 태그 시스템 취약점을 악용한 것으로, 기존 릴리스 페이지의 정보는 정상적으로 보이지만, 실제 실행되는 코드는 공격자가 조작한 것이다. 이는 공급망 공격의 심각성을 보여준다.
악성 페이로드(Payload) 분석
악성 페이로드는 GitHub Actions 런너(Runner) 환경에서 실행되며, 3단계에 걸쳐 작동한다. 첫 번째 단계는 런너 프로세스 메모리 덤프를 통해 환경 변수(Environment Variables)와 SSH 키(SSH Keys)를 수집한다. 두 번째 단계에서는 수집된 데이터를 암호화하고, 마지막 단계에서는 공격자가 제어하는 도메인으로 데이터를 전송한다. 특히, GitHub-hosted runner에서는 sudo 권한 없이 메모리 접근이 가능하여, 더 많은 정보를 탈취할 수 있다.
탈취된 정보 및 공격 대상
공격의 주요 목표는 CI/CD 환경에서 사용되는 자격 증명(Credentials) 탈취이다. 구체적으로, AWS, GCP, Azure 클라우드 자격 증명, Kubernetes 서비스 계정 토큰(Kubernetes Service Account Tokens), SSH 키, 데이터베이스 접속 정보 등이 대상이 된다. 또한, 공격자는 피해자의 GitHub 계정을 활용하여 탈취한 정보를 저장하고, 추가적인 공격을 시도할 수 있다. 이는 데이터 격리 아키텍처(Data Isolation Architecture)의 중요성을 강조한다.
대응 방안 및 예방 전략
가장 안전한 대응책은 Trivy GitHub Actions를 사용할 때, 버전 태그 대신 커밋 SHA(Commit SHA)를 사용하여 액션을 고정하는 것이다. 또한, 공격에 노출된 CI/CD 파이프라인은 즉시 점검하고, 관련 자격 증명을 교체(Rotation)해야 한다. GitHub Actions 로그를 검토하여, 의심스러운 활동이 있는지 확인하는 것도 중요하다. 커뮤니티에서는 데이터 미저장 정책(Zero-Retention Policy)을 통해 피해를 최소화해야 한다는 의견이 제시되었다.