h2o — это HTTP-сервер с поддержкой HTTP/1.x, HTTP/2 и HTTP/3. До фиксации 6b5370d h2o уязвим для атаки типа «отказ в обслуживании» при вызове alloca при определенных условиях. При обслуживании статических файлов h2o строит путь к файлу в стеке, вызывая alloca.
Максимальный размер памяти, выделяемой с помощью alloca, может достигать ~600 КБ, что превышает размер стека pthread по умолчанию, используемый musl libc (128 КБ). Если объем памяти, выделенной alloca, превышает размер стека, сервер h2o аварийно завершает работу с ошибкой сегментации, пытаясь коснуться защитной страницы. Эта проблема исправлена коммитом 6b5370d.
Показать оригинальное описание (EN)
h2o is an HTTP server with support for HTTP/1.x, HTTP/2 and HTTP/3. Prior to commit 6b5370d, h2o is vulnerable to a Denial of Service attack when calling alloca under certain conditions. When serving static files, h2o builds the file path on stack, by calling alloca. The maximum size of the memory allocated using alloca can be as huge as ~600KB, which exceeds the default pthread stack size used by musl libc (128KB). If the amount of memory allocated by alloca exceeds the stack size, the h2o server crashes with a segmentation fault, while it tries to touch the guard page. This issue has been fixed by commit 6b5370d.
Характеристики атаки
Последствия
Строка CVSS v3.1
Тип уязвимости (CWE)
Уязвимые продукты 1
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
H2o H2o
cpe:2.3:a:h2o:h2o:*:*:*:*:*:*:*:*
|
— |
2026-05-29
|