GitHub, CodeQL 2.27.3 소개: Python 3.15 문법과 JSON 데이터 확장 지원, 공유 Actions 제어 흐름 그래프로 사용자 정의 쿼리가 깨질 수 있으며 릴리스 날짜는 10월 20일

Published · AI Daily — AI-assisted deep research, methodology & disclosure

2026년 11월 3일 GitHub는 CodeQL 2.27.3을 소개했습니다. Python 3.15 문법(match 리터럴의 단항 플러스, Unicode 17 식별자)과 frozendict·sentinel 내장 객체, JSON으로 쓰는 데이터 확장, 내장 소스가 없는 선택형 'ai' 위협 모델, C23 비트 정밀 정수, 여러 오탐 감소가 포함됩니다. 전체 릴리스 노트에는 두 가지 호환성 변경이 있습니다. macOS 27과 모든 Xcode 조합 또는 macOS 26과 Xcode 27에서는 컴파일 언어의 autobuild와 manual build가 지원되지 않습니다. GitHub Actions 제어 흐름 그래프도 공유 CFG 라이브러리로 바뀌어 관련 사용자 정의 쿼리는 수정이 필요할 수 있으며 기존 Completion 클래스는 제거되었습니다. 릴리스 노트는 2.27.3을 10월 20일로 적고 같은 페이지에 11월 2일 자 2.27.4도 있습니다. 실측 오탐률은 없습니다.

2026년 11월 3일 GitHub는 GitHub 코드 스캐닝의 정적 분석 엔진 CodeQL의 2.27.3 버전에 대한 변경 로그 글을 올렸습니다. 글에 따르면 이 버전은 Python 3.15의 새 언어 기능을 지원하고, 데이터 확장에 JSON 문법을 추가하며, C23의 비트 정밀 정수를 추가하고, 여러 언어에서 정확도를 개선합니다. 날짜는 주의해서 봐야 합니다. CodeQL 릴리스 노트는 2.27.3의 릴리스 날짜를 2026년 10월 20일로 적고 있고, 같은 페이지에 11월 2일 자 2.27.4가 이미 올라 있습니다. 따라서 11월 3일 글은 약 2주 전 버전을 설명하는 것이며 더 새로운 패치 버전이 있습니다.

CLI에서는 데이터 확장 파일을 YAML과 같은 구조의 JSON으로 쓸 수 있고 Java 스타일 주석도 허용됩니다. 확장자가 .json인 파일은 JSON으로, 나머지는 계속 YAML로 파싱됩니다. 다른 도구로 확장 파일을 생성하는 팀에는 기계가 만들고 검증하기 쉬운 JSON이 도움이 됩니다. 이 버전은 LLM이 생성한 데이터를 위한 선택형 'ai' 위협 모델도 추가했습니다. 내장 소스 모델이 없으므로, 무언가를 찾게 하려는 팀은 데이터 확장으로 자체 소스를 정의해야 합니다.

Python에서는 추출기가 Python 3.15 문법을 지원하며, match 리터럴 패턴의 단항 플러스와 Unicode 17 식별자를 포함합니다. CodeQL은 새 내장 객체 frozendict와 sentinel도 지원하고 frozendict 생성에 대한 데이터 흐름 모델링을 갖춥니다. 전체 릴리스 노트에는 글보다 많은 항목이 있는데, 예를 들면 unicodedata의 새 자소 반복자와 binascii의 새 인코딩 함수에 대한 오염 흐름입니다. 새 문법을 지원한다는 것은 코드를 파싱하고 분석할 수 있다는 뜻이며, 모든 쿼리가 새 관용 표현에 맞게 조정됐다는 뜻은 아닙니다.

다른 언어의 변경은 더 작습니다. C와 C++는 C23 _BitInt(N) 타입 지원과 BlazingMQ 메시지 클래스 일부의 흐름 요약이 생겼습니다. C#은 is 식과 switch 케이스의 위치 패턴을 통한 데이터 흐름을 지원하고, 프라이빗 레지스트리를 설정하면 프록시와 인증서 환경 변수를 NuGet 명령줄 도구에 전달합니다. Ruby는 Grape::API의 요청 하위 접근자(params, cookies, body.read, env 등)를 원격 흐름 소스로 취급합니다. 이런 추가는 결과를 바꿀 수 있습니다. 새 원격 소스 때문에 전에는 깨끗했던 코드에 새 경고가 나올 수 있습니다.

오탐을 줄이려고 여러 쿼리가 조정됐습니다. C++의 cpp/resource-not-released-in-destructor는 지역 별칭으로 해제되는 리소스를 인식합니다. C#의 cs/simplifiable-boolean-expression은 타입 정보가 불완전할 때 오탐이 줄었습니다. Java와 Kotlin의 SSRF 및 검증되지 않은 리디렉션 쿼리는 URI 호스트를 고정된 허용 목록과 대소문자 구분 없이 비교하는 경우를, 호스트를 지역 변수에 담은 경우까지 인식합니다. Python의 py/xxe, py/xml-bomb, py/nosql-injection은 신뢰할 수 없는 소스를 고를 때 설정된 위협 모델을 따르고, 기본은 여전히 원격 소스이며, 데이터 확장으로 모델링한 소스도 포함합니다. 마지막 변경은 이미 로컬 소스를 모델링한 팀에서 경고가 늘 수 있습니다.

전체 릴리스 노트에는 CLI 호환성 변경도 있습니다. macOS 27과 모든 Xcode 조합, 또는 macOS 26과 Xcode 27 조합에서는 컴파일 언어의 autobuild와 manual build가 지원되지 않습니다. 다른 호환성 변경은 GitHub Actions 분석에 있습니다. Actions의 제어 흐름 그래프가 공유 CFG 라이브러리를 쓰게 되어, 특정 CFG 노드, 간선, 기본 블록 경계에 의존하는 사용자 정의 쿼리는 수정이 필요할 수 있습니다. 기존 Completion 클래스는 제거되었고 DirectSuccessor, BooleanSuccessor, ReturnSuccessor 같은 간선 레이블을 쓰라고 안내합니다. GitHub는 새 CodeQL 버전이 github.com의 코드 스캐닝에 자동 배포되고, 이 기능은 GitHub Enterprise Server 3.24 릴리스에 포함되며, 더 오래된 GHES 사용자는 CodeQL을 수동으로 업그레이드할 수 있다고 말합니다. 글에는 실측 오탐률이 없으므로, 팀은 브랜치에서 다시 스캔해 경고를 비교한 뒤에야 이 변화를 순수한 개선으로 봐야 합니다.

요약하면, 2.27.3은 10월 20일 릴리스이고 11월 2일 자 2.27.4가 이미 있습니다. CLI에서는 macOS 27의 모든 Xcode 및 macOS 26·Xcode 27 조합에서 컴파일 언어 autobuild/manual build가 지원되지 않고, Actions 제어 흐름 그래프도 변경되었으며, 새 원격 소스는 새 경고를 낳을 수 있습니다. 실측 오탐률이 없으므로 브랜치에서 다시 스캔해 경고를 비교하세요. 새 문법 지원은 파싱과 분석이 가능하다는 뜻일 뿐, 모든 쿼리가 조정되었다는 뜻이 아닙니다.

Sources

FAQ

CodeQL 2.27.3에서 기존 쿼리를 깨뜨릴 수 있는 변경은 무엇인가요?

GitHub Actions 분석의 제어 흐름 그래프가 공유 CFG 라이브러리를 쓰게 되었습니다. 특정 CFG 노드, 간선, 기본 블록 경계에 의존하는 사용자 정의 쿼리는 수정이 필요할 수 있고 기존 Completion 클래스는 제거되었으므로 DirectSuccessor 같은 간선 레이블을 써야 합니다.

Python 3.15 지원이 모든 쿼리가 새 문법에 맞게 조정됐다는 뜻인가요?

아닙니다. 글은 추출기가 새 문법을 파싱하고 frozendict, sentinel 같은 내장 객체를 모델링한다고 말하므로 코드를 분석할 수 있다는 뜻입니다. 모든 쿼리가 새 표현에 맞게 조정됐다는 말은 없고 오탐률이나 탐지율도 없으니, 업그레이드 후 브랜치에서 경고를 비교하세요.

이 버전은 실제로 언제 릴리스되었나요?

GitHub 글은 2026년 11월 3일 자이고 최근 릴리스했다고 합니다. 그러나 CodeQL 릴리스 노트는 2.27.3을 2026년 10월 20일로 적고, 같은 페이지에 11월 2일 자 2.27.4도 올라 있습니다. 따라서 약 2주 전 버전이며 더 새로운 패치 버전이 있습니다.