Kiota CVE-2026-105796: OpenAPI 설명서 기반 코드 주입 취약점 분석

Kiota CVE-2026-105796 취약점은 Java 및 PHP 생성기의 문서 주석 살균 과정에서 종결자를 중성화하지 않고 단순히 삭제한 탓에, 특정 문자열 조합만으로 종결자가 재형성되어 공격자가 임의의 코드를 주입할 수 있게 되는 결함입니다. 신뢰할 수 없는 OpenAPI 설명서로 클라이언트를 생성할 때 빌드 파이프라인이나 실행 환경에 심각한 보안 위험을 초래합니다.

CVE-2026-105796 취약점 개요

Kiota는 OpenAPI 설명서를 기반으로 API 클라이언트를 자동 생성하는 도구입니다. 이번에 발견된 CVE-2026-105796 취약점은 생성된 코드의 주석 처리 로직에 들어 있는 살균(Sanitization) 결함에서 비롯됩니다.

이 취약점의 위험도는 CVSS 3.1 기준 8.8점으로 ‘High’ 등급으로 평가됐습니다. 구체적인 CVSS 3.1 벡터는 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H로 기록되어 있으며, 네트워크 경로로 공격이 가능하고 낮은 복잡성으로 기밀성, 무결성, 가용성 모두에 높은 수준의 영향을 미칠 수 있음을 뜻합니다.

기술적 분석: 문서 주석 살균 결함

문제의 핵심은 Java 및 PHP 생성기가 주석 종결자(*/)를 처리하는 방식입니다. 보안을 위해 주석에 포함될 수 있는 종결자를 제거하는 살균 과정을 거치는데, 구현이 완전하지 않았습니다.

1. 종결자 재형성 메커니즘

Kiota의 살균기는 */ 종결자를 무효화(Neutralizing)하는 대신 Replace(*/, empty) 방식으로 단순 삭제했습니다. 두 글자짜리 시퀀스를 지웠을 때 삭제 지점의 앞뒤 문자가 겹치면서 다시 */ 종결자 시퀀스가 만들어질 수 있는 게 함정입니다. 공격자는 교묘하게 설계한 문자열로 주석 영역을 강제로 종료시키고, 그 뒤에 악성 코드를 삽입해 최종 생성물에 포함시킵니다.

2. Java 생성기의 추가 정규화 결함

Java 생성기에는 앞서 언급한 종결자 삭제 외에 정규화 순서 결함이 하나 더 있습니다.

  • 결함 프로세스: Java 살균기는 먼저 종결자를 삭제한 뒤, 이어서 비ASCII(non-ASCII) 문자를 제거하는 정규화 과정을 거칩니다.
  • 영향: 이 순서 탓에 비ASCII 문자가 제거된 이후의 문자열 조합이 새로운 */ 종결자를 형성하면서 코드 주입 경로가 생깁니다.

영향 범위 및 취약 버전

이 취약점은 Kiota의 특정 버전 범위에서 Java 및 PHP 생성기에 영향을 미칩니다. 특히 보안 백포트 버전에서도 같은 결함이 발견되었으니 주의가 필요합니다.

구분 취약 버전 범위 상세 내용
전체 영향 버전 0.5.0 이상 1.35.0 미만 Java 및 PHP 생성기 공통 영향
Java 정규화 결함 0.5.0 ~ 1.34.1 보안 백포트 릴리스 1.29.1 포함
PHP 구분자 변형 1.34.1 및 1.29.1 구분자 재형성 변형 존재
수정 버전 1.35.0 이상 두 가지 변형 모두 수정 완료

공격 성립 조건 및 실행 컨텍스트

취약한 버전의 Kiota를 사용한다고 해서 공격이 즉시 성공하지는 않습니다. 공격이 실제로 성립하려면 다음과 같은 네 가지 단계가 모두 충족되어야 합니다.

  1. 악성 OpenAPI 설명서 유입: 공격자가 조작한 OpenAPI 설명서가 시스템에 도달하거나, 신뢰 경계를 통과하지 못한 입력값이 설명서에 포함되어야 합니다.
  2. 클라이언트 코드 생성: 개발자 또는 자동화된 빌드 파이프라인이 해당 악성 설명서로 API 클라이언트를 생성해야 합니다.
  3. 산출물 로드 및 실행:
    • Java: 생성된 소스 코드를 컴파일한 뒤 클래스로 로드하는 단계입니다.
    • PHP: 생성된 산출물을 로드하는 단계입니다.
  4. 보안 컨텍스트 내 실행: 위 과정이 애플리케이션이 구동되는 보안 컨텍스트 또는 빌드 환경 안에서 실행되어야 합니다.

이 취약점은 외부에서 제공하는 OpenAPI 정의 파일을 검증 없이 빌드 파이프라인에 통합하는 환경에서 가장 위험합니다.

대응 방안 및 조치 사항

DevSecOps 엔지니어와 빌드 관리자는 다음의 조치 사항을 즉시 이행하는 것이 안전합니다.

1. Kiota 소프트웨어 업그레이드

가장 확실한 해결책은 Kiota를 1.35.0 버전 이상으로 업그레이드하는 것입니다. 1.35.0 버전에서는 Java의 정규화 순서 결함과 PHP의 구분자 재형성 변형이 모두 수정되었습니다.

2. 기존 생성 코드의 재생성(Regenerate)

도구만 업데이트하는 것으로는 부족합니다. 이전 버전의 생성기가 이미 만들어낸 클라이언트 코드는 취약한 상태로 남아 있을 수 있습니다. 그래서 다음 절차를 거치는 것이 좋습니다.

  • Kiota 1.35.0 이상 버전으로 업데이트 완료.
  • 기존에 생성되었던 모든 API 클라이언트 코드를 최신 버전의 생성기로 다시 생성(Regenerate).

3. 공급망 보안 강화

OpenAPI 설명서 역시 신뢰할 수 없는 외부 소스로부터 유입될 수 있는 공격 벡터라는 점을 인지하는 것이 중요합니다. 설명서 파일의 입력값 검증 프로세스를 도입하고, 빌드 파이프라인의 보안 컨텍스트를 최소 권한 원칙에 따라 격리하는 전략이 필요합니다.

댓글 남기기