🇰🇷 한글 설명
Quicly 라이브러리에서 QUIC 버전 1의 연결 ID(CID) 길이를 적절히 검증하지 않아 발생하는 서비스 거부(DoS) 취약점입니다. 공격자가 20바이트를 초과하는 CID를 포함한 패킷을 전송할 경우, 버퍼 오버런으로 인해 연결 상태가 손상되고 어설션 실패(Assertion Failure)가 발생하여 프로세스가 중단될 수 있습니다.
💡 쉬운 설명
데이터를 담는 바구니 크기는 20칸인데, 255칸짜리 데이터를 억지로 넣으려다 프로그램이 고장 나는 문제입니다. 이로 인해 서버가 갑자기 멈추거나 작동을 중단할 수 있습니다.
🇺🇸 원문 (English)
Quicly is an IETF QUIC protocol implementation intended primarily for use within the H2O HTTP server. Prior to commit 8b178e6, Quicly is vulnerable to a Denial of Service attack through connection state corruption. In QUIC Invariants, the maximum length of a Connection ID is 255 bytes, while QUIC version 1 further restricts the maximum to 20 bytes. Quicly implements QUIC version 1 and therefore its CID buffers are limited to 20 bytes. However, to be able to respond to unknown versions of QUIC, its packet decoder accepts Connection IDs of up to 255 bytes. As its CID buffers are merely 20 bytes long, Quicly must reject QUIC version 1 packets with Connection IDs longer than that. The command line tool bundled with Quicly has had that check, however the library itself lacked such enforcement. As a consequence, when used by applications that lack their own enforcement, the connection state becoming inconsistent to buffer overrun. Fortunately, the overflow stops within the allocated chunk of memory, but nevertheless, the bug leads to assertion failures. This issue has been fixed by commit 8b178e6.
📍 영향받는 시스템
Quicly 라이브러리 (commit 8b178e6 이전 버전)
⚔️ 공격 벡터
20바이트를 초과하는 Connection ID를 포함한 특수하게 조작된 QUIC 패킷 전송
🛡️ 대응 방법
Quicly 라이브러리를 commit 8b178e6 이상이 포함된 최신 버전으로 업데이트
🔧 검증 코드
명령어 결과에 8b178e6가 포함되어 있으면 패치가 완료된 상태이며, 결과가 없으면 취약한 버전일 가능성이 높습니다.
git log -1 --format=%H | grep 8b178e6
📊 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