Wiz Research는 이 세부 정보를 10월 25일에 발표했습니다. Wiz Research는 9월 15일부터 이 캠페인을 추적해 왔으며, 공격자들이 API 요청에 사용한 사용자 에이전트(user agent)를 따라 'Gheist'라고 명명했습니다.
공격자들은 도난당한 GitHub 토큰을 사용하여 토큰이 접근할 수 있는 모든 리포지토리마다 워크플로우(workflow)를 커밋합니다. 이 워크플로우는 해당 리포지토리의 시크릿(secrets)을 실행 로그에 출력합니다. 그들의 도구는 GitHub API를 통해 이 로그를 다운로드한 후 몇 초 만에 해당 실행 기록을 삭제합니다. 공격자의 도메인이나 포착할 수 있는 외부 연결은 없습니다.
이후 변종 버전에서는 호스트에서 클라우드 메타데이터(cloud metadata) 및 Kubernetes service account 토큰을 포함하여 자격 증명을 검색하는 자체 호스팅 러너 작업(self hosted runner job)을 추가합니다. Wiz에 따르면 이 페이로드(payload)는 Anthropic, Hugging Face, Groq, NVIDIA와 같은 AI 제공업체의 API 키도 찾습니다.
7월 28일 이후 GitHub는 공용 리포지토리의 의심스러운 워크플로우를 누군가 승인할 때까지 보류하고 있으며, 이로 인해 페이로드 실행이 중단되었습니다. 하지만 이 보류 조치는 비공개(private) 리포지토리나 GitHub Enterprise Server에는 적용되지 않으며, Wiz는 이 두 환경 모두에서 성공적인 공격 사례를 목격했습니다.
10월 24일 기준으로도 이 캠페인은 계속 진행되고 변화하고 있었습니다. 영향을 받은 계정의 약 3분의 2는 더 이상 GitHub에 존재하지 않았습니다.
만약 CI(지속적 통합)가 에이전트가 풀 리퀘스트(pull requests)에서 실행될 수 있도록 AI 제공업체의 키를 리포 시크릿으로 보관하고 있다면, 비공개 리포지토리는 이 보류 조치로부터 보호받을 수 없습니다.
귀하의 어떤 리포지토리가 Anthropic 또는 OpenAI 키를 Actions secret으로 보유하고 있으며, 누가 해당 리포지토리로 푸시(push)할 수 있는 토큰을 가지고 있습니까?