원문 소식, 쉽게 읽기
GitHub는 2026년 10월 9일 CodeQL 2.27.2를 공개했다. CodeQL은 소스 코드를 데이터처럼 조회해 취약할 수 있는 흐름을 찾는 정적 분석 엔진으로, GitHub 코드 스캐닝의 기반이다. 프로그램을 실제 공격해 보는 대신 코드 구조와 데이터 이동을 분석한다. 기본 쿼리 모음에는 170개 CWE를 다루는 보안 쿼리 498개가 들어가고, 확장 모음은 32개 CWE를 더 다루는 쿼리 131개를 추가한다. CWE는 소프트웨어 약점 유형을 공통 번호로 정리한 목록이다. 출처
이번 버전은 C·C++, Go, Rust, JavaScript·TypeScript의 라이브러리와 언어 기능을 더 구체적으로 이해한다. C·C++ 분석은 std::regex에 들어가는 ECMAScript 정규식을 해석하고, Comdb2 데이터베이스의 SQL 주입 위험 지점과 Bloomberg BDE의 데이터 흐름 요약을 추가했다. Go는 github.com/coder/websocket 라이브러리를 모델링한다. 라이브러리를 모델링한다는 말은 외부 함수가 데이터를 어떻게 받고 돌려주는지 분석기가 미리 이해하도록 규칙을 제공한다는 뜻이다. 출처
Rust 분석은 속성 전반을 찾는 AnyAttr과 문서 주석을 찾는 DocComment을 지원하고, async-await 데이터 흐름과 네이티브 TLS 라이브러리 요약을 개선했다. JavaScript·TypeScript에서는 Workflow SDK의 use workflow·use step 지시어를 인식하며 Hapi 서버의 경로 등록과 사용자 입력 추적을 개선했다. 정적 분석은 모든 취약점을 자동으로 찾을 수 없지만, 해당 프레임워크를 쓰는 코드에서 분석기가 놓치던 연결 관계를 더 잘 따라갈 수 있다. 출처
운영 환경에는 중요한 제한이 생겼다. 컴파일 언어의 autobuild와 manual 빌드 모드는 macOS 27에서는 Xcode 버전과 관계없이 지원되지 않고, macOS 26과 Xcode 27 조합에서도 지원되지 않는다. Apple이 CodeQL 추출에 필요한 x86-64·arm64 다중 아키텍처 바이너리를 더 이상 함께 제공하지 않기 때문이다. 이 두 모드를 계속 써야 하는 팀에 GitHub가 제시한 최대 조합은 macOS 26과 Xcode 26이다. 소스를 빌드하지 않고 분석 데이터베이스를 만드는 build-mode: none의 지원은 개발 중이다. 출처
쿼리 결과와 확장 코드에도 변화가 있다. C#의 클릭재킹과 교차 사이트 스크립팅 쿼리는 오탐을 줄이도록 조정됐다. GitHub Actions 워크플로에서 고정되지 않은 태그를 찾는 쿼리는 신뢰하는 소유자를 !owner 형식으로 제외할 수 있다. CodeQL CLI는 일부 실패를 더 일관되게 처리한다. 한편 Go 제어 흐름 그래프 라이브러리는 공통 CFG 라이브러리로 옮겨졌다. 기존 내부 표현에 의존한 사용자 정의 Go 쿼리는 깨질 수 있어 업그레이드 전에 다시 실행하고 수정해야 한다. 출처
GitHub.com 코드 스캐닝은 CodeQL 새 버전을 자동으로 배포받는다. GitHub Enterprise Server는 향후 제품 릴리스에 포함되며, 이전 GHES 버전은 관리자가 CodeQL 번들을 수동으로 올릴 수 있다. 따라서 GitHub.com 사용자에게는 탐지 결과가 바뀌는 시점이 자동으로 다가오지만, 자체 관리 환경은 업그레이드 시점을 통제할 수 있다. 출처
OYOPICK의 시선
이번 업데이트의 실용적인 의미는 쿼리 수보다 분석기가 실제 프로젝트의 라이브러리와 빌드 환경을 얼마나 정확히 이해하는지에 있다. Workflow SDK나 Hapi, Rust async-await처럼 연결 관계를 놓치기 쉬운 영역을 모델링하면 개발자가 직접 보안 검사를 작성하지 않아도 더 넓은 코드 경로를 살필 가능성이 커진다. 다만 새 탐지와 오탐 조정은 경고 수를 늘리거나 줄일 수 있으므로, GitHub.com을 쓰는 팀은 배포 뒤 경고 변화와 기존 제외 규칙을 검토하는 편이 좋다.
macOS 제한과 Go 라이브러리 변경은 보안 도구도 운영 의존성을 가진 소프트웨어라는 점을 보여준다. CI에서 macOS 이미지를 자동으로 최신화하거나 사용자 정의 Go 쿼리를 유지한다면, 운영체제·Xcode·CodeQL 버전을 한 묶음으로 시험해야 한다. 새 버전을 곧바로 전 조직에 적용하기보다 대표 저장소에서 추출 성공 여부, 새 경고의 재현성, 사용자 정의 쿼리 테스트를 확인한 뒤 범위를 넓히는 방법이 현실적이다.
보안 분석이 더 많은 언어 기능과 프레임워크를 이해할수록 작은 팀도 전문적인 취약점 점검에 접근하기 쉬워질 수 있다. 그 가능성이 경고 개수 경쟁에 머물지 않고, 개발자가 원인을 이해하고 고칠 수 있는 설명과 안정적인 빌드 지원으로 이어지기를 바란다. 정적 분석은 실행 중 설정이나 외부 서비스 상태까지 모두 증명하지 못하므로 테스트, 의존성 관리, 사람의 검토와 함께 써야 한다.