CodeQL 2.26.4 실무 점검: GitHub Actions 경고가 달라지는 이유
CodeQL 2.26.4의 언어별 분석 개선과 GitHub Actions 경고 변화를 검토하는 방법.
CodeQL 2.26.4는 Go 1.27 지원과 함께 Rust, Java·Kotlin, JavaScript·TypeScript, Python, C#, GitHub Actions 분석을 조정한 릴리스다. 분석기 업데이트 뒤 경고 위치와 개수가 바뀔 수 있으므로 단순 전후 비교보다 쿼리 변경의 이유를 확인해야 한다.
언어 지원과 데이터 흐름 개선
Go 1.27이 지원되고 Rust 데이터 흐름 경고는 실제 source와 sink 노드를 기준으로 더 정확한 위치를 가리킨다. Java·Kotlin에는 Spring R2DBC DatabaseClient와 SPI의 SQL injection sink 모델이 추가됐다. Python은 list.extend와 list.insert를 통한 taint 흐름도 추적한다.
GitHub Actions 탐지가 엄격해졌다
이벤트 payload의 actor 필드는 해당 이벤트가 실제로 그 필드를 제공할 때만 보호 조건으로 인정된다. actions/unpinned-tag는 재사용 워크플로의 변경 가능한 참조도 탐지한다. 외부 Action과 reusable workflow는 중요한 경우 커밋 SHA 고정을 검토할 만하다.
새 경고가 곧 새 취약점은 아니다
경고 위치가 이동하면 기존 항목이 닫히고 새 항목이 열린 것처럼 보일 수 있다. 반대로 C# 일부 쿼리는 ASP.NET Core antiforgery 설정과 nameof 표현식을 더 정확히 이해해 오탐을 줄인다. 업데이트 전후에는 쿼리 ID와 데이터 흐름을 함께 비교한다.
업데이트 체크리스트
- 기준 브랜치의 기존 결과를 보존한다.
- 새 경고를 언어와 쿼리 ID별로 분류한다.
- Actions 경고는 이벤트 종류와 참조 방식까지 확인한다.
- GHES 사용자는 포함 버전이나 공식 수동 업그레이드 절차를 확인한다.
결론
이번 릴리스의 가치는 지원 버전 확대보다 실제 프레임워크와 워크플로 조건을 더 세밀하게 모델링하는 데 있다. 경고 수 자체보다 탐지 논리의 변화와 팀의 우선순위를 연결해 검토하는 것이 안전하다.