tj-actions/changed-files 보안결함이 발생했네요.

주된 결함 내용
여러분들께 알려드릴 중요한 보안 이슈가 있습니다.
GitHub에서 매우 널리 사용되는 Action인 tj-actions/changed-files가 최근 보안 문제에 노출되었습니다. 이 액션은 파일 변경 사항을 감지하는 기능을 제공하며, GitHub Marketplace에서 1,000만 회 이상의 다운로드를 기록하고 있을 정도로 CI/CD 파이프라인에서 광범위하게 활용되고 있습니다.
특히, Pull Request나 특정 브랜치에서 변경된 파일을 감지하여 테스트, 빌드, 배포 등의 작업을 효율적으로 관리할 수 있게 해주는 기능으로 인해 많은 개발자와 조직에서 신뢰하고 사용해 왔습니다.
하지만 이번에 악성 페이로드가 포함된 버전이 배포되었으며, 이 페이로드는 CI 파이프라인에서 실행될 때 비밀 정보(secrets)를 덤프하려는 시도를 포함하고 있습니다.
이로 인해 수천 개의 CI 파이프라인이 영향을 받을 가능성이 있습니다. 이전에도 이 액션은 보안 취약점(CVE-2023-51664)이 보고된 바 있으며, 이번에도 모든 버전이 영향을 받는 것으로 확인되었습니다. 특히, 단순히 메인 브랜치에서 제거하는 것만으로는 충분하지 않으며, 다른 브랜치에서도 실행될 수 있어 전반적인 조치가 필요합니다.
솔루션
1. 영향 받는지 확인:
- 코드베이스에서 tj-actions를 검색하거나 GitHub 쿼리를 사용하여 확인.
- Semgrep 규칙을 사용하여 로컬에서 tj-actions 사용 여부 확인.
https://github.com/search?q=org%3A<YOURORG>+uses%3A+tj-actions%2F&type=code
2. tj-actions/changed-files 사용 중단:
- 즉시 사용 중단하고, 더 안전한 대안으로 전환하거나 파일 변경 감지 로직을 직접 구현.
- 모든 브랜치에서 제거하여 안전을 확보.
3. GitHub Actions 허용 목록 설정:
- GitHub 설정에서 허용 목록에 GitHub Actions를 추가하여 특정 액션이 실행되지 않도록 설정.
4. GitHub Actions 버전 고정:
- GitHub Actions를 특정 커밋 SHA로 고정하여 안전한 버전을 사용.
예를 들어, actions/checkout을 사용할 때 다음과 같이 특정 커밋 SHA를 명시할 수 있습니다:
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # 특정 커밋 SHA
이렇게 하면 태그나 브랜치를 사용하는 것보다 더 안전하게 특정 버전을 고정할 수 있습니다.
5. 과거 워크플로 실행 기록 감사:
- 의심스러운 외부 네트워크 요청이 있는지 로그를 확인.
- 특히 CI 러너 로그가 공개된 저장소를 우선적으로 점검.
원문: https://semgrep.dev/blog/2025/popular-github-action-tj-actionschanged-files-is-compromised/
개인의견:
저도 모노리포 프로젝트내에 공통 모듈이 많다보니 해당 tj-actions/change-files 를 사용하고 있었는데 오래된 버젼을 사용하고 있어서 큰 이슈는 없었는데, 많이 사용하는 깃헙 액션이니 만큼 챙겨보시면 좋을것 같습니다.
