CVE-2026-105299 in Pingora
요약
\~에 의해 VulDB • 2026. 10. 20.
요약
0.9.0 버전 이전의 pingora-proxy에서 HTTP/1 업스트림 경로는 다운스트림 요청을 `upstream_request_filter`를 통해 통과시켜 클라이언트의 `Connection` 헤더, 기타 홉-바이-홅(hop-by-hop) 헤더, 또는 `Connection`이 지정한 헤더들을 제거하지 않은 채로 업스트림에 작성했습니다. 그러나 RFC 9110 섹션 7.6.1은 중간자(intermediaries)가 이러한 헤더들을 제거해야 한다고 요구합니다. HTTP/2 업스트림 경로는 이미 `Connection` 및 관련 HTTP/1 전용 헤더들을 제거하고 있었습니다. 따라서 클라이언트는 애플리케이션이 `upstream_request_filter`에서 추가하는 헤더(예: `Connection: keep-alive`, `X-Forwarded-For`)를 지명할 수 있습니다. 그러면 `Connection`을 존중하는 다운스트림 HTTP/1 중간자는 Pingora가 추가한 헤더가 오리지널 서버에 도달하기 전에 이를 제거하게 됩니다.
영향
이 취약점은 구체적으로 Pingora와 오리지널 서버 사이에 위치하며, `Connection` 지명(header nominations)을 처리하는 HTTP/1 중간자(예: Go의 `net/http/httputil.ReverseProxy`)가 존재하고, 해당 중간자가 추가한 헤더를 신뢰하는 오리지널 서버로 구성된 체인형 배포 환경에서 영향을 미칩니다. 원격 인증 공격자는 이러한 헤더들이 제거되도록 유도하여 권한 부여(authorization) 우회가 가능해집니다. 보고자는 오리지널 서버의 IP 기반 검증에 `X-Forwarded-For`를 사용하여, IP 제한이 적용된 엔드포인트에 대한 접근을 시연했습니다. 이는 Apache HTTP Server의 CVE-2022-31813과 동일한 유형의 문제입니다.
Cloudflare CDN 고객은 영향을 받지 않았습니다. 내부 Pingora 서비스에서는 위에서 설명한 체인형 배포가 존재하지 않으며, `Connection` 헤더는 Pingora 게이트웨이에 도달하기 전에 정제(sanitized)되기 때문입니다.
완화 조치: * pingora 0.9.0 이상으로 업그레이드하십시오. 기본적으로 Pingora는 이제 업스트림 요청에서 홉-바이-홅(hop-by-hop) 헤더 및 `Connection`이 지정한 헤더들을 제거하며, `Host`, `X-Forwarded-For`, `X-Forwarded-Host`, `X-Forwarded-Proto` 또는 의사(pseudo-)헤더를 지명하는 요청은 거부합니다. 이는 `PeerOptions::http_upstream_request_policy`(HttpUpstreamRequestPolicy)에 의해 제어됩니다. 수정 커밋: https://github.com/cloudflare/pingora/commit/28c18e6b6b04dd0bd937234e5950049e6d74cded , https://github.com/cloudflare/pingora/commit/ca23f1668eca8e78be7ba62ef0edbd458b40eeee * 오리지널 서버가 Pingora가 추가한 헤더에 의존하는 경우 `HttpUpstreamRequestPolicy::preserve()`를 사용하지 마십시오. 이는 이전의 통과(passthrough) 동작을 복원합니다. * 업그레이드가 불가능한 경우: `upstream_request_filter` 내에서 신뢰할 수 있는 헤더들을 추가하기 전에 `Connection` 헤더와 그것이 지정한 모든 헤더를 제거하십시오.
If you want to get best quality of vulnerability data, you may have to visit VulDB.