Java 26 지원과 여러 언어 분석 개선
CodeQL 2.24.3에서 Java 26 지원을 추가하고 여러 언어의 코드 분석 정확도를 개선했습니다.
교안에 영향
Java/Kotlin의 jakarta 네임스페이스를 쓰는 패키지는 경고 수가 늘어 예전 안내 글의 오탐 적음 설명이 맞지 않을 수 있습니다.
요약
- Java 26을 지원하고, Maven 프로젝트에서는 모든 모듈의 Maven POM 파일을 바탕으로 사용할 Java 버전을 선택하도록 바뀌었습니다. - JavaScript/TypeScript에서 mobx-react와 mobx-react-lite의 observer로 감싼 React components 지원이 추가되었습니다. - Python, Ruby, Java/Kotlin, Rust, C/C++, C#에서 새 쿼리 지원과 모델링 개선, 오탐 감소, C# 14 field keyword 지원이 반영되었습니다. - CodeQL 2.24.3의 개선 사항은 GitHub code scanning과 향후 GHES 릴리스에 포함됩니다.
바뀐 것
새 기능
- CodeQL이 Java 26을 지원합니다.
- JavaScript/TypeScript에서 mobx-react와 mobx-react-lite의 observer로 감싼 React components 지원이 추가되었습니다.
- Python에 새 AntiSSRF library 기반의 full SSRF sanitization barrier가 추가되었습니다.
- Rust에 neutral models(extensible: neutralModel) 지원이 추가되어 generated source, sink, flow summary models의 적용 위치를 제어할 수 있습니다.
- C# 14에서 properties의 field keyword 지원이 추가되었습니다.
개선
- Java 분석이 모든 프로젝트 모듈의 Maven POM 파일을 기준으로 사용할 Java 버전을 선택하도록 바뀌었습니다.
- Java 분석이 가능하면 모든 Maven 프로젝트에서 Java 17 이상을 사용해 빌드 호환성을 높이도록 시도합니다.
- Python에서 isSafe(x) == true와 isSafe(x) != false 같은 guard 표현도 자동으로 처리합니다.
- Ruby에서 Shellwords.escape와 Shellwords.shellescape를 통한 taint flow 추적이 command injection을 제외한 모든 queries에 적용됩니다.
- Java/Kotlin에서 javax로 시작하던 Java EE packages 모델링이 jakarta로 시작하는 packages까지 확장되었습니다.
- C/C++의 cpp/leap-year/unchecked-after-arithmetic-year-modification query에서 큰 수의 false positives를 줄이도록 개선했습니다.