"wfx-loot"로 알려진 대규모 공격 캠페인이 GitHub 플랫폼을 겨냥하기 시작했습니다. 공격자들은 60,000개 이상의 소프트웨어 저장소(Repository)를 대상으로 탈취한 접근 권한을 테스트하고 민감한 자격 증명을 훔치기 위한 악성 코드를 심었습니다. Aikido Security 및 StepSecurity와 같은 보안 기업의 보고서에 따르면, 약 4,800개의 해킹된 계정이 의심스러운 풀 리퀘스트(Pull Requests)를 제출하여 사용 가능한 권한을 테스트하는 데 사용된 것으로 확인되었습니다.
보고서에 따르면, 설정 및 권한이 허용된 1,800개 이상의 저장소에서 악성 코드가 성공적으로 작동했습니다. 반면, SafeDep은 악성 수정 사항이 약 8,093개의 공개 저장소에 도달했다고 기록했으나, 이것이 모든 저장소에서 악성 코드가 성공적으로 실행되었음을 의미하는 것은 아닙니다.
공격 메커니즘: 취약점이 아닌 신뢰 악용
이번 공격의 핵심은 공격자들이 GitHub Actions의 소프트웨어 취약점을 악용하는 것이 아니라, 이전에 탈취한 개발자나 봇(Bots) 계정의 유효한 '액세스 토큰(Tokens)'을 사용한다는 점입니다. 악성 코드는 다음을 포함한 여러 곳에 주입되었습니다.
- GitHub Actions 워크플로우(Workflows)
- CI(지속적 통합) 시스템이 실행하는 셸 스크립트
- npm 패키지 설치 훅(Hooks). 이는 악성 수정 사항이 포함된 상태에서 종속성(Dependencies)을 설치하는 개발자들에게 위험을 초래합니다.
이 공격의 실질적인 변화는 무엇인가?
"wfx-loot" 캠페인의 위험성은 공격 전략이 기술적 취약점(Exploits)을 찾는 것에서 해킹된 계정에 부여된 '신뢰'를 악용하는 것으로 전환되었다는 점에 있습니다. 공격자는 시스템을 해킹하려 하는 대신 합법적인 키를 사용하여 불법적인 작업을 수행하므로 탐지가 훨씬 어렵습니다. 이 악성 코드는 GitHub 토큰, 저장소 비밀 정보, AWS 및 Azure와 같은 클라우드 자격 증명, 그리고 AI 서비스 키를 탈취하는 것을 목표로 하며, 이는 기업의 클라우드 인프라 전체가 침해되고 접근 범위가 확대되는 결과로 이어질 수 있습니다.
흔적을 숨기기 위해 공격자들은 작업을 완료한 후 코드 변경 사항을 되돌리고 워크플로우 실행 로그를 삭제하는 방식을 사용합니다. 또한 일부 요청에서 Fly.io 애플리케이션에서 발급된 토큰이 사용된 것이 관찰되었으나, 아직 Fly.io 인프라 자체가 해킹되었다는 증거는 없습니다.
개발자 및 기업을 위한 보안 권고 사항
상황의 심각성을 고려하여 보안 기업들은 악성 코드가 실행되었을 가능성이 있는 기업들에게 다음과 같은 즉각적인 조치를 취할 것을 권고합니다.
- 침해되었을 가능성이 있는 모든 액세스 토큰(Tokens)을 취소하십시오.
- 노출되었을 수 있는 모든 비밀 정보와 자격 증명을 교체(Rotate)하십시오.
- 클라우드 컴퓨팅 로그를 면밀히 검토하여 승인되지 않은 변경 사항이나 활동이 있는지 확인하십시오.