H3 — это минимальная структура H(TTP). В версиях с 2.0.0-0 по 2.0.1-rc.16 метод mount() в h3 использует простую проверку startsWith(), чтобы определить, попадают ли входящие запросы под префикс пути смонтированного субприложения. Поскольку эта проверка не проверяет границу сегмента пути (т. е., что следующий символ после базы — `/` или конец строки), промежуточное программное обеспечение, зарегистрированное при монтировании, например `/admin`, также будет выполняться для несвязанных маршрутов, таких как `/admin-public`, `/administrator` или `/adminstuff`.
Это позволяет злоумышленнику активировать промежуточное программное обеспечение, устанавливающее контекст, на путях, которые оно никогда не предназначало для покрытия, потенциально загрязняя контекст запроса непреднамеренными флагами привилегий. Версия 2.0.2-rc.17 содержит патч.
Показать оригинальное описание (EN)
H3 is a minimal H(TTP) framework. In versions 2.0.0-0 through 2.0.1-rc.16, the `mount()` method in h3 uses a simple `startsWith()` check to determine whether incoming requests fall under a mounted sub-application's path prefix. Because this check does not verify a path segment boundary (i.e., that the next character after the base is `/` or end-of-string), middleware registered on a mount like `/admin` will also execute for unrelated routes such as `/admin-public`, `/administrator`, or `/adminstuff`. This allows an attacker to trigger context-setting middleware on paths it was never intended to cover, potentially polluting request context with unintended privilege flags. Version 2.0.2-rc.17 contains a patch.
Характеристики атаки
Последствия
Строка CVSS v3.1
Тип уязвимости (CWE)
Уязвимые продукты 16
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
H3 H3
cpe:2.3:a:h3:h3:2.0.1:rc1:*:*:*:node.js:*:*
|
— | — |
|
H3 H3
cpe:2.3:a:h3:h3:2.0.1:rc10:*:*:*:node.js:*:*
|
— | — |
|
H3 H3
cpe:2.3:a:h3:h3:2.0.1:rc11:*:*:*:node.js:*:*
|
— | — |
|
H3 H3
cpe:2.3:a:h3:h3:2.0.1:rc12:*:*:*:node.js:*:*
|
— | — |
|
H3 H3
cpe:2.3:a:h3:h3:2.0.1:rc13:*:*:*:node.js:*:*
|
— | — |
|
H3 H3
cpe:2.3:a:h3:h3:2.0.1:rc14:*:*:*:node.js:*:*
|
— | — |
|
H3 H3
cpe:2.3:a:h3:h3:2.0.1:rc15:*:*:*:node.js:*:*
|
— | — |
|
H3 H3
cpe:2.3:a:h3:h3:2.0.1:rc16:*:*:*:node.js:*:*
|
— | — |
|
H3 H3
cpe:2.3:a:h3:h3:2.0.1:rc2:*:*:*:node.js:*:*
|
— | — |
|
H3 H3
cpe:2.3:a:h3:h3:2.0.1:rc3:*:*:*:node.js:*:*
|
— | — |
|
H3 H3
cpe:2.3:a:h3:h3:2.0.1:rc4:*:*:*:node.js:*:*
|
— | — |
|
H3 H3
cpe:2.3:a:h3:h3:2.0.1:rc5:*:*:*:node.js:*:*
|
— | — |
|
H3 H3
cpe:2.3:a:h3:h3:2.0.1:rc6:*:*:*:node.js:*:*
|
— | — |
|
H3 H3
cpe:2.3:a:h3:h3:2.0.1:rc7:*:*:*:node.js:*:*
|
— | — |
|
H3 H3
cpe:2.3:a:h3:h3:2.0.1:rc8:*:*:*:node.js:*:*
|
— | — |
|
H3 H3
cpe:2.3:a:h3:h3:2.0.1:rc9:*:*:*:node.js:*:*
|
— | — |