В ядре Linux устранена следующая уязвимость:
xfrm: nat_keepalive: избежать двойного освобождения при ошибке отправки
nat_keepalive_send() освобождает skb поддержки активности всякий раз, когда IPv4 или IPv6
Помощник по отправке сообщает об ошибке. Эта очистка правильна только до того, как skb будет передан на выход.
путь. Как только ip_build_and_send_pkt() или ip6_xmit() становится владельцем,
сетевой стек, возможно, уже использовал skb, прежде чем вернуть
ошибка, поэтому освобождать его снова небезопасно.
Обработка случаев сбоя перед передачей обслуживания внутри nat_keepalive_send_ipv4()
и nat_keepalive_send_ipv6(), где вызывающая сторона по-прежнему владеет skb, и
оставьте nat_keepalive_send() ответственным только за семейную отправку и
Путь очистки неподдерживаемого семейства.
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: xfrm: nat_keepalive: avoid double free on send error nat_keepalive_send() frees the keepalive skb whenever the IPv4 or IPv6 send helper reports an error. That cleanup is only correct before the skb is handed to the output path. Once ip_build_and_send_pkt() or ip6_xmit() takes ownership, the networking stack may already have consumed the skb before returning an error, so freeing it again is unsafe. Handle the pre-handoff failure cases inside nat_keepalive_send_ipv4() and nat_keepalive_send_ipv6(), where the caller still owns the skb, and keep nat_keepalive_send() responsible only for family dispatch and the unsupported-family cleanup path.
Характеристики атаки
Последствия
Строка CVSS v3.1