🔍 CVE-2021-41130

6.4
CVSS Score
MEDIUM
2021-10-07
2026-06-17 04:07
✅ 완료

🇰🇷 한글 설명

Extensible Service Proxy(ESPv1)에서 HTTP 헤더 처리 미흡으로 인해 발생하는 취약점입니다. 공격자가 두 개의 'X-Endpoint-API-UserInfo' 헤더를 보내면, ESPv1이 첫 번째 헤더만 교체하고 두 번째 가짜 헤더를 애플리케이션에 그대로 전달하여 권한 우회를 허용할 수 있습니다.

💡 쉬운 설명

인증 정보를 담은 이름표가 두 개 전달될 때, 시스템이 가짜 이름표를 걸러내지 못하고 그대로 통과시키는 문제입니다. 이를 통해 공격자는 자신이 누구인지 속여서 시스템에 접근할 수 있습니다.

🇺🇸 원문 (English)

Extensible Service Proxy, a.k.a. ESP is a proxy which enables API management capabilities for JSON/REST or gRPC API services. ESPv1 can be configured to authenticate a JWT token. Its verified JWT claim is passed to the application by HTTP header "X-Endpoint-API-UserInfo", the application can use it to do authorization. But if there are two "X-Endpoint-API-UserInfo" headers from the client, ESPv1 only replaces the first one, the 2nd one will be passed to the application. An attacker can send two "X-Endpoint-API-UserInfo" headers, the second one with a fake JWT claim. Application may use the fake JWT claim to do the authorization. This impacts following ESPv1 usages: 1) Users have configured ESPv1 to do JWT authentication with Google ID Token as described in the referenced google endpoint document. 2) Users backend application is using the info in the "X-Endpoint-API-UserInfo" header to do the authorization. It has been fixed by v1.58.0. You need to patch it in the following ways: * If your docker image is using tag ":1", needs to re-start the container to pick up the new version. The tag ":1" will automatically point to the latest version. * If your docker image tag pings to a specific minor version, e.g. ":1.57". You need to update it to ":1.58" and re-start the container. There are no workaround for this issue.

📍 영향받는 시스템

Extensible Service Proxy (ESPv1) 1.58.0 미만 버전

⚔️ 공격 벡터

클라이언트가 조작된 두 개의 'X-Endpoint-API-UserInfo' HTTP 헤더를 전송하여 애플리케이션의 권한 검증을 우회함

🛡️ 대응 방법

ESPv1 버전을 1.58.0 이상으로 업데이트하거나, Docker 태그를 최신 버전으로 갱신하여 컨테이너를 재시작함

🔧 검증 코드

출력된 ESP 이미지의 태그 버전이 1.58.0 이상인지 확인하십시오.

Shell / Script
docker images | grep esp | awk '{print $2, $3}'

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N

💻 영향받는 소프트웨어

Docker