🇰🇷 한글 설명
AsyncHttpClient(AHC) 라이브러리에서 HTTP 응답 압축 해제 시 누적 출력 크기 제한이 없어 발생하는 취약점입니다. 공격자가 조작된 압축 응답을 보내면 클라이언트의 힙 메모리를 모두 소모하게 하여 OutOfMemoryError를 유발할 수 있습니다.
💡 쉬운 설명
압축된 데이터를 풀 때 크기 제한이 없어, 아주 작은 파일이 엄청나게 큰 파일로 변하게 만들어 컴퓨터 메모리를 가득 채우는 공격입니다. 이로 인해 프로그램이 갑자기 멈추거나 꺼질 수 있습니다.
🇺🇸 원문 (English)
The AsyncHttpClient (AHC) library allows Java applications to easily execute HTTP requests and asynchronously process HTTP responses. From 2.0.0 until 2.16.1 and 3.0.12, automatic response decompression on the HTTP/1.1 path uses ChannelManager.newHttpContentDecompressor() to install Http1ContentDecompressor without a cumulative output-size limit. A hostile or compromised server, or an attacker who can alter a response in transit, can send a small gzip, deflate, or snappy response that expands across chunks until the client exhausts its heap and raises OutOfMemoryError; brotli and zstd are also affected when their optional codecs are present. In versions 3.0.8 through 3.0.10, the HTTP/2 decompressor is also unbounded, so switching protocols does not mitigate the issue on those releases. A limit applied to each decode call is insufficient because the response can be delivered as many small chunks, so the fixed implementation tracks total decompressed bytes for the whole response. This issue is fixed in versions 2.16.1 and 3.0.12.
📍 영향받는 시스템
AsyncHttpClient 2.0.0 ~ 2.16.1 및 3.0.12 미만 버전 (3.0.8 ~ 3.0.10은 HTTP/2 포함)
⚔️ 공격 벡터
악의적인 서버가 압축 해제 시 크기가 무한히 확장되는 특수하게 조작된 HTTP 응답을 전송함
🛡️ 대응 방법
AsyncHttpClient를 2.16.1 또는 3.0.12 이상의 최신 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 결과에서 async-httpclient의 버전을 확인하여 취약한 범위에 해당하는지 체크합니다.
mvn dependency:list | grep async-httpclient
📊 CVSS Vector String
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
💻 영향받는 소프트웨어
IBM WebSphere Application Server