깃허브 코드 자동화 기능 노린 공격…6만 곳 넘는 저장소서 초기 요청, 인증정보 수집 시도
GMO Flatt Security는 2026년 11월 10~12일, 깃허브 저장소의 코드를 자동으로 빌드·시험·배포하는 GitHub Actions를 노린 공격을 분석했습니다. 공격자는 초기 문서 변경 요청 뒤 자동화 절차나 패키지 설치 단계에 악성 코드를 넣어, 작업 환경에 전달된 계정·서비스 인증정보를 수집하려 했습니다. 조사 당시 6만 곳이 넘는 저장소에서 초기 요청이 생성됐으며, 이 수치는 악성 코드 실행이나 정보 유출이 확인된 저장소 수와는 집계 기준이 다릅니다.

GMO Flatt Security는 2026년 11월 10~12일 깃허브의 코드 자동화 기능을 노린 공격을 관측·분석해 대응 지침을 공개했습니다. 조사 당시 docs: dependency audit notes라는 제목의 코드 변경 요청(PR)이 6만 곳이 넘는 저장소에서 생성됐습니다. 이 수치는 요청이 생성된 저장소 수이며, 악성 코드 실행이나 정보 유출이 확인된 저장소 수와는 집계 대상이 다릅니다.
요청 뒤 악성 코드가 실행되는 경로
GitHub Actions는 저장소에 정해 둔 절차(워크플로)에 따라 코드를 자동으로 빌드·시험·배포하는 기능입니다. 작업은 저장소 코드와 함께 실행되며, 배포나 다른 서비스에 접근할 때 쓰는 토큰과 인증정보가 작업 환경에 전달될 수 있습니다.
Flatt Security의 분석에 따르면 공격자는 먼저 wfx-docs 브랜치에서 PR을 만들었습니다. 회사는 PR 작성에 사용된 계정이 탈취돼 공격자에게 악용된 것으로 추정했습니다. PR에는 악성 코드가 담기지 않았고, 이후 커밋(저장소에 기록된 코드 변경)을 통해 기존 워크플로에 악성 단계를 추가하거나 새 워크플로를 만들었습니다. 다른 경로에서는 프로젝트 설정 파일인 package.json을 고쳐, 프로그램 패키지 설치 뒤 자동 실행되는 postinstall 단계에서 셸 스크립트를 작동시켰습니다.
따라서 PR은 공격의 초기 흔적이고, 정보 수집은 뒤에 추가된 워크플로나 설치 단계가 실행될 때 이뤄지도록 구성됐습니다. 악성 코드에는 자동화 작업 환경의 정보를 찾아 모으는 기능이 있었습니다.
수집 대상과 클라우드 권한
분석한 코드에는 GitHub 접근 토큰, Actions에 등록한 비밀값(secrets)과 변수(vars), 환경변수, 클라우드 인증에 쓰이는 OIDC 토큰 등을 찾는 동작이 있었습니다. 개발·배포용 인증 파일과 공개되었거나 접근 권한이 있는 저장소의 기록·작업 결과물도 탐색 대상이었습니다. 사용자가 직접 관리하는 실행 서버에서는 클라우드 메타데이터, 서버 인증정보, 다른 작업 디렉터리의 .env 파일과 키까지 탐색했습니다.
수집 자료를 gzip으로 압축해 HTTP 통신으로 외부에 전송하는 동작이 확인됐습니다. 일부 워크플로에는 텔레그램 봇의 파일 전송 기능으로 자료를 보내려는 코드도 있었습니다. 클라우드 권한이 있는 자동화 작업에서는 AWS 임시 자격 증명으로 다른 역할에 접근하거나, IAM 사용자용 액세스 키를 만들고 역할의 신뢰 정책을 바꾸려는 코드가 확인됐습니다. Azure에서는 GitHub Actions를 신뢰하도록 연결하는 인증 설정을 추가하고, Google Cloud에서는 서비스 계정 토큰을 만들려는 시도도 있었습니다. 이는 분석한 코드에서 확인된 시도입니다.
의심 흔적과 대응
Flatt Security가 제시한 의심 흔적은 docs: dependency audit notes라는 제목의 PR, ci: refresh build cache, chore: add dependency audit workflow, chore: add ci helper라는 메시지가 붙은 커밋, 그리고 chore/ 뒤에 무작위 8자리 문자열이 붙은 브랜치입니다. 회사는 이런 흔적이 있는 저장소에서 자동화 작업 중 악성 코드가 실행됐을 가능성이 있다고 안내했습니다.
회사는 영향이 의심되는 환경을 격리해 조사한 뒤, 신뢰할 수 있는 단말에서 관련 인증정보를 폐기하고 다시 발급하라고 권고했습니다. 대상은 GitHub·자동화 작업 토큰뿐 아니라 사용한 클라우드와 패키지 저장소 인증정보, AI 서비스 API 키, SSH·GPG 키, 데이터베이스 인증정보 등입니다. 지갑 키 저장소가 노출됐을 가능성이 있으면 새 키를 사용하는 지갑으로 자산을 옮기는 방안도 검토하라고 했습니다.
인증정보 재발급과 클라우드 권한 설정 점검은 별도 작업입니다. AWS IAM 역할의 신뢰 설정은 어떤 주체가 해당 역할을 사용할 수 있는지 정합니다. Azure의 페더레이션 자격 증명도 인증정보와 별도로 점검할 설정입니다. Flatt Security는 이런 클라우드 설정을 살펴 필요한 경우 수정하라고 권고했습니다.