Quicly — это реализация протокола IETF QUIC, предназначенная в первую очередь для использования на HTTP-сервере H2O. До фиксации 8b178e6 Quicly уязвим для атаки типа «отказ в обслуживании» из-за повреждения состояния соединения. В инвариантах QUIC максимальная длина идентификатора соединения составляет 255 байт, тогда как версия QUIC 1 дополнительно ограничивает максимальную длину до 20 байтов.
Quicly реализует QUIC версии 1, поэтому его буферы CID ограничены 20 байтами. Однако, чтобы иметь возможность реагировать на неизвестные версии QUIC, его декодер пакетов принимает идентификаторы соединения длиной до 255 байт. Поскольку его буферы CID имеют длину всего 20 байт, Quicly должен отклонять пакеты QUIC версии 1 с идентификаторами подключения, превышающими это значение.
Инструмент командной строки, поставляемый в комплекте с Quicly, имел эту проверку, однако в самой библиотеке такая проверка отсутствовала. Как следствие, при использовании приложениями, у которых нет собственной реализации, состояние соединения становится несовместимым с переполнением буфера. К счастью, переполнение останавливается в пределах выделенного фрагмента памяти, но, тем не менее, ошибка приводит к сбоям утверждения.
Эта проблема исправлена коммитом 8b178e6.
Показать оригинальное описание (EN)
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.
Характеристики атаки
Последствия
Строка CVSS v3.1
Тип уязвимости (CWE)
Уязвимые продукты 1
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
H2o Quicly
cpe:2.3:a:h2o:quicly:*:*:*:*:*:*:*:*
|
— |
2026-05-29
|