🇰🇷 한글 설명
Erlang OTP의 inets httpd 모듈에서 발생하는 HTTP 요청 스머글링(HTTP Request Smuggling) 취약점입니다. 중복된 Content-Length 헤더를 처리할 때 서버와 프록시 간의 해석 차이가 발생하여, 공격자가 다음 요청의 시작 부분을 조작할 수 있습니다.
💡 쉬운 설명
웹 서버와 앞단에 있는 전달자(프록시)가 하나의 요청을 서로 다르게 해석하여 발생하는 문제입니다. 이를 통해 공격자는 몰래 다른 사용자의 요청에 자신의 데이터를 끼워 넣을 수 있습니다.
🇺🇸 원문 (English)
Inconsistent Interpretation of HTTP Requests ('HTTP Request Smuggling') vulnerability in Erlang OTP (inets httpd module) allows HTTP Request Smuggling.
This vulnerability is associated with program files lib/inets/src/http_server/httpd_request.erl and program routines httpd_request:parse_headers/7.
The server does not reject or normalize duplicate Content-Length headers. The earliest Content-Length in the request is used for body parsing while common reverse proxies (nginx, Apache httpd, Envoy) honor the last Content-Length value. This violates RFC 9112 Section 6.3 and allows front-end/back-end desynchronization, leaving attacker-controlled bytes queued as the start of the next request.
This issue affects OTP from OTP 17.0 before OTP 28.4.1, OTP 27.3.4.9 and OTP 26.2.5.18, corresponding to inets from 5.10 before 9.6.1, 9.3.2.3 and 9.1.0.5.
📍 영향받는 시스템
Erlang OTP 17.0 ~ 28.4.1 미만, 27.3.4.9 미만, 26.2.5.18 미만 (inets 5.10 ~ 9.6.1 미만, 9.3.2.3 미만, 9.1.0.5 미만)
⚔️ 공격 벡터
중복된 Content-Length 헤더를 포함한 특수하게 조작된 HTTP 요청을 전송하여 프록시와 백엔드 서버 간의 동기화를 깨뜨림
🛡️ 대응 방법
Erlang OTP를 최신 보안 패치 버전(OTP 28.4.1, 27.3.4.9, 26.2.5.18 이상)으로 업데이트하십시오.
🔧 검증 코드
출력된 OTP 버전이 취약점이 해결된 버전(28.4.1, 27.3.4.9, 26.2.5.18 이상)인지 확인하십시오.
erl -eval 'io:format("~s~n", [erlang:system_info(otp_release)]), halt().' -noshell