Функция rtsock_msg_buffer() сериализует информацию о маршрутизации в буфер. В рамках этого он копирует структуры sockaddr в структуру sockaddr_storage в стеке. Предполагается, что поле длины исходного sockaddr уже проверено, но это не обязательно так, и вредоносная программа пользовательского пространства может создать запрос, который вызовет 127-байтовое переполнение.
На практике это переполнение немедленно перезаписывает канарейку для кадра стека rtsock_msg_buffer(), что приводит к панике после возврата функции. Эта ошибка позволяет непривилегированному пользователю аварийно завершить работу ядра, вызвав переполнение буфера стека в rtsock_msg_buffer(). В частности, переполнение повредит канареечное значение стека, которое проверяется при возврате функции; это смягчает влияние переполнения стека, вызывая панику ядра.
Могут существовать и другие ошибки ядра, которые позволяют пользовательскому пространству найти канареечное значение и, таким образом, свести на нет меры по снижению риска, после чего может стать возможным локальное повышение привилегий.
Показать оригинальное описание (EN)
The rtsock_msg_buffer() function serializes routing information into a buffer. As a part of this, it copies sockaddr structures into a sockaddr_storage structure on the stack. It assumes that the source sockaddr length field had already been validated, but this is not necessarily the case, and it's possible for a malicious userspace program to craft a request which triggers a 127-byte overflow. In practice, this overflow immediately overwrites the canary for the rtsock_msg_buffer() stack frame, resulting in a panic once the function returns. The bug allows an unprivileged user to crash the kernel by triggering a stack buffer overflow in rtsock_msg_buffer(). In particular, the overflow will corrupt a stack canary value that is verified when the function returns; this mitigates the impact of the stack overflow by triggering a kernel panic. Other kernel bugs may exist which allow userspace to find the canary value and thus defeat the mitigation, at which point local privilege escalation may be possible.
Характеристики атаки
Последствия
Строка CVSS v3.1
Тип уязвимости (CWE)
Уязвимые продукты 24
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Freebsd Freebsd
cpe:2.3:o:freebsd:freebsd:13.5:-:*:*:*:*:*:*
|
— | — |
|
Freebsd Freebsd
cpe:2.3:o:freebsd:freebsd:13.5:p1:*:*:*:*:*:*
|
— | — |
|
Freebsd Freebsd
cpe:2.3:o:freebsd:freebsd:13.5:p2:*:*:*:*:*:*
|
— | — |
|
Freebsd Freebsd
cpe:2.3:o:freebsd:freebsd:13.5:p3:*:*:*:*:*:*
|
— | — |
|
Freebsd Freebsd
cpe:2.3:o:freebsd:freebsd:13.5:p4:*:*:*:*:*:*
|
— | — |
|
Freebsd Freebsd
cpe:2.3:o:freebsd:freebsd:13.5:p5:*:*:*:*:*:*
|
— | — |
|
Freebsd Freebsd
cpe:2.3:o:freebsd:freebsd:13.5:p6:*:*:*:*:*:*
|
— | — |
|
Freebsd Freebsd
cpe:2.3:o:freebsd:freebsd:13.5:p7:*:*:*:*:*:*
|
— | — |
|
Freebsd Freebsd
cpe:2.3:o:freebsd:freebsd:13.5:p8:*:*:*:*:*:*
|
— | — |
|
Freebsd Freebsd
cpe:2.3:o:freebsd:freebsd:13.5:p9:*:*:*:*:*:*
|
— | — |
|
Freebsd Freebsd
cpe:2.3:o:freebsd:freebsd:14.3:-:*:*:*:*:*:*
|
— | — |
|
Freebsd Freebsd
cpe:2.3:o:freebsd:freebsd:14.3:p1:*:*:*:*:*:*
|
— | — |
|
Freebsd Freebsd
cpe:2.3:o:freebsd:freebsd:14.3:p2:*:*:*:*:*:*
|
— | — |
|
Freebsd Freebsd
cpe:2.3:o:freebsd:freebsd:14.3:p3:*:*:*:*:*:*
|
— | — |
|
Freebsd Freebsd
cpe:2.3:o:freebsd:freebsd:14.3:p4:*:*:*:*:*:*
|
— | — |
|
Freebsd Freebsd
cpe:2.3:o:freebsd:freebsd:14.3:p5:*:*:*:*:*:*
|
— | — |
|
Freebsd Freebsd
cpe:2.3:o:freebsd:freebsd:14.3:p6:*:*:*:*:*:*
|
— | — |
|
Freebsd Freebsd
cpe:2.3:o:freebsd:freebsd:14.3:p7:*:*:*:*:*:*
|
— | — |
|
Freebsd Freebsd
cpe:2.3:o:freebsd:freebsd:14.3:p8:*:*:*:*:*:*
|
— | — |
|
Freebsd Freebsd
cpe:2.3:o:freebsd:freebsd:14.4:rc1:*:*:*:*:*:*
|
— | — |
|
Freebsd Freebsd
cpe:2.3:o:freebsd:freebsd:15.0:-:*:*:*:*:*:*
|
— | — |
|
Freebsd Freebsd
cpe:2.3:o:freebsd:freebsd:15.0:p1:*:*:*:*:*:*
|
— | — |
|
Freebsd Freebsd
cpe:2.3:o:freebsd:freebsd:15.0:p2:*:*:*:*:*:*
|
— | — |
|
Freebsd Freebsd
cpe:2.3:o:freebsd:freebsd:15.0:p3:*:*:*:*:*:*
|
— | — |