CVSS 3.1
Вероятност да бъде експлоатирана в следващите 30 дни (EPSS)
Атакува се
Време до експлоатация
Атакува се по мрежата, без особени условия, без вход и без действие от потребителя.
- Експлоатация: няма данни за експлоатация
- Атаката не може да се автоматизира
Описание
Оригинално описание
In the Linux kernel, the following vulnerability has been resolved: skbuff: fix coalescing for page_pool fragment recycling Fix a use-after-free when using page_pool with page fragments. We encountered this problem during normal RX in the hns3 driver: (1) Initially we have three descriptors in the RX queue. The first one allocates PAGE1 through page_pool, and the other two allocate one half of PAGE2 each. Page references look like this: RX_BD1 _______ PAGE1 RX_BD2 _______ PAGE2 RX_BD3 _________/ (2) Handle RX on the first descriptor. Allocate SKB1, eventually added to the receive queue by tcp_queue_rcv(). (3) Handle RX on the second descriptor. Allocate SKB2 and pass it to netif_receive_skb(): netif_receive_skb(SKB2) ip_rcv(SKB2) SKB3 = skb_clone(SKB2) SKB2 and SKB3 share a reference to PAGE2 through skb_shinfo()->dataref. The other ref to PAGE2 is still held by RX_BD3: SKB2 ---+- PAGE2 SKB3 __/ / RX_BD3 _________/ (3b) Now while handling TCP, coalesce SKB3 with SKB1: tcp_v4_rcv(SKB3) tcp_try_coalesce(to=SKB1, from=SKB3) // succeeds kfree_skb_partial(SKB3) skb_release_data(SKB3) // drops one dataref SKB1 _____ PAGE1 \____ SKB2 _____ PAGE2 / RX_BD3 _________/ In skb_try_coalesce(), __skb_frag_ref() takes a page reference to PAGE2, where it should instead have increased the page_pool frag reference, pp_frag_count. Without coalescing, when releasing both SKB2 and SKB3, a single reference to PAGE2 would be dropped. Now when releasing SKB1 and SKB2, two references to PAGE2 will be dropped, resulting in underflow. (3c) Drop SKB2: af_packet_rcv(SKB2) consume_skb(SKB2) skb_release_data(SKB2
Засегнати продукти
- Linux Linux: 53e0961da1c7bbdabd1abebb20de403ec237ec09 преди ba965e8605aee5387cecaa28fcf7ee9f61779a49; 53e0961da1c7bbdabd1abebb20de403ec237ec09 преди c4fa19615806a9a7e518c295b39175aa47a685ac; 53e0961da1c7bbdabd1abebb20de403ec237ec09 преди 72bb856d16e883437023ff2ff77d0c498018728a; 53e0961da1c7bbdabd1abebb20de403ec237ec09 преди 1effe8ca4e34c34cdd9318436a4232dcb582ebf4
- Linux Linux: 5.15; преди 5.15; 5.15.34 до 5.15.*; 5.16.20 до 5.16.*; 5.17.3 до 5.17.*; от 5.18 нататък
Вид слабост
История
- 26 февруари 2025 Публикувано
Други уязвимости в Linux Linux
Първоизточници
- https://www.cve.org/CVERecord?id=CVE-2022-49093
- https://nvd.nist.gov/vuln/detail/CVE-2022-49093
- https://git.kernel.org/stable/c/ba965e8605aee5387cecaa28fcf7ee9f61779a49
- https://git.kernel.org/stable/c/c4fa19615806a9a7e518c295b39175aa47a685ac
- https://git.kernel.org/stable/c/72bb856d16e883437023ff2ff77d0c498018728a
- https://git.kernel.org/stable/c/1effe8ca4e34c34cdd9318436a4232dcb582ebf4