# CodeQL 공급망 공격 위협 – 공개된 GitHub 비밀키에서 시작된 보안 사고

> Clean Markdown view of GeekNews topic #20080. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=20080](https://news.hada.io/topic?id=20080)
- GeekNews Markdown: [https://news.hada.io/topic/20080.md](https://news.hada.io/topic/20080.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2025-04-01T11:08:26+09:00
- Updated: 2025-04-01T11:08:26+09:00
- Original source: [praetorian.com](https://www.praetorian.com/blog/codeqleaked-public-secrets-exposure-leads-to-supply-chain-attack-on-github-codeql/)
- Points: 1
- Comments: 1

## Topic Body

- **공개된 GitHub 비밀키(Secret)** 로 인해 GitHub의 정적 분석 도구인 **CodeQL**이 **공급망 공격에 노출**  
- 문제의 키는 1.022초 동안 유효했으며, 해당 시간 내 공격자는 GitHub Actions 워크플로우에서 **임의 코드 실행 가능**  
- 이 취약점은 공개 CVE로 등재됨: **CVE-2025-24362**  
  
### 주요 피해 시나리오  
  
공격자는 이 취약점을 통해 다음과 같은 공격을 실행할 수 있었음:  
  
- **CodeQL을 사용하는 리포지토리의 소스코드 유출** (지적재산 침해)  
- **GitHub Actions의 비밀키 탈취 및 2차 공격 가능**  
- **내부 인프라에서 CodeQL 워크플로우를 통한 코드 실행**  
- **GitHub Actions Cache를 사용하는 워크플로우의 비밀키까지 탈취 가능**  
  
### 공격 탐지 및 실험 과정  
  
- **Praetorian 연구팀**은 GitHub Actions에서 생성되는 **워크플로우 아티팩트에 포함된 비밀키**를 스캔하는 도구를 개발  
- CodeQL 관련 리포지토리에서 **비밀키가 포함된 debug artifact** 발견  
- 해당 키가 유효한 동안 공격자가 branch/tag를 생성하고 파일을 푸시할 수 있음을 증명하는 **PoC 도구 `artifact_racer.py`**를 제작 및 실행  
  
##### 핵심 실험 결과  
  
- 공격자는 해당 토큰으로:  
  - 새로운 브랜치 생성  
  - 파일 푸시  
  - 태그 추가  
- CodeQL은 기본적으로 `v3` 태그를 참조하며, 해당 태그를 공격자가 덮어쓸 수 있었음 → **모든 CodeQL 사용자에게 악성 코드 배포 가능**  
  
### 확산 가능성: 왜 위험한가?  
  
- 대부분의 사용자는 CodeQL을 수동으로 설정하지 않고, **GitHub 리포지토리 설정에서 "Enable CodeQL" 버튼을 클릭**  
- 이때 자동으로 설정되는 워크플로우는 `github/codeql-action` 리포지토리를 참조하며, **v3 태그 기반**  
- 공격자가 v3 태그를 악성 커밋으로 덮어쓸 경우, **수많은 프로젝트에서 자동으로 악성 코드 실행**  
  
### 추가 공격 가능성: 캐시 중독 (Cache Poisoning)  
  
- 기본 CodeQL 워크플로우는 **GitHub Actions Cache를 사용함**  
- 이를 통해 공격자는 **빌드 파이프라인에 악성 캐시를 주입**, 이후 워크플로우에서 **비밀키 탈취 및 내부 접근 가능**  
- 대표적 피해 대상:  
  - [Homebrew](https://github.com/Homebrew/brew)  
  - [Angular](https://github.com/angular/angular)  
  - [Grafana](https://github.com/grafana/grafana)  
  
### GitHub의 대응 및 패치  
  
- **2025년 1월 22일** 취약점 보고 후, GitHub은 3시간 내에:  
  - 취약 워크플로우 중단  
  - 비밀키 업로드 방지 PR 등록  
  - 패치 버전 배포: **CodeQL Action v3.28.3**  
- 공식 보안 권고문: [GHSA-vqf5-2xx6-9wfm](https://github.com/advisories/GHSA-vqf5-2xx6-9wfm)  
  
### 대응 방안  
  
- 워크플로우에서 아티팩트를 업로드할 때는 **업로드 대상 파일을 제한**할 것  
- 환경 변수나 `.git/config`, `_temp/` 디렉터리 내 파일 포함 주의  
- `GITHUB_TOKEN`은 **읽기 전용 권한만 부여**  
- 업로드 전 **비밀키 스캔 수행 권장** (`Nosey Parker` 등 도구 활용)  
  
### 결론  
  
- CodeQL의 기본 설정으로도 **수많은 프로젝트가 공급망 공격에 노출될 수 있음**  
- GitHub Actions의 **보안 취약점은 여전히 심각한 위협**이며, 커뮤니티의 지속적인 관심과 방어 전략이 요구됨  
  
### 관련 정보  
  
- CVE 정보: [CVE-2025-24362](https://github.com/advisories/GHSA-vqf5-2xx6-9wfm)  
- PoC 브랜치: [testpoc](https://github.com/github/codeql-action/tree/testpoc)  
- 커밋 링크: [Commit](https://github.com/github/codeql-action/commit/26fcd8e2368067be04a705a229590749a426fefe)  
- 태그 링크: [Tag](https://github.com/github/codeql-action/releases/tag/testpoctag)

## Comments



### Comment 36602

- Author: neo
- Created: 2025-04-01T11:08:26+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=43527044) 
- GitHub의 불변 액션이 출시되면 공격의 70% 이상을 해결할 수 있을 것이라는 의견이 있음
  - GitHub의 주간 문제들이 이를 출시하게 만들 것이라고 생각함
- 임시 토큰이 새로운 배포를 생성하고 아티팩트 증명을 생성할 권한을 가진 이유에 대한 언급이 없음
  - 문제 해결을 위해 디버그 로그를 비활성화했지만, 임시 토큰의 권한을 코드 분석 엔진에 더 적합하게 변경했는지에 대한 답변이 없음
- CI와 CD는 완전히 분리된 환경이어야 한다고 점점 더 확신하게 됨
  - CI의 손상이 CD 관련 토큰 유출로 이어지지 않아야 함
- GitHub의 대응 시간이 매우 인상적임
- 성이 Prater인 사람으로서 praetorian.com을 소유하고 싶다는 의견이 있음
- 공개 GitHub 액션을 사용하는 것은 문제를 초래할 수 있으며, 워크플로우 절차를 분석하지 않고 사용하는 것은 더 위험함
  - 대신 woodpecker나 다른 훌륭한 CI 빌더(circle, travis, gitlab 등)를 사용하여 직접 호스팅할 것을 권장함
- OpenZFS PR에 CodeQL을 사용하고 있으며, OpenZFS에는 문제가 없음을 언급함
  - OpenZFS의 코드는 비밀이 아님
- 문제가 해결되었는지 궁금해하는 의견이 있음
- 사이트의 성능이 너무 나빠서 스크롤이 거의 불가능하다는 불만이 있음
