Cybernews의 보도에 따르면, GitHub 탈취 토큰과 WFX 스틸러를 중심으로 한 것으로 알려진 캠페인이 약 66,000개의 저장소를 위험에 빠뜨리고 있습니다. 공격자들은 탈취한 액세스 토큰을 사용해 악성 워크플로 파일을 심어, 개발 파이프라인을 비밀 정보 수집 수단으로 전환한 것으로 알려졌습니다. 제공된 보도 내용이 간략하기에, 이 글은 보도된 사실에만 근거하며 개발자들이 지금 당장 취할 수 있는 실질적인 조치에 초점을 맞춥니다.
탈취된 토큰이 GitHub 워크플로 공격을 가능하게 한 방식
보도에 따르면, 이 캠페인은 탈취한 토큰을 사용해 약 66,000개의 GitHub 저장소에 "WFX 스틸러" 워크플로를 추가했습니다. 토큰은 비밀번호를 입력하지 않고도 개인이나 애플리케이션이 계정에서 작업을 수행할 수 있게 해주는 자격 증명입니다. 공격자가 충분한 권한을 가진 유효한 토큰을 보유하고 있다면, GitHub는 그들의 행위를 정당한 것으로 간주합니다.
이것이 바로 워크플로가 매력적인 표적이 되는 이유입니다. GitHub Actions 워크플로는 저장소에 저장되어 자동으로 실행되는 파일로, 흔히 프로젝트가 코드 빌드, 테스트, 배포에 사용하는 비밀 정보에 접근할 수 있습니다. 악성 워크플로는 소프트웨어 버그를 악용할 필요가 없습니다. GitHub가 권한이 있다고 믿는 누군가가 커밋하기만 하면 되고, 그러면 파이프라인 내부에서 실행됩니다.
출처 요약은 토큰이 처음에 어떻게 탈취되었는지 자세히 설명하지 않으며, 우리는 추측하지 않을 것입니다. 독자에게 중요한 것은 패턴입니다. 파이프라인 자체가 전달 메커니즘이 되고, 그것을 여는 자격 증명이 진짜 목표라는 점입니다.
WFX 스틸러가 개발자 계정에서 노출할 수 있는 것
보도는 해당 워크플로를 비밀 정보 탈취형으로 설명하며, 제시된 관점은 CI/CD 파이프라인이 개발자의 비밀 정보와 개인 계정으로 이어지는 경로가 될 수 있다는 점을 지적합니다. 실제로 파이프라인에서 실행되는 스틸러는 그 파이프라인이 접근할 수 있는 모든 것에 도달할 위치에 있을 수 있습니다. 그러한 자료의 전형적인 예는 다음과 같습니다:
- 저장소 비밀로 저장된 API 키 및 클라우드 자격 증명
- 배포 토큰 및 패키지 레지스트리 자격 증명
- 워크플로가 사용할 수 있는 기타 GitHub 토큰
WFX 스틸러가 수집하는 정확한 데이터는 우리가 가진 정보에서 확인되지 않았으므로, 위 목록은 이 캠페인에 대한 검증된 발견이 아니라 파이프라인 비밀 정보에 공통적인 위험 범주로 취급하십시오. 더 큰 우려는 탈취된 토큰 하나가 더 많은 토큰 탈취로 이어질 수 있다는 점입니다. 한 저장소에서 수집된 비밀 정보가 다른 서비스를 열어줄 수 있으며, 이것이 저장소 침해가 개인 및 조직 계정으로 확산될 수 있는 방식입니다.
이는 우리가 이전에 다룬 더 넓은 주제와 맞닿아 있습니다. 사람들이 신뢰해야 하는 시스템이 그들을 거스르는 데 이용되는 것입니다. Pixel 제로클릭 취약점과 MSP에 대한 ScreenConnect 공격을 살펴본 우리의 기사가 같은 불편한 흐름을 공유한 것은, 신뢰받는 도구가 얼마나 자주 약점이 되는지를 보여줍니다.
저장소가 영향을 받았는지 확인하는 방법
특정 저장소가 영향을 받은 목록에 있는지 우리가 알려드릴 수는 없으며, 제공된 보도는 그러한 목록을 공개하지 않습니다. 그래도 직접 변조의 징후를 찾아볼 수는 있습니다:
- 워크플로 파일을 검토하십시오. 각 저장소의
.github/workflows폴더를 열어 인식하지 못하는 파일이나 직접 하지 않은 수정을 찾으십시오. - 커밋 및 풀 리퀘스트 이력을 확인하십시오. 특히 낯선 계정이나 이상한 시간대에 워크플로를 건드린 최근 커밋이나 브랜치를 찾으십시오.
- Actions 실행 로그를 검사하십시오. 예상치 못한 실행, 새로운 트리거 또는 외부 네트워크 요청을 하는 단계는 주의 깊게 살펴볼 가치가 있습니다.
- 보안 로그와 승인된 앱을 검토하십시오. GitHub 설정에서 어떤 개인 액세스 토큰, OAuth 앱, GitHub 앱이 접근 권한을 가지고 있는지 확인하고 사용하지 않는 것은 제거하십시오.
- 무언가를 발견했다면 노출되었다고 가정하십시오. 해당 워크플로가 읽을 수 있었던 모든 비밀 정보를 침해된 것으로 취급하고 교체하십시오.
GitHub 강화하기: 토큰, MFA, 서드파티 Actions
이 단계 중 어느 것도 특별하지 않지만, 함께 적용하면 탈취된 토큰이 할 수 있는 일을 줄여줍니다.
토큰을 교체하고 축소하십시오. 오래된 개인 액세스 토큰을 폐기하고 작동하는 가장 좁은 범위와 가장 짧은 만료 기간을 가진 새 토큰을 발급하십시오. 특정 저장소로 제한된 세분화된 토큰이 광범위한 토큰보다 안전합니다.
다단계 인증을 켜십시오. MFA는 계정 로그인을 보호하지만, 탈취된 토큰이 로그인 단계를 완전히 우회할 수 있다는 점을 기억할 가치가 있습니다. 그렇기 때문에 토큰 위생이 똑같이 중요합니다.
워크플로 권한을 제한하십시오. 기본 워크플로 토큰을 읽기 전용으로 설정하고 작업이 실제로 필요한 곳에만 쓰기 권한을 부여하십시오. 예를 들어 브랜치 보호와 코드 소유자를 통해 워크플로 파일 변경이 병합되기 전에 검토를 요구하십시오.
서드파티 Actions를 검증하십시오. Actions를 움직일 수 있는 태그 대신 특정 커밋에 고정하고, 신뢰하는 유지관리자의 것을 선호하십시오. 필요하지 않은 작업에는 비밀 정보를 두지 마십시오.
이것이 당신에게 의미하는 것
GitHub에서 작은 프로젝트라도 유지관리한다면, 워크플로 파일은 공격 표면의 일부입니다. 탈취된 토큰은 누군가가 당신의 비밀 정보를 조용히 읽는 워크플로를 추가하게 할 수 있으며, 경고를 전혀 보지 못할 수도 있습니다. 개인 개발자, 오픈 소스 유지관리자, 자동화된 배포를 하는 기업 모두가 해당됩니다.
좋은 소식은 방어 수단이 당신의 통제 범위 안에 있고 시간이 거의 들지 않는다는 것입니다. 이는 또한 공격자들이 사람들이 이미 신뢰하는 계정과 도구를 노리는 반복적인 패턴의 일부이기도 합니다. Incransom이 TrRAC Inc.에 대한 공격을 주장하며 150GB 데이터 유출을 위협한 사건에 대한 우리의 보도는 다른 유형의 사건이지만, 탈취된 접근 권한이 얼마나 빠르게 실제 피해로 바뀔 수 있는지를 강조합니다.
실행 가능한 핵심 조치
- 오늘 GitHub 토큰을 교체하고 더 이상 사용하지 않는 것은 삭제하십시오.
- 저장소 접근 권한이 있는 모든 계정에 MFA를 활성화하십시오.
.github/workflows파일에서 직접 하지 않은 변경이 있는지 감사하십시오.- 워크플로 권한을 기본적으로 읽기 전용으로 설정하고 서드파티 Actions를 고정하십시오.
- 의심스러운 것을 발견하면 해당 워크플로가 접근할 수 있었던 모든 비밀 정보를 교체하십시오.
GitHub 탈취 토큰 WFX 스틸러 관련 보도는 아직 진행 중이며 세부 사항은 바뀔 수 있습니다. 확인을 기다리지 말고 지금 자신의 설정을 정리하십시오. 오늘 토큰을 교체하고, MFA를 활성화하고, 워크플로를 감사하십시오.




