한 줄 요약

2026년 5월에 악성코드가 심어진 GitHub Actions 저장소 두 개(actions-cool/issues-helper, actions-cool/maintain-one-comment)가 수개월 후인 9월 16일 갑자기 다시 접근 가능 상태가 되면서, 악성 코드가 그대로 재실행되었습니다. 이 악성 코드는 CI/CD 파이프라인(소프트웨어를 자동으로 빌드·배포하는 시스템)에서 API 키, 비밀번호 같은 민감한 자격증명을 훔쳐 공격자 서버로 전송합니다. 새로운 공격 코드나 새로운 인프라 없이, 저장소 접근이 복원되는 것만으로 위협이 자동 재활성화된 점이 특히 위험합니다. 해당 액션을 버전 태그로 참조하는 워크플로우는 재활성화 후 하루 이내에 대부분 악성 페이로드를 실행했을 것으로 분석됩니다. 영향을 받은 저장소는 즉시 해당 액션 참조를 제거하고, 노출된 모든 시크릿(비밀값)을 교체해야 합니다.

사건

2026년 5월 Mini Shai-Hulud 캠페인에서 침해된 GitHub Actions 저장소 두 개가 GitHub에 의해 비활성화되었다가, 2026년 9월 16일 이유 불명으로 재활성화되면서 악성 코드가 그대로 재실행되었다.

영향

해당 Actions를 사용하는 CI/CD 파이프라인에서 API 키·토큰 등 민감한 자격증명이 탈취되어 공격자 서버(t.m-kosche[.]com)로 유출되었으며, 새로운 공격 없이 공급망 전체에 보안 위협이 재발생했다.

원인

저장소 비활성화 시 악성 릴리스 태그가 정리되지 않아 악성 코드가 코드베이스에 잔존했고, 저장소 접근이 복원되자마자 버전 태그를 참조하는 모든 워크플로우가 악성 페이로드를 즉시 재다운로드·실행했다.

대응

GitHub는 두 저장소를 다시 비활성화했다. Socket이 위협을 분석하고 공개 경고했으며, 개발자들에게 영향받은 액션 참조 제거, 5월 18일 이전 커밋 SHA 고정, 노출된 시크릿 전체 교체, 워크플로우 실행 이력 검토를 권고했다.

실무 포인트

버전 태그(v2.2.1 등) 대신 특정 커밋 SHA로 외부 Actions를 고정(pin)하면, 업스트림 저장소 상태 변경에 영향을 받지 않아 이번과 같은 재활성화 공격을 차단할 수 있다.

본문

Ravie Lakshmanan 2026년 9월 25일 | 악성코드 / 공급망 공격

두 개의 actions-cool GitHub Actions가 두 번째로 비활성화되었다. 이 저장소들은 2026년 5월 Mini Shai-Hulud 캠페인으로 침해된 지 수개월 만에 지난주 다시 접근 가능 상태가 되었다.

영향을 받은 GitHub Actions는 다음과 같다.

  • actions-cool/issues-helper
  • actions-cool/maintain-one-comment

현재 두 저장소에 접속하면 다음 메시지가 표시된다: "GitHub 서비스 약관 위반으로 인해 GitHub 직원에 의해 이 저장소에 대한 접근이 비활성화되었습니다. 저장소 소유자인 경우 GitHub 지원팀에 문의하실 수 있습니다."

Socket의 연구원 Karlo Zanki는 "2026년 9월 16일, 두 저장소가 다시 접근 가능해졌다"며 "릴리스 태그가 먼저 정리되지 않은 채였고, 태그들은 여전히 5월 18일에 삽입된 악성 콘텐츠를 가리키고 있어, 버전 태그로 해당 액션을 참조하는 모든 워크플로우가 다음 실행 시 페이로드를 다시 다운로드하고 실행하게 되었다"고 밝혔다.

두 GitHub Actions 워크플로우는 원래 2026년 5월 18일에 침해되어, 이를 실행하는 CI/CD 파이프라인에서 민감한 자격증명을 수집해 공격자 제어 서버로 유출하는 악성 코드를 실행했다.

이 활동은 이후 Mini Shai-Hulud 활동 클러스터와 연관된 것으로 밝혀졌으며, GitHub Actions 워크플로우와 @antv 생태계의 npm 패키지에서 동일한 유출 도메인("t.m-kosche[.]com")이 사용된 점이 근거로 제시되었다.

Socket의 위협 인텔리전스 책임자 Philipp Burckhardt는 당시 The Hacker News에 "이는 별개의 npm 전용 사건이 아니라 동일한 Mini Shai-Hulud 활동 클러스터를 가리킨다"고 말했다.

저장소는 2026년 9월 16일 GMT+2 기준 오전 11시 9분에서 오후 6시 16분 사이 어느 시점에 재활성화되었으며, 그 이유는 현재까지 알려지지 않았다.

그런데 이번 사태는 또 다른 문제를 드러낸다. 악성 코드가 영향받은 코드베이스에 그대로 잔존하며 한 번도 정리되지 않았고, 저장소가 다시 다운로드 가능한 상태가 되는 것만으로 위협이 재활성화되었다는 점이다.

해당 두 GitHub Actions를 사용하는 워크플로우가 여전히 상당수 존재하기 때문에, 위협 행위자가 새로운 익스플로잇을 사용하거나 새로운 인프라를 구축하지 않고도 심각한 소프트웨어 공급망 보안 위험이 발생할 수 있었다.

Socket은 "두 액션은 이슈 및 댓글 관리 자동화 기능을 수행한다. 예를 들어 비활성 이슈 닫기, 새로 열린 이슈 확인, 단일 봇 댓글 최신 상태 유지 등이 해당된다"고 설명했다.

"이들 액션을 호출하는 워크플로우는 일반적으로 매일 정해진 시간에 또는 누군가 이슈나 풀 리퀘스트를 열 때 실행된다. 실제로 영향을 받은 대부분의 저장소는 위협 행위자의 추가 조치 없이도 재활성화 후 하루 이내에 페이로드를 실행했을 것이다."

2026년 5월 18일 이전 버전의 전체 커밋 SHA로 해당 액션을 고정(pin)한 워크플로우는 영향을 받지 않는다. 개발자들에게는 다음 조치를 취할 것이 권고된다.

  • 영향받은 액션에 대한 모든 참조를 찾아내고, "actions-cool/issues-helper@v2.2.1"을 영향받은 버전으로 간주한다.
  • 해당 액션을 제거하고, 2026년 5월 18일 이전의 알려진 정상 커밋 SHA로 고정한다.
  • 노출된 모든 시크릿을 교체한다.
  • 워크플로우 실행 이력을 검토하고, 장기간의 "Set up job" 실패 후 새롭게 성공한 실행이 있는지 확인한다.
  • 2026년 9월 16일 이후의 예기치 않은 커밋에 대해 저장소 이력을 감사한다.

Zanki는 "대부분의 공급망 사고는 새로운 요소를 포함한다. 새로 배포된 악성 버전, 새로 탈취된 계정, 새로 주입된 워크플로우 등이 그것이다"라며 "이번 사고는 그렇지 않았다. 새로운 코드도 배포되지 않았고, 설정도 변경되지 않았다"고 말했다.

"이번 사고는 변경 가능한 태그(mutable tag)가 침해되고, 억제되었다가, 자신의 워크플로우 파일에 아무런 변경 없이 재활성화될 수 있음을 보여준다. SHA 고정은 업스트림 저장소 상태에 대한 그러한 의존성을 제거한다."

출처
The Hacker News · thehackernews.com
원문 보기

분야별 뉴스

관심 분야의 보안 이슈를 모아 보세요.

TORUN SECURITY

투런이 제공하는 보안 솔루션

공격 표면 관리부터 엔드포인트·내부정보 보호까지, 기업 환경에 맞는 보안 솔루션을 투런이 함께 설계합니다.