GitHub 5,561개 저장소 덮친 Megalodon, CI/CD가 공격 표면으로
Original: Over 5,500 GitHub Repositories Infected in ‘Megalodon’ Supply Chain Attack View original →
공급망 공격의 표적이 패키지 설치 스크립트에서 CI/CD workflow로 더 깊숙이 이동했다. Megalodon으로 불리는 캠페인은 5,561개 GitHub 저장소에 악성 GitHub Actions workflow를 심어, 빌드 환경에 들어 있는 credential과 secret을 훔치려 한 대규모 자동화 공격이다.
SecurityWeek 보도는 SafeDep 분석을 인용해, 공격자가 2026년 5월 18일 약 6시간 동안 5,718개 악성 commit을 밀어 넣었다고 전했다. 감염된 workflow는 push와 pull request에서 동작하도록 추가되거나, 특정 trigger를 가진 기존 workflow를 바꾸는 방식으로 dormant backdoor를 만들었다.
핵심은 훔치려 한 데이터의 폭이다. 보도에 따르면 payload는 CI environment variables, AWS credentials, GCP access tokens, Azure credentials, SSH private keys, Docker·Kubernetes configuration, API keys, database connection strings, GitHub Actions tokens, GitLab CI/CD tokens 등을 노렸다. 빌드 runner는 배포 권한과 cloud 접근권을 함께 들고 있는 경우가 많아, 애플리케이션 서버보다 더 넓은 권한을 가진 진입점이 될 수 있다.
이번 캠페인은 Tiledesk package의 악성 버전이 발견되면서 드러났다. SecurityWeek는 같은 npm 계정이 clean 2.18.5와 compromised versions를 모두 배포했지만, 공격자가 npm 계정을 직접 건드린 것이 아니라 GitHub repository를 오염시킨 뒤 maintainer가 poisoned source에서 package를 publish한 구조였다고 설명했다.
대응의 초점도 바뀐다. dependency lockfile만 보는 검토로는 부족하다. CODEOWNERS로 workflow file 변경을 강제 review하고, GitHub Actions token 권한을 줄이며, OIDC cloud federation의 token request log를 확인해야 한다. 특히 5월 18일 build-bot, auto-ci, ci-bot, pipeline-bot류 author로 들어온 workflow 변경은 별도 감사 대상이다.
Megalodon은 개발 인프라가 소프트웨어 공급망의 중심이라는 사실을 다시 확인시켰다. 코드 자체가 깨끗해도, 그 코드를 빌드하고 배포하는 자동화가 오염되면 downstream package와 cloud account가 동시에 위험해진다.
Related Articles
해커 그룹 TeamPCP가 VS Code 마켓플레이스에 올린 독성 Nx Console 확장(게시 11분 만에 삭제)을 통해 GitHub 직원 PC를 침해하고 내부 저장소 약 3,800개를 탈취했다고 GitHub이 5월 20일 확인했다. 1Password·Anthropic Claude Code·AWS 자격증명이 유출됐으며, 공격자는 5만 달러에 데이터를 판매 시도 중이다.
Perplexity가 macOS·Linux 개발자 머신을 읽기 전용으로 점검하는 Bumblebee를 오픈소스로 공개했다. npm, PyPI, Go modules, MCP 설정, VS Code 계열 확장, 브라우저 확장까지 한 번에 보는 공급망 대응 도구다.
npm, PyPI, Crates.io에 걸친 34개 악성 패키지가 지갑 파일, SSH 키, 클라우드 토큰을 노렸다. 더 큰 쟁점은 .cursorrules와 CLAUDE.md까지 건드려 AI 코딩 도구가 공격자의 지시를 읽게 만들려 했다는 점이다.
Comments (0)
No comments yet. Be the first to comment!