🇰🇷 한글 설명
Apache Tomcat의 파이프라인 요청 처리 버그로, sendFile 기능 사용 시 이전 요청의 파일 전송 처리 완료 후 다음 파이프라인 요청이 손실되는 문제입니다. 이로 인해 사용자가 보낸 요청 A, B, C에 대해 A의 정상 응답, B에 대한 C의 응답, C에 대한 응답 없음 형태로 잘못된 응답이 반환될 수 있습니다.
💡 쉬운 설명
Tomcat 웹 서버가 여러 요청을 동시에 처리할 때 파일을 보내는 과정에서 다음 요청의 응답을 잘못된 요청으로 보내는 버그입니다. 사용자가 받는 응답이 자신이 보낸 요청과 맞지 않아 정보 유출 등의 문제가 발생할 수 있습니다.
🇺🇸 원문 (English)
A bug in the handling of the pipelined requests in Apache Tomcat 9.0.0.M1 to 9.0.0.M18, 8.5.0 to 8.5.12, 8.0.0.RC1 to 8.0.42, 7.0.0 to 7.0.76, and 6.0.0 to 6.0.52, when send file was used, results in the pipelined request being lost when send file processing of the previous request completed. This could result in responses appearing to be sent for the wrong request. For example, a user agent that sent requests A, B and C could see the correct response for request A, the response for request C for request B and no response for request C.
📍 영향받는 시스템
Tomcat 9.0.0.M1-M18, 8.5.0-8.5.12, 8.0.0.RC1-8.0.42, 7.0.0-7.0.76, 6.0.0-6.0.52
⚔️ 공격 벡터
파이프라인 처리가 활성화된 상태에서 sendFile을 포함한 HTTP 요청을 연속으로 전송하여 응답 혼동 유발
🛡️ 대응 방법
Tomcat을 패치된 버전으로 업그레이드: 9.0.0.M19+, 8.5.13+, 8.0.43+, 7.0.77+, 6.0.53+
🔧 검증 코드
설치된 Tomcat 버전을 확인하여 영향받는 범위(예: 8.5.0-8.5.12)에 해당하면 취약하며 업데이트가 필요함
dpkg -l tomcat* 2>/dev/null | grep -i version || rpm -qa tomcat\* 2>/dev/null | sort -V | tail -1