CodeQL 2.26.0: Kotlin 2.4.0 지원 및 AI 프롬프트 주입 탐지
GitHub 코드 스캐닝의 핵심인 CodeQL 엔진이 2.26.0 버전으로 업데이트되며 정적 분석 기능 강화를 이룸
Kotlin 2.4.0 버전 지원을 추가하고, C#, Go, JavaScript/TypeScript 등 다양한 언어의 보안 취약점 탐지 능력 향상
특히 AI 시스템 프롬프트 주입(AI System Prompt Injection)을 탐지하는 새로운 JavaScript/TypeScript 쿼리 추가로 AI 보안 강화에 기여함
AI 시스템 프롬프트 주입(AI System Prompt Injection) 탐지
이번 업데이트의 핵심은 JavaScript/TypeScript 환경에서 AI 시스템 프롬프트 주입(AI System Prompt Injection) 공격을 탐지하는 새로운 쿼리 `js/system-prompt-injection`이 추가된 점이다.
작동 방식: 사용자가 제공한 신뢰할 수 없는 입력 값(Untrusted Input)이 AI 모델의 시스템 프롬프트(System Prompt)로 흘러 들어가는 경로를 추적함.
공격 영향: 공격자는 이를 통해 AI 모델의 기본 동작을 조작(Manipulate Behavior)하거나 민감한 정보를 탈취할 수 있음.
탐지 대상: OpenAI, Anthropic, Google GenAI SDK의 다양한 API 엔드포인트(Endpoint)를 포함하며, Sora 프롬프트, Realtime 세션 지침, 레거시 완료 프롬프트 등 광범위한 시나리오를 커버함.
이는 AI 기반 서비스의 보안 취약점(Security Vulnerability)을 선제적으로 발견하고 대응하는 데 중요한 역할을 함.
다국어 지원 강화 및 분석 정확도 향상
CodeQL 2.26.0은 Kotlin 2.4.0을 공식 지원하며, 기존 언어들에 대한 분석 정확도를 높이는 데 집중했다.
C#: Razor Page의 `OnGet`, `OnPost` 등 페이지 모델 파라미터(PageModel Parameters)를 원격 흐름 소스(Remote Flow Source)로 추가하여 SQL 인젝션(SQL Injection)과 같은 취약점 탐지 범위를 넓힘.
Go: Go 1.21에 추가된 `log/slog` 패키지를 모델링하여 `go/log-injection` 쿼리가 slog 함수 및 로거 메서드 사용 시의 문제점을 더 정확하게 탐지하도록 개선함.
Swift: CryptoKit 관련 모델링 개선으로 `swift/weak-sensitive-data-hashing` 및 `swift/weak-password-hashing` 쿼리의 탐지 결과가 증가함.
이러한 언어별 지원 확대 및 개선은 개발 생산성(Developer Productivity)과 코드 보안 수준을 동시에 향상시키는 데 기여함.
SSR F(Server-Side Request Forgery) 탐지 개선
JavaScript/TypeScript 관련 변경 사항 중 주목할 점은 서버 사이드 요청 위조(SSRF - Server-Side Request Forgery) 취약점 탐지 로직이 개선되었다는 것이다.
새로운 쿼리: `javascript/ssrf-ipv6-transition-incomplete-guard`는 IPv6 전환 주소 형식(IPv6 Transition Address Formats)을 이용한 우회 가능성을 탐지함.
기존 문제점: 기존 SSRF 방어 로직이 내부 IPv4 범위를 거부하더라도, IPv6 전환 주소를 사용하면 보호되지 않은 내부 네트워크 접근이 가능했음.
개선 효과: 이 쿼리는 불완전한 SSRF 방어 로직(Incomplete SSRF Guards)을 식별하여 보안 강화에 도움을 줌.
이는 특히 외부 입력을 받아 다른 서버로 요청을 보내는 애플리케이션에서 잠재적인 보안 위험을 줄이는 데 기여함.
GitHub Actions 및 GHES 배포 전략
CodeQL 2.26.0의 새로운 기능은 GitHub.com 사용자를 위한 GitHub 코드 스캐닝에 자동으로 배포된다.
GitHub Actions: `actions/pr-on-self-hosted-runner` 쿼리가 최신 러너 레이블(Runner Labels)을 인식하도록 업데이트되어 오탐(False Positives) 감소함. 또한 `actions/untrusted-checkout/medium`의 이름, 설명, 알림 메시지가 수정되어 비권한 컨텍스트(Nonprivileged Context) 적용 명확화.
GitHub Enterprise Server (GHES): 최신 기능은 향후 GHES 릴리스에 포함될 예정이며, 구버전 GHES 사용자는 수동으로 CodeQL 버전을 업그레이드해야 함.
이러한 배포 전략은 사용자가 항상 최신 보안 분석 기능을 활용할 수 있도록 보장하며, 엔터프라이즈 환경에서의 유연한 적용을 지원함.