Pingora OSS, HTTP/1.x 요청 스머글링 취약점 패치 완료
Pingora 0.8.0에서 HTTP/1.x 요청 스머글링 취약점(CVE-2026-2833, CVE-2026-2835, CVE-2026-2836)이 발견됨
Upgrade 헤더 및 HTTP/1.0, Transfer-Encoding 관련 RFC 비준수(Non-RFC Compliance)로 인해 요청/응답 동기화(Desync) 문제 발생
공격자는 Pingora 프록시 레이어 보안 제어 우회, 세션 하이재킹(Session Hijacking), 캐시 포이즈닝(Cache Poisoning) 가능
Cloudflare CDN은 아키텍처상 영향 없으나, Pingora를 Ingress Proxy로 사용하는 경우 업그레이드 권고
Pingora 0.8.0 릴리스를 통해 취약점 패치 및 RFC 준수 강화(RFC Compliance), 캐시 키(Cache Key) 구성 개선
Upgrade 헤더를 악용한 요청 스머글링
본문에 따르면, 공격자는 Upgrade 헤더(Upgrade Header)를 사용하여 Pingora가 101 Switching Protocols 응답 전에 후속 바이트를 전달하도록 유도할 수 있었다.
RFC 9110에 따르면, 101 응답을 받기 전에는 후속 바이트를 업그레이드된 스트림으로 해석해서는 안 됨
Pingora는 101 응답 없이도 후속 요청을 전달하여 ACL(Access Control List) 우회 및 캐시 포이즈닝(Cache Poisoning) 가능
패치: 업스트림(Upstream)에서 101 Switching Protocols 응답을 받은 경우에만 후속 바이트를 처리하도록 수정
결과적으로, RFC 준수(RFC Compliance)를 통해 보안 취약점을 해결하고, 예상치 못한 동작을 방지했다.
HTTP/1.0, Transfer-Encoding, Content-Length의 상호 작용
글에 따르면, HTTP/1.0 요청에서 Transfer-Encoding과 Content-Length를 함께 사용했을 때, Pingora가 RFC를 잘못 해석하여 취약점이 발생했다.
RFC 9112에 따라, HTTP/1.0 요청에서 Transfer-Encoding을 사용하면 연결을 닫아야 함
Pingora는 Transfer-Encoding과 Content-Length를 모두 허용하여 요청 바디(Request Body)의 모호성 발생
공격자는 이 취약점을 이용하여 요청 스머글링(Request Smuggling)을 수행
패치를 통해, Pingora는 RFC에 따라 Transfer-Encoding과 Content-Length의 조합을 거부하고, HTTP/1.0 요청의 처리 방식을 개선했다.
캐시 키(Cache Key) 구성 문제
본문에서는 Pingora의 기본 캐시 키(Cache Key) 구성 방식이 캐시 포이즈닝(Cache Poisoning)을 유발할 수 있다고 지적한다.
기본 캐시 키는 URI 경로만 고려하여, 호스트 헤더(Host Header)나 HTTP 스키마(HTTP Scheme)를 고려하지 않음
서로 다른 호스트가 동일한 URI를 사용하면 캐시 충돌 발생
패치: 기본 캐시 키 구성을 제거하고, 사용자에게 캐시 키 구성 시 주의를 당부
Cloudflare는 내부적으로 호스트, 스키마 등 다양한 요소를 포함하는 캐시 키를 사용하고 있다.
Pingora의 보안 강화 노력
글에 따르면, Cloudflare는 Pingora의 보안 강화를 위해 RFC 준수(RFC Compliance)를 강화하고 있다.
Pingora는 레거시 HTTP 스택(Legacy HTTP Stack)과의 호환성을 위해 유연성을 유지했으나, 보안을 위해 RFC 표준을 엄격하게 준수하도록 변경
CONNECT 요청 거부 등, 잠재적 공격 벡터(Attack Vector) 차단
지속적인 보안 검토 및 취약점 개선을 통해 Pingora의 신뢰성 확보
결과적으로, Pingora는 보안 취약점을 해결하고, 더 안전한 프록시 프레임워크로 발전하고 있다.
Pingora 0.8.0 릴리스의 의미
본문은 Pingora 0.8.0 릴리스가 Pingora 사용자에게 미치는 영향과 함께, 오픈소스 커뮤니티의 중요성을 강조한다.
Pingora를 Ingress Proxy로 사용하는 경우, 0.8.0으로의 업그레이드 권장
취약점 보고자(Rajat Raghav)에게 감사를 표하며, 버그 바운티 프로그램(Bug Bounty Program)의 중요성 강조
Pingora 오픈소스 커뮤니티의 적극적인 참여와 기여에 대한 감사
결론적으로, Pingora 0.8.0 릴리스는 보안 취약점을 해결하고, 오픈소스 커뮤니티의 협력을 통해 더 나은 인터넷을 만드는 데 기여한다.