В ядре Linux устранена следующая уязвимость:
veth: конвертировать skbs frag_list перед запуском XDP
Скб frag_list может достичь veth с установленным data_len, но nr_frags равен нулю.
veth_convert_skb_to_xdp_buff() преобразует только общие skbs,
заблокированы, имеют фрагменты [] или не имеют достаточного пространства. Позже он использует
skb_is_nonlinear(), чтобы решить, устанавливать ли XDP_FLAGS_HAS_FRAGS и
xdp_frags_size. Это предоставляет данные frag_list XDP, как если бы они хранились в frags[], но
фрагменты [] пусты.
Режим копирования AF_XDP может затем доверять поддельному фрагменту XDP.
метаданные, пройти пустую запись фрагмента и завершить работу memcpy() из
__xsk_rcv(). Направляйте нелинейные skbs через skb_pp_cow_data(), прежде чем подвергать их воздействию
XDP и объявлять фрагменты XDP только в том случае, если результирующий skb содержит фрагменты [].
skb_copy_bits() уже обрабатывает ввод frag_list, а skb_pp_cow_data()
строит вывод frags[] с помощью skb_add_rx_frag(), который является
Ожидается представление XDP в мультибуферном режиме.
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: veth: convert frag_list skbs before running XDP A frag_list skb can reach veth with data_len set but nr_frags zero. veth_convert_skb_to_xdp_buff() only converts skbs that are shared, locked, have frags[], or do not have enough headroom. It later uses skb_is_nonlinear() to decide whether to set XDP_FLAGS_HAS_FRAGS and xdp_frags_size. That exposes frag_list data to XDP as if it were stored in frags[], but frags[] is empty. AF_XDP copy mode can then trust the bogus XDP fragment metadata, walk an empty fragment entry, and crash in memcpy() from __xsk_rcv(). Route non-linear skbs through skb_pp_cow_data() before exposing them to XDP, and only advertise XDP frags when the resulting skb has frags[]. skb_copy_bits() already handles frag_list input, and skb_pp_cow_data() builds frags[] output with skb_add_rx_frag(), which is the representation XDP multi-buffer expects.
Характеристики атаки
Последствия
Строка CVSS v3.1