Когда необходимо отправить подтверждение вызова, tcp_respond() создает и отправляет подтверждение вызова и использует переданный mbuf. Когда подтверждение вызова не должно быть отправлено, функция возвращает и пропускает mbuf. Если злоумышленник либо находится на пути с установленным TCP-соединением, либо сам может установить TCP-соединение с затронутым компьютером FreeBSD, он может легко создавать и отправлять пакеты, которые соответствуют критериям подтверждения вызова, и вызывать утечку mbuf хоста FreeBSD для каждого созданного пакета, превышающего настроенные настройки ограничения скорости, т. е. с настройками по умолчанию созданные пакеты, превышающие первые 5, отправленные в течение периода 1 с, будут вызывать утечку mbuf.
Технически злоумышленники, работающие вне маршрута, также могут воспользоваться этой проблемой, угадывая IP-адреса, номера TCP-портов и, в некоторых случаях, порядковые номера установленных соединений и подменяя пакеты в направлении машины FreeBSD, но это труднее сделать эффективно.
Показать оригинальное описание (EN)
When a challenge ACK is to be sent tcp_respond() constructs and sends the challenge ACK and consumes the mbuf that is passed in. When no challenge ACK should be sent the function returns and leaks the mbuf. If an attacker is either on path with an established TCP connection, or can themselves establish a TCP connection, to an affected FreeBSD machine, they can easily craft and send packets which meet the challenge ACK criteria and cause the FreeBSD host to leak an mbuf for each crafted packet in excess of the configured rate limit settings i.e. with default settings, crafted packets in excess of the first 5 sent within a 1s period will leak an mbuf. Technically, off-path attackers can also exploit this problem by guessing the IP addresses, TCP port numbers and in some cases the sequence numbers of established connections and spoofing packets towards a FreeBSD machine, but this is harder to do effectively.
Характеристики атаки
Последствия
Строка CVSS v3.1