CodeQL 2.27.2 업데이트: macOS 27 빌드 제한과 언어별 분석 변화

Quick Answer
CodeQL 2.27.2에서 어떤 macOS·Xcode 빌드가 제한되고 언어별 분석과 자체 Go 쿼리는 무엇을 점검해야 하나요?
CodeQL 2.27.2 업데이트에서 먼저 확인할 사항은 macOS 빌드 추적 제한과 Go 사용자 정의 쿼리의 호환성입니다. 컴파일 언어의 autobuild·manual 분석은 macOS 27에서 Xcode 버전과 관계없이 지원되지 않으며, macOS 26에서도 Xcode 27을 선택하면 지원되지 않습니다. 해당 모드는 macOS 26·Xcode 26 이하 조합을 사용하도록 안내됐습니다. 모든 macOS 분석이 중단된다는 의미로 확대해서 해석하지 마세요.
Reading Guide
이 글에서 해결할 문제
- 이런 분께
- CodeQL 2.27.2 업데이트의 macOS 빌드 제한과 언어별 분석·쿼리 호환성을 확인하려는 보안·CI 담당자
- 읽고 나면
- OS·Xcode·언어·빌드 모드별 영향을 구분하고 자체 쿼리와 스캔 결과를 검증할 수 있습니다.
- 다루는 범위
- 2026년 10월 11일 공식 릴리스 분석입니다. 실제 CodeQL 스캔·빌드·탐지 성능을 측정하지 않았습니다.
- 직접 확인
- OS·선택된 Xcode·언어·빌드 모드를 기록합니다.
- macOS 제한 조합을 확인합니다.
- Go 사용자 정의 CFG 쿼리를 검증합니다.
- 데이터 확장과 로그 파서를 점검합니다.
- 동일 커밋·suite·분석 범위에서 결과를 비교합니다.
CLI 릴리스 날짜는 2026년 10월 7일, GitHub 변경 기록의 소개 날짜는 10월 9일입니다. 10월 11일 공식 자료를 대조했습니다. 아래 CI 점검 절차는 편집부 권고이며 실제 저장소의 스캔·빌드 성공이나 탐지 성능을 측정한 기록은 아닙니다.
macOS 27·Xcode 27 제한 적용 범위
| 실행 환경 | 컴파일 언어 autobuild·manual | 판단 |
|---|---|---|
| macOS 27 + 모든 Xcode 버전 | 지원되지 않음 | Xcode만 낮추는 것으로 해결된다고 가정하지 않기 |
| macOS 26 + Xcode 27 | 지원되지 않음 | 실제로 선택된 Xcode 확인 |
| macOS 26 이하 + Xcode 26 이하 | 공식 안내의 대안 범위 | 프로젝트별 다른 지원 조건도 확인 |
GitHub는 빌드 추적에 필요한 x86-64/arm64 다중 아키텍처 바이너리의 제공 변경을 이유로 설명했습니다. macOS의 build mode none 지원 개선은 진행 중이라고 안내했으며, 모든 언어에서 즉시 사용할 수 있는 대안으로 보장하지 않았습니다. 근거: macOS 호환성 공지
CI에서 runner 이름만 보고 판단하지 마세요. OS 버전, 선택된 Xcode 경로, 분석 언어, build mode를 함께 기록해야 제한 대상인지 알 수 있습니다. 일반 빌드 성공과 CodeQL이 빌드를 추적해 데이터베이스를 만드는 성공도 구분해야 합니다.
현재 Mac 분석 환경을 확인하는 명령
sw_vers -productVersion
xcodebuild -version
xcode-select -p
uname -m
codeql version
이 명령은 설치·선택 상태를 확인하는 예시입니다. CodeQL CLI가 PATH에 없거나 빌드 도구가 없는 환경에서는 해당 명령이 실패할 수 있습니다. GitHub Actions로 실행한다면 로컬 Mac 결과보다 분석 작업의 실제 실행 로그를 우선 확인하세요.
환경을 바꿀 때에는 컴파일러·SDK·의존 패키지 요구사항도 함께 대조하세요. macOS만 낮춘 환경에 Xcode 27이 선택돼 있으면 제한 조합이 남을 수 있습니다. 반대로 다른 OS로 옮기면 플랫폼 전용 코드가 분석 대상에서 빠질 수 있어 추출된 코드 범위를 확인해야 합니다.
C/C++·Rust·JavaScript 분석에서 달라진 점
| 언어 | 이번 변경 | 프로젝트에서 볼 부분 |
|---|---|---|
| C/C++ | std::regex의 ECMAScript 문법 파싱, Comdb2 SQL 실행 sink, BDE 흐름 모델 추가 | 사용하는 API와 모델 범위 대조 |
| Rust | AnyAttr·DocComment 지원, await 비동기 블록 흐름과 TLS 라이브러리 모델 개선 | 관련 비동기·TLS 경로 검토 |
| JavaScript/TypeScript | Workflow SDK 지시어 인식, Hapi 래퍼를 통한 요청·핸들러 추적 개선 | 변경된 경고와 입력 흐름 확인 |
언어 지원 변경은 GitHub의 언어별 발표에 근거합니다. 모델은 분석기가 특정 API의 데이터 흐름을 이해하도록 돕는 정보입니다. 모델이 늘었다는 사실만으로 모든 저장소에서 경고가 증가하거나 특정 취약점을 모두 탐지한다고 판단할 수는 없습니다.
Go CFG 변경: 사용자 정의 쿼리 호환성 점검
Go 제어 흐름 그래프는 공통 CFG 라이브러리로 재작성됐습니다. 노드·간선·위치·기본 블록 등 기존 표현에 의존하는 쿼리는 수정이 필요할 수 있습니다. 주요 API 변경은 다음과 같습니다. 근거: Breaking Changes
- BasicBlocks::Cfg 제거
- ControlFlow::EntryNode·ExitNode 추가
- IfStmt.getCond 사용 중단 예정, IfStmt.getCondition으로 대체
- IfStmt.getThen·LoopStmt.getBody 반환형이 BlockStmt에서 Stmt로 확대
- SwitchStmt.getExpr 추가 및 일부 IR 명령 클래스 통합
Go에서는 github.com/coder/websocket 경로 모델도 추가됐습니다. 자체 쿼리가 있다면 이름 치환만으로 끝내지 말고 컴파일과 기대 결과를 확인하세요. 그래프의 의미와 도달 가능한 노드 범위가 바뀌었으므로, 컴파일이 통과하더라도 이전과 같은 결과가 나오는지 검증해야 합니다.
검증용 작은 코드에는 분기, range, defer, 함수 인자와 결과를 포함할 수 있습니다. 기존 쿼리가 어떤 경로를 기대했는지 기록한 다음 변경 후 결과와 대조하면 단순 출력 차이와 탐지 의미의 변화를 구분하기 쉽습니다.
C#·GitHub Actions와 CLI 변경사항
C#에서는 ASP.NET Core 헤더·CSP frame-ancestors 보호 인식이 개선됐고, Razor 태그 헬퍼의 WriteLiteral 속성 처리에 대한 XSS 오탐이 수정됐습니다. GitHub Actions의 actions/unpinned-tag는 ! 접두사로 신뢰 집합에서 소유자를 제외할 수 있습니다. 근거: 쿼리·라이브러리 변경
CLI는 잘못된 qlpack·from 값에 명확한 오류를 표시하고, YAML 데이터 확장의 signed 32-bit 범위 밖 정수를 거부합니다. stderr에 ERROR·WARNING 접두사가 붙지만 SARIF 등 구조화 출력은 그대로입니다. 근거: CLI 변경
로그 문자열을 직접 파싱하는 자동화라면 새 접두사로 분류가 달라지는지 확인하세요. 데이터 확장 실패를 분석 대상 코드의 오류와 혼동하지 말고, 사용자 정의 pack의 입력과 실행 실패 지점을 따로 검토해야 합니다.
업데이트 전후 결과를 비교하는 방법
| 단계 | 고정·확인할 항목 | 완료 기준 |
|---|---|---|
| 기준 기록 | 커밋, 언어, 빌드 모드, runner, CLI·pack, 쿼리 suite | 이전 결과를 재현할 정보 확보 |
| 추출 확인 | 빌드 로그와 분석 대상 파일 | 필요한 코드가 데이터베이스에 포함 |
| 자체 쿼리 확인 | 컴파일·테스트 기대값 | API 변경과 결과 의미 검토 |
| 경고 비교 | 추가·소멸 경고의 쿼리와 위치 | 모델 변경·오탐 수정·범위 누락 구분 |
| 운영 적용 | 대표 저장소 검증과 적용 담당자 | 스캔 결과 업로드까지 확인 |
예를 들어 업그레이드 후 경고가 줄었지만 분석 파일 수도 줄었다면, 보안 상태가 좋아졌다고 결론 내릴 수 없습니다. 같은 커밋과 비슷한 분석 범위에서 비교해야 합니다. 이 설명은 결과 해석 예시이며 특정 저장소의 실측 결과가 아닙니다.
경고가 줄었을 때 먼저 확인할 분석 범위
다음은 가상 비교 시나리오입니다. 버전 업데이트 뒤 경고 수가 줄어든 원인은 오탐 수정일 수도 있고, 추출 실패로 일부 코드가 빠진 결과일 수도 있습니다. 경고 수만으로 개선 여부를 판단하지 마세요.
| 전후 차이 | 다음 확인 |
|---|---|
| 경고 감소 + 분석 대상 파일 감소 | 빌드 추적과 추출 로그를 먼저 점검 |
| Razor 관련 경고 감소 + 분석 범위 유지 | 이번 XSS 오탐 수정에 해당하는지 쿼리·위치 대조 |
| Go 자체 쿼리 결과 변경 | CFG 변경과 테스트 기대값 검토 |
| 사용자 정의 pack 평가 실패 | 데이터 확장의 정수 범위와 입력 오류 확인 |
커밋 / 분석 언어 / build mode:
runner OS / 선택된 Xcode / CodeQL 버전:
query pack 버전 / suite / 분석 대상 범위:
추출 성공 여부 / 평가 성공 여부 / 업로드 결과:
추가 경고 / 소멸 경고 / 변경 이유:
자체 쿼리 테스트 결과 / 남은 확인사항:
CodeQL CLI 버전만 기록하면 pack이나 suite 변경이 섞인 비교를 놓칠 수 있습니다. 버전 고정 정책을 사용하는 팀이라면 어떤 구성요소를 언제 바꿨는지 함께 기록하고, 플랫폼 변경과 분석기 업데이트를 동시에 했을 경우 각각의 영향을 분리해 조사하세요.
자주 묻는 질문
macOS 27에서는 CodeQL 전체가 동작하지 않나요?
공지의 범위는 컴파일 언어 autobuild·manual의 빌드 추적입니다. 사용 언어와 모드를 먼저 확인하고 전체 분석 불가로 확대해서 해석하지 마세요.
Go 앱 소스를 반드시 수정해야 하나요?
CFG 호환성 변경은 주로 해당 표현과 API에 의존하는 사용자 정의 CodeQL 쿼리의 점검 대상입니다. Go 애플리케이션의 소스 수정이 일괄 요구된다는 의미는 아닙니다.
github.com과 GHES에는 동시에 적용되나요?
GitHub는 github.com code scanning에 새 버전을 자동 배포하며 GHES에는 향후 릴리스로 포함한다고 안내했습니다. 자체 CLI나 버전 고정 환경은 실행 로그에서 실제 사용 버전을 확인하세요. 근거: 배포 안내
관련 GitHub 보안 안내
Evidence & Limitations
근거·검증 범위·업데이트 기록
확인한 근거
GitHub CodeQL 업데이트 발표를 기준으로 핵심 사실을 확인하고, 사실과 편집부 해석을 구분했습니다.
경험 정보와 한계
직접 사용 후기나 자체 성능 시험이 아닌 공개 원문·공식 문서 기반 분석입니다. 실제 화면과 기능은 계정·기기·배포 시점에 따라 다를 수 있습니다.
게시·수정 기록
최초 게시 2026-10-11T22:29:00+09:00 · 최종 수정 2026. 10. 11.
2026년 10월 11일 작업별 판단 예시와 검증 기록 양식을 추가했습니다. 최초 발행일과 공식 자료 확인일은 유지했으며 예시는 실제 실측 결과와 구분했습니다.
전문 검토 영역
IT 매거진 편집부가 AI·소프트웨어·개발·모바일·보안·테크 비즈니스 관점에서 구성하고 팩트체크 데스크가 출처와 표현을 검토했습니다.
검증에 사용한 주요 공식 자료
Related Articles
이 주제를 더 깊게 읽어보세요
현재 기사와 연결되는 배경·기술·시장 분석을 골라 바로 이동할 수 있습니다.


