CodeQL 2.26.1이 놓치던 경로를 본다: Angular·WebFlux·slog 분석 확대

CodeQL 2.26.1은 Angular 메시지 이벤트, Spring WebFlux의 SSRF 경로, Go 구조화 로그 분석을 넓히고 Rust 오탐을 줄였습니다. 새 경고와 사용자 정의 모델 호환성을 점검할 때입니다.

CodeQL 2.26.1이 놓치던 경로를 본다: Angular·WebFlux·slog 분석 확대

GitHub가 7월 29일 CodeQL 2.26.1의 분석 범위 확대 내용을 공개했습니다. 이 버전 자체의 릴리스 날짜는 7월 15일입니다. GitHub.com의 코드 스캐닝에는 자동 배포되며, 자체 호스팅 환경이나 별도 CodeQL CLI를 고정해 쓰는 팀은 적용 버전을 직접 확인해야 합니다.

무엇이 바뀌었나

이번 업데이트는 새 언어를 추가하기보다 기존 프레임워크에서 데이터가 어디서 들어오고 어디로 흘러가는지를 더 정확히 모델링합니다.

  • JavaScript·TypeScript: Angular의 @HostListener('window:message', ...)@HostListener('document:message', ...)로 선언한 메시지 이벤트를 외부 입력으로 인식합니다. js/missing-origin-check가 출처 확인이 빠진 처리기를 찾을 수 있습니다.
  • Java·Kotlin: Spring WebFlux의 WebClient.UriSpec.uri 첫 번째 인자를 서버 측 요청 위조1의 대상 지점으로 봅니다. 이전보다 실제 경고가 늘어날 수 있습니다.
  • Go: Go 1.21 이상에서 사용하는 log/slog의 로거, With, WithGroup, 속성 값을 모델링해 로그 주입과 평문 기록 분석을 넓혔습니다.
  • Rust: 상수와 변수 데이터를 섞는 산술·비트 연산과 문자열 추가를 장벽으로 처리해 하드코딩된 암호 값 경고의 오탐을 줄였습니다.

개발자에게 왜 중요한가

정적 분석은 문법만 읽는 것으로 끝나지 않습니다. 어떤 API가 외부 입력을 만들고, 검증하며, 위험한 함수로 전달하는지 프레임워크별 의미를 알아야 합니다. 이번 변경은 Angular, Spring WebFlux, Go 구조화 로그처럼 널리 쓰이는 경로를 분석기가 더 잘 이해하게 됐다는 뜻입니다.

특히 WebFlux와 Angular 프로젝트에서는 코드가 바뀌지 않았는데도 새 경고가 생길 수 있습니다. 이는 업데이트가 취약점을 새로 만든 것이 아니라 기존 흐름을 이제 분석할 수 있게 된 결과일 수 있습니다. 경고 수 증가를 도구 품질 저하로 단정하기 전에 실제 데이터 흐름을 확인해야 합니다.

기존 프로젝트에 미치는 영향

GitHub.com의 기본 코드 스캐닝 사용자는 별도 설치 없이 새 분석을 받습니다. GitHub Enterprise Server에는 향후 릴리스에 포함될 예정이며, 인터넷에 연결되지 않은 자체 호스팅 환경은 지원 문서에 따라 CodeQL 버전을 수동으로 올릴 수 있습니다. CLI를 별도로 다운로드해 CI에서 고정한 팀도 codeql version과 액션 설정을 확인해야 합니다.

사용자 정의 C·C++ 데이터 흐름 모델을 운영한다면 호환성 변화도 살펴야 합니다. 모델 데이터의 필드 이름은 이제 MyNamespace::MyStruct::myField처럼 완전한 이름을 쓰는 방식이 권장됩니다. 짧은 필드 이름은 아직 작동하지만 GitHub는 12개월 뒤 지원을 제거할 예정이라고 안내했습니다.

업데이트 전 확인 사항

  • 기준 브랜치에서 기존 경고 수와 2.26.1 적용 뒤 경고 수를 비교합니다.
  • 새 WebFlux SSRF와 Angular 메시지 경고는 입력 검증·허용 목록·출처 확인을 코드 수준에서 검토합니다.
  • 오탐 억제 규칙을 먼저 추가하지 말고 경고 경로와 프레임워크 동작을 재현합니다.
  • C·C++ 사용자 정의 모델의 짧은 필드 이름을 완전한 이름으로 단계적으로 바꿉니다.
  • 자체 호스팅 환경은 지원되는 CLI·쿼리 팩 조합과 롤백 방법을 확인한 뒤 갱신합니다.

보안 영향은 어떻게 해석해야 하나

이번 릴리스는 특정 CVE를 수정하는 애플리케이션 패치가 아니라 분석기가 잠재적 취약 경로를 더 잘 찾도록 만드는 업데이트입니다. 새 경고가 곧 실제 공격 가능성을 뜻하지 않으며, 공개된 자료만으로 공격이 발생했다고 단정할 근거도 없습니다. 반대로 경고가 없다는 사실도 안전을 보증하지 않으므로 동적 시험, 의존성 점검, 코드 리뷰와 함께 사용해야 합니다.


1 서버 측 요청 위조(SSRF): 공격자가 서버가 요청할 주소를 조작해 내부 서비스나 허용되지 않은 외부 자원에 접근하게 만드는 취약점입니다.

GitHub Changelog — CodeQL 2.26.1 분석 확대 · CodeQL 공식 변경 기록 — 2.26.1 · GitHub Docs — CodeQL 코드 스캐닝