CVE-2026-22977
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: net: sock: sock_recv_errqueue fonksiyonundaki hardened usercopy paniği düzeltildi skbuff_fclone_cache, cb[] alanını uygun şekilde beyaz listeye alan skbuff_head_cache'in aksine, bir usercopy bölgesi tanımlanmadan oluşturulmuştur. Bu durum, CONFIG_HARDENED_USERCOPY etkinleştirildiğinde ve çekirdek sock_recv_errqueue() -> put_cmsg() aracılığıyla sk_buff.cb verilerini kullanıcı alanına kopyalamaya çalıştığında bir usercopy BUG() hatasına neden olur. Çökme şu durumlarda meydana gelir: 1. TCP, alloc_skb_fclone() kullanarak (skbuff_fclone_cache üzerinden) bir skb tahsis eder. 2. skb, önceden tahsis edilmiş fclone kullanılarak skb_clone() ile klonlanır. 3. Klonlanan skb, zaman damgası raporlaması için sk_error_queue kuyruğuna eklenir. 4. Kullanıcı alanı, recvmsg(MSG_ERRQUEUE) aracılığıyla hata kuyruğunu okur. 5. sock_recv_errqueue(), skb->cb içerisindeki serr->ee kısmını kopyalamak için put_cmsg() fonksiyonunu çağırır. 6. skbuff_fclone_cache'in bir usercopy beyaz listesi olmadığı için __check_heap_object() başarısız olur. skbuff_fclone_cache üzerinden tahsis edilen klonlanmış skb'ler soket hata kuyruğunda kullanıldığında, put_cmsg() aracılığıyla skb->cb içindeki sock_exterr_skb yapısına erişmek bir usercopy hardening ihlalini tetikler: [ 5.379589] usercopy: Kernel memory exposure attempt detected from SLUB object 'skbuff_fclone_cache' (offset 296, size 16)! [ 5.382796] kernel BUG at mm/usercopy.c:102! [ 5.383923] Oops: invalid opcode: 0000 [#1] SMP KASAN NOPTI ... [ 5.384903] Call Trace: [ 5.384903] <TASK> [ 5.384903] __check_heap_object+0x9a/0xd0 [ 5.384903] __check_object_size+0x46c/0x690 [ 5.384903] put_cmsg+0x129/0x5e0 [ 5.384903] sock_recv_errqueue+0x22f/0x380 [ 5.384903] tls_sw_recvmsg+0x7ed/0x1960 ... 296 olan çökme ofseti, skbuff_fclones içerisindeki skb2->cb kısmına karşılık gelmektedir: - sizeof(struct sk_buff) = 232 - offsetof(struct sk_buff, cb) = 40 - fclones içinde skb2.cb ofseti = 232 + 40 = 272 - çökme ofseti 296 = 272 + 24 (sock_exterr_skb.ee içerisinde) Bu yama, hardened usercopy kontrol hatasını önlemek için yerel bir yığın değişkenini geçici tampon (bounce buffer) olarak kullanır. [1] https://elixir.bootlin.com/linux/v6.12.62/source/net/ipv4/tcp.c#L885 [2] https://elixir.bootlin.com/linux/v6.12.62/source/net/core/skbuff.c#L5104 [3] https://elixir.bootlin.com/linux/v6.12.62/source/net/core/skbuff.c#L5566 [4] https://elixir.bootlin.com/linux/v6.12.62/source/net/core/skbuff.c#L5491 [5] https://elixir.bootlin.com/linux/v6.12.62/source/mm/slub.c#L5719
Nasıl düzeltilir
- linux linux_kernel5.10.248, 5.15.198, 6.1.161, 6.6.121, 6.12.66, 6.18.6 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| linux linux_kernel | 4.16 ≤ v < 5.10.248, 5.11 ≤ v < 5.15.198, 5.16 ≤ v < 6.1.161, 6.2 ≤ v < 6.6.121, 6.7 ≤ v < 6.12.66, 6.13 ≤ v < 6.18.6, 6.19 | 5.10.248, 5.15.198, 6.1.161, 6.6.121, 6.12.66, 6.18.6 |
Sürümünüzü kontrol edin
Ürünü seçin ve kullandığınız sürümü yazın; sürümün etkilenen aralıkta olup olmadığını görün.
Attack Surface Management
Alan adlarınıza bağlı varlıkları, bu varlıklarda çalışan teknolojileri ve bilinen zafiyetleri tek listede görün.