Yamux — это мультиплексор потоков по надежным упорядоченным соединениям, таким как TCP/IP. До версии 0.13.10 реализация Yamux в Rust могла вызывать панику при обработке созданного входящего фрейма данных, который устанавливает SYN и использует длину тела больше, чем DEFAULT_CREDIT (например, 262145). В первом пакете нового входящего потока создается состояние потока, и получатель ставится в очередь до завершения проверки тела слишком большого размера.
Если проверка не удалась, временный поток удаляется, и очистка может вызвать метод удаления(...).expect("поток не найден"), вызывая панику в конечном автомате соединения. Доступ к нему возможен удаленно через обычный сеанс Yamux и не требует аутентификации. Эта уязвимость исправлена в версии 0.13.10.
Показать оригинальное описание (EN)
Yamux is a stream multiplexer over reliable, ordered connections such as TCP/IP. Prior to 0.13.10, the Rust implementation of Yamux can panic when processing a crafted inbound Data frame that sets SYN and uses a body length greater than DEFAULT_CREDIT (e.g. 262145). On the first packet of a new inbound stream, stream state is created and a receiver is queued before oversized-body validation completes. When validation fails, the temporary stream is dropped and cleanup may call remove(...).expect("stream not found"), triggering a panic in the connection state machine. This is remotely reachable over a normal Yamux session and does not require authentication. This vulnerability is fixed in 0.13.10.
Характеристики атаки
Последствия
Строка CVSS v4.0
Тип уязвимости (CWE)
Уязвимые продукты 1
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Protocol Yamux
cpe:2.3:a:protocol:yamux:*:*:*:*:*:rust:*:*
|
— |
0.13.10
|