- 각 브랜치의 변경사항을 추적하는데 사용하는 인기 GitHub Action으로, 해킹된 커밋을 통해 CI/CD 시크릿 유출 시도가 발생
-
23,000개의 Repo가 영향받았고, GitHub는 이 액션을 삭제했으며 더 이상 사용 불가능함
-
대체 액션으로 교체 및 공개 워크플로 로그에서 시크릿이 노출되었을 가능성 존재하므로 확인 후 키 로테이션 필수
- StepSecurity의 Harden-Runner가 발견했고, 보안이 강화된 대체 액션 step-security/changed-files를 무료로 배포중
사건 요약
- tj-actions/changed-files는 23,000개 이상의 저장소에서 사용되고 있으며 해킹 발생
- 공격자는 액션 코드 수정 및 버전 태그를 악성 커밋으로 재지정함
- 이로 인해 GitHub Actions 빌드 로그에 CI/CD 시크릿이 출력됨
- 공개된 워크플로 로그에서 시크릿이 노출되었을 가능성 존재
- Harden-Runner가 예상치 못한 엔드포인트 탐지 후 문제 발견
- 악성 Python 스크립트가 Runner Worker 프로세스에서 시크릿을 덤프하도록 함
- 모든 태그가 동일한 악성 커밋 해시 (0e58ed8671d6b60d0890c21b07f8835ace038e67)로 지정됨
GitHub의 대응 조치
- GitHub는 tj-actions/changed-files 액션을 삭제하고 사용을 중단시킴
- 공식 CVE는 CVE-2025-30066임
복구 조치 방법
-
1. StepSecurity에서 제공하는 보안 대체 액션 사용
-
tj-actions/changed-files 액션을 step-security/changed-files@v45 로 교체
-
2. 모든 tj-actions/changed-files 참조 제거
- 코드베이스에서 tj-actions/changed-files 참조 검색 후 제거:
git grep -l "tj-actions/changed-files"
-
3. GitHub Actions 워크플로 실행 로그 감사
- 최근 실행 로그에서 시크릿이 유출되었는지 확인 필요
- 유출된 시크릿이 발견되면 즉시 로테이션(재설정) 필요
-
4. GitHub Actions 허용 목록 설정
- 신뢰할 수 있는 GitHub Actions만 실행하도록 허용 목록 구성:
- GitHub 설정에서 허용 설정 가능:
-
Settings → Actions → Allow select actions
-
5. StepSecurity Harden-Runner 설정
- Harden-Runner에서 네트워크 트래픽 및 워크플로 실행 모니터링 설정 가능
다음 단계
- GitHub에 문제 보고 완료 → GitHub 이슈: #2463
- tj-actions/changed-files 리포지토리 삭제됨
-
CVE-2025-30066으로 공식 등재됨
- StepSecurity Harden-Runner를 통해 유사한 보안 문제 감지 및 방지 가능
- 보안 상태를 강화하고 실시간 모니터링을 수행하기 위해 Harden-Runner 설정 권장