Yamux — это мультиплексор потоков по надежным упорядоченным соединениям, таким как TCP/IP. В реализации Rust мультиплексора потоков Yamux и…
Yamux — это мультиплексор потоков по надежным упорядоченным соединениям, таким как TCP/IP. В реализации Rust мультиплексора потоков Yamux используется вектор для ожидающих кадров. Длина этого вектора не ограничена. Каждый раз, когда протокол Yamux требует отправки нового кадра, этот кадр добавляется в этот вектор. Это может быть запущено удаленно несколькими способами, например: 1. Открытие нового потока libp2p Identify. Это заставляет узел отправить свое сообщение Identify. Конечно, работает и любой другой протокол, вызывающий отправку данных. Чем больше ответ, тем больше данных ставится в очередь. 2. Отправка кадра Yamux Ping. Это приводит к постановке в очередь кадра Pong. При нормальных обстоятельствах эта очередь ожидающих кадров очищается после того, как они будут отправлены по сети. Однако злоумышленник может использовать механизм окна приема TCP, чтобы помешать жертве отправлять какие-либо данные: Не читая из TCP-соединения, окно приема никогда не будет увеличено, и жертва не сможет отправить какие-либо новые данные (именно так TCP реализует противодавление). Как только это произойдет, очередь ожидающих кадров Yamux начнет расти бесконечно. Очередь будет очищена только после закрытия базового TCP-соединения. Злоумышленник может вызвать у удаленного узла нехватку памяти, что приведет к прекращению соответствующего процесса операционной системой.
Продукт не управляет должным образом выделением ограниченного ресурса и его обслуживанием.
https://cwe.mitre.org/data/definitions/400.html →Открыть в коллекции CWE →Злоумышленник инициирует атаку исчерпания ресурсов, при которой большое количество небольших XML-сообщений доставляется с достаточно высокой частотой для обеспечения отказа в обслуживании или аварийного завершения работы цели. Транзакции, такие как повторяющиеся SOAP-транзакции, способны исчерпывать ресурсы быстрее, чем обычный флудинг, из-за дополнительных ресурсов, потребляемых протоколом SOAP, и ресурсов, необходимых для обработки SOAP-сообщений. Используемые транзакции несущественны при условии, что они вызывают потребление ресурсов на цели. Иными словами, это обычная флудинг-атака, усиленная за счёт использования сообщений, требующих дополнительной обработки на целевой стороне.
https://capec.mitre.org/data/definitions/147.html →Открыть в коллекции CAPEC →Злоумышленник пытается лишить легитимных пользователей доступа к ресурсу, непрерывно занимая конкретный ресурс с целью удержания его занятым как можно дольше. Основная цель злоумышленника состоит не в том, чтобы привести цель к аварийному завершению или проводить флудинг, что привлекло бы внимание защитников, а в том, чтобы многократно выполнять действия или эксплуатировать алгоритмические недостатки, чтобы данный ресурс оставался занятым и недоступным для легитимного пользователя. Тщательно формируя запросы, удерживающие ресурс занятым посредством, казалось бы, безобидных запросов, злоумышленник ограничивает или полностью лишает легитимных пользователей доступа к ресурсу.
https://capec.mitre.org/data/definitions/227.html →Открыть в коллекции CAPEC →Злоумышленник может реализовать атаку на программу, использующую неэффективную реализацию регулярных выражений (Regex), подобрав входные данные, приводящие к крайне неблагоприятному сценарию работы Regex. Типичный крайний сценарий характеризуется экспоненциальным временем работы относительно размера входных данных. Это объясняется тем, что большинство реализаций использует недетерминированный конечный автомат (NFA) в качестве основы алгоритма Regex, поскольку NFA допускает обратный просмотр и тем самым поддерживает более сложные регулярные выражения.
https://capec.mitre.org/data/definitions/492.html →Открыть в коллекции CAPEC →