CVE-2026-45842
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: slip: rstate dizisi olmayan örneklerde VJ alma paketlerini reddet slhc_init(), 'alma sıkıştırması yok' anlamında belgelenmiş olan rslots == 0 yapılandırmasını geçerli olarak kabul eder. Bu durumda slhc_init() içindeki tahsis döngüsü atlanır; böylece comp->rstate NULL kalır ve comp->rslot_limit (struct slcompress'in kzalloc işleminden dolayı) 0 olarak kalır. Alma yardımcıları bu yapılandırmaya karşı koruma sağlamamaktadır. VJ başlığı açık bir bağlantı kimliği taşıdığında slhc_uncompress() fonksiyonu comp->rstate[x] adresine erişmeye çalışır ve daha sonra slhc_remember(), paketin slot numarasını yalnızca comp->rslot_limit ile karşılaştırdıktan sonra cs = &comp->rstate[...] atamasını yapar. rslot_limit 0 olduğu için slot 0 aralık kontrolünden geçer ve kod NULL olan rstate adresine erişmeye çalışır. Bu yapılandırmaya ağaç içinde PPP aracılığıyla ulaşılabilir. PPPIOCSMAXCID argümanını imzalı bir int değerinde saklar ve (val >> 16) aritmetik kaydırma kullanır. Bu nedenle 0xffff0000 gönderilmesi işaret genişlemesiyle -1 sonucunu verir, böylece val2 + 1 değeri 0 olur ve ppp_generic.c sonunda slhc_init(0, 1) fonksiyonunu çağırır. /dev/ppp açılışı ns_capable(CAP_NET_ADMIN) tarafından denetlendiği için tüm yol ayrıcalıksız bir kullanıcı ad alanından (user namespace) erişilebilirdir. Hatalı VJ durumu kurulduktan sonra, slot 0'ı seçen herhangi bir gelen VJ-sıkıştırılmış veya VJ-sıkıştırılmamış çerçeve, çekirdeği softirq bağlamında çökertebilir: Oops: general protection fault, probably for non-canonical address 0xdffffc0000000000: 0000 [#1] SMP KASAN NOPTI KASAN: null-ptr-deref in range [0x0000000000000000-0x0000000000000007] RIP: 0010:slhc_uncompress (drivers/net/slip/slhc.c:519) Call Trace: <TASK> ppp_receive_nonmp_frame (drivers/net/ppp/ppp_generic.c:2466) ppp_input (drivers/net/ppp/ppp_generic.c:2359) ppp_async_process (drivers/net/ppp/ppp_async.c:492) tasklet_action_common (kernel/softirq.c:926) handle_softirqs (kernel/softirq.c:623) run_ksoftirqd (kernel/softirq.c:1055) smpboot_thread_fn (kernel/smpboot.c:160) kthread (kernel/kthread.c:436) ret_from_fork (arch/x86/kernel/process.c:164) </TASK> rstate'e dokunmak yerine bu tür örneklerde alma tarafı reddedilir. slhc_uncompress(), mevcut 'bad' etiketine düşerek sls_i_error değerini artırır ve toss durumuna girer. slhc_remember() da bunu açık bir sls_i_error artışı ve ardından slhc_toss() çağrısı ile aynalar; eksik rstate dahili bir yapılandırma durumu olduğundan, runt bir paket olmadığı için burada sls_i_runt sayacı kullanılmaz. İletim yolu etkilenmemiştir: Kullanıcı alanından rslots değerini alan tek ağaç içi çağırıcı (ppp_generic.c) hala tslots >= 1 sağlar ve slip.c her zaman slhc_init(16, 16) çağrısını yapar, dolayısıyla comp->tstate geçerli kalmaya devam eder ve slhc_compress() çalışmaya devam eder.
Nasıl düzeltilir
- linux linux_kernel2.6.33, 3.3, 3.5, 3.11, 3.13, 3.15, 3.19, 4.2, 5.10.258, 5.15.209, 6.1.175, 6.6.141, 6.12.91, 6.18.33, 7.0.10 ya da sonraki bir sürüm
- git.kernel.org/stable/c/3d71c961febddd855d3ae9a519eeb96c8023f430
- git.kernel.org/stable/c/4aa9eca6fda2919027dfd7a7cc69334982d89586
- git.kernel.org/stable/c/72304fec672e8aac9ee7b9c475db96b37cca8d8d
- git.kernel.org/stable/c/7b0d9e878ec2b21d99ae8051b3dda59cdb66c152
- git.kernel.org/stable/c/9e1ff0eead073c4f46d874ad2526b7dda5465faf
- git.kernel.org/stable/c/c6980e8b1a86288167f34966fa5219031999b6f1
- git.kernel.org/stable/c/de42f86e2cf5028a97e74c25869d1a962b13c301
- git.kernel.org/stable/c/e76607442d5b73e1ba6768f501ef815bb58c2c0e
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| linux linux_kernel | 2.6.32.70 ≤ v < 2.6.33, 3.2.75 ≤ v < 3.3, 3.4.111 ≤ v < 3.5, 3.10.96 ≤ v < 3.11, 3.12.53 ≤ v < 3.13, 3.14.60 ≤ v < 3.15, 3.18.27 ≤ v < 3.19, 4.1.17 ≤ v < 4.2, 4.3.5 ≤ v < 5.10.258, 5.11 ≤ v < 5.15.209, 5.16 ≤ v < 6.1.175, 6.2 ≤ v < 6.6.141, 6.7 ≤ v < 6.12.91, 6.13 ≤ v < 6.18.33, 6.19 ≤ v < 7.0.10 | 2.6.33, 3.3, 3.5, 3.11, 3.13, 3.15, 3.19, 4.2, 5.10.258, 5.15.209, 6.1.175, 6.6.141, 6.12.91, 6.18.33, 7.0.10 |
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.