CodeQL 2.27.2 분석 강화…Go 쿼리와 macOS 빌드 환경도 달라진다

개발 뉴스

CodeQL 2.27.2 분석 강화…Go 쿼리와 macOS 빌드 환경도 달라진다

언어별 모델 개선과 별개로 커스텀 쿼리·러너 호환성을 점검해야 한다. GitHub.com 자동 배포와 GHES 적용 경로도 다르다.

  • C++·Go·Rust·JavaScript 분석을 개선했다. 실제 사용하는 라이브러리와 구문에 해당하는 변화부터 확인해야 한다.
  • Go CFG 구조와 일부 API가 바뀌어 커스텀 쿼리의 컴파일·탐지 의미를 함께 검증해야 한다.
  • 컴파일 언어의 autobuild/manual 모드는 macOS 27 및 macOS 26·Xcode 27 조합에서 지원되지 않는다.
ADVERTISEMENTGoogle AdSense (Client/Slot ID 설정 대기)
ADVERTISEMENTGoogle AdSense (Client/Slot ID 설정 대기)
소스 코드 화면과 정적 분석 결과 화면을 나란히 둔 개발 검토 작업대의 설명용 AI 이미지
소스 코드와 분석 결과를 비교하는 작업 맥락을 표현했다. 실제 GitHub 화면이나 특정 저장소의 스캔 결과는 아니다.이미지: AI 생성 · 편집부

GitHub CodeQL 2.27.2는 분석할 수 있는 코드 경로를 넓히는 동시에 기존 분석 환경의 호환성도 바꾸는 업데이트다. 언어별 기능 추가만 읽고 적용하면 Go 커스텀 쿼리나 macOS 빌드에서 예상하지 못한 차이를 만날 수 있다. 개발팀이 이번 릴리스를 검토할 때는 분석 모델, 쿼리 구조, 실행 환경을 함께 살펴야 한다.

ADVERTISEMENTGoogle AdSense (Client/Slot ID 설정 대기)

CodeQL 2.27.2 발표일과 릴리스 문서 날짜를 구분하기

GitHub는 2026년 10월 9일 Changelog에서 CodeQL 2.27.2 개선 사항을 소개했다. 공식 릴리스 변경 문서의 날짜 표기는 10월 7일이다. 이 기사에서는 뉴스 발표일과 릴리스 문서 날짜를 구분한다. [S1] [S2]

GitHub code scanning 운영자에게 뉴스 날짜보다 중요한 것은 실제 분석에 쓰이는 버전이다. 검증할 때 코드 커밋, CodeQL 본체, 쿼리 팩, 빌드 환경을 함께 기록할 필요가 있다. 아래 검증 순서는 편집자의 운영 제안이며 GitHub가 보장하는 성능이나 결과가 아니다. CodeQL 2.27.2 변경점은 이런 기준선 위에서 비교해야 의미가 있다.

CodeQL C++·Go·Rust·JavaScript, 언어별 분석 개선

C++에는 std::regex의 ECMAScript 문법을 다루는 파서와 Comdb2 C API의 SQL 인젝션 모델이 추가됐다. Go는 github.com/coder/websocket 경로를 지원하고, Rust는 await와 함께 쓰는 비동기 블록의 데이터 흐름을 개선했다. JavaScript/TypeScript는 Workflow SDK 지시문 인식과 Hapi 요청 입력 추적을 보완했다. [S1]

CodeQL C++, CodeQL Go, CodeQL Rust, CodeQL JavaScript의 변화는 서로 다른 코드 경로에 관계된다. 모든 언어의 탐지율이 일률적으로 높아졌다고 해석하기보다, 사용 중인 라이브러리와 구문을 대조해 검토 대상을 좁히는 편이 좋다. 새 경고가 생기면 입력 추적의 변화와 실제 코드 문제를 함께 확인해야 한다.

ADVERTISEMENTGoogle AdSense (Client/Slot ID 설정 대기)
CodeQL 2.27.2의 C++ 정규식·SQL 입력 모델, Go WebSocket, Rust 비동기 데이터 흐름, JavaScript 프레임워크 분석 개선을 정리한 도식
언어별 변경 사항을 사용하는 구문·라이브러리에 맞춰 대조할 수 있도록 묶었다. 탐지율 수치나 모든 코드에 대한 개선을 뜻하지 않는다. [S1] [S2]자료: GitHub · 도식: 편집부

CodeQL Go CFG breaking change: 커스텀 쿼리가 우선 점검 대상

Go CFG는 공통 CFG 라이브러리를 사용하는 구조로 다시 작성됐다. 노드·엣지·기본 블록 경계 등에 의존하는 기존 쿼리는 수정이 필요할 수 있다. 공식 문서는 BasicBlocks::Cfg 제거, IfStmt.getCond 대신 IfStmt.getCondition 사용, 일부 반환 타입의 변경을 명시한다. [S2]

Go 소스코드가 그대로여도 커스텀 분석 쿼리의 가정은 달라질 수 있다. CodeQL 2.27.2 업그레이드 검증에서는 먼저 쿼리 컴파일 성공 여부를 확인하고, 이어 정상·위험 사례로 준비한 작은 테스트 코드에서 기대한 결과가 나오는지 비교하는 것이 합리적이다. 쿼리가 실행된다는 사실만으로 탐지 의미까지 같다고 결론 내려서는 안 된다.

macOS 27 CodeQL 제한, Xcode 조합까지 확인해야

컴파일 언어의 autobuild/manual 빌드 모드는 macOS 27에서 Xcode 버전과 관계없이 지원되지 않는다. macOS 26이라도 Xcode 27을 선택하면 같은 제한을 받는다. GitHub는 이 빌드 모드에 대해 macOS 26·Xcode 26 이하 조합을 안내하고 있다. [S1]

macOS 27 CodeQL 문제가 모든 언어와 모든 분석 방식의 중단을 뜻하는 것은 아니다. 실제 워크플로의 언어, 빌드 모드, 러너 이미지, 선택된 Xcode를 한 줄로 기록해 적용 범위를 판단해야 한다. build mode none 지원 개선은 진행 중인 작업으로 소개됐으므로, 이미 완성된 대체 경로로 간주하지 않는다. [S1]

환경 조합autobuild/manual 검토
macOS 27 + 모든 Xcode컴파일 언어에서 지원되지 않음
macOS 26 + Xcode 27컴파일 언어에서 지원되지 않음
macOS 26·Xcode 26 이하GitHub가 안내한 상한 조건. 실제 프로젝트 검증은 별도 필요

CodeQL 2.27.2 GHES 지원과 팀별 검증 순서

GitHub.com의 CodeQL 새 버전은 GitHub code scanning 이용자에게 자동 배포된다. GHES는 향후 릴리스에 새 기능이 포함될 예정이라고 안내돼 있다. 따라서 CodeQL 2.27.2 GHES 지원을 판단할 때 GitHub.com의 자동 배포 상태를 그대로 대입해서는 안 된다. [S1]

팀의 적용 순서는 다음처럼 구성할 수 있다. 먼저 현재 배포 경로와 버전 고정 여부를 확인한다. 다음으로 Go 커스텀 쿼리의 컴파일·의미를 비교한다. 이후 macOS 러너 조합을 확인하고, 같은 코드에서 업데이트 전후 결과를 검토한다. 새 경고를 무조건 취약점 증가로 해석하거나, 경고 감소를 곧바로 보안 개선으로 평가하는 일은 피한다.

이번 업데이트의 가치는 추가된 분석 모델과 운영 호환성을 함께 검토할 때 드러난다. 개발팀은 변경 목록을 읽는 데서 멈추지 말고, 실제 저장소의 쿼리와 러너 조합으로 결과를 재현해야 한다. 분석기의 변화와 코드의 변화를 나눠 기록하면 업그레이드 이후의 경고도 더 정확하게 해석할 수 있다.