CVE-2024-56649
Açıklama
Linux çekirdeğinde aşağıdaki güvenlik açığı giderilmiştir: net: enetc: SI'lar desteklemiyorsa preemptible TC'leri yapılandırmayın Hem ENETC PF hem de VF sürücüleri, MQPRIO'yu yapılandırmak için enetc_setup_tc_mqprio() işlevini paylaşır. Ve enetc_setup_tc_mqprio(), preemptible TC'leri yapılandırmak için enetc_change_preemptible_tcs() işlevini çağırır. Ancak, yalnızca PF preemptible TC'leri yapılandırabilir. Çünkü yalnızca PF ilgili kayıtlara sahiptir, VF ise bu kayıtlara sahip değildir. Bu nedenle VF için hw->port işaretçisi NULL'dır. Dolayısıyla VF, var olmayan bir kayda erişirken geçersiz bir işaretçiye erişecek ve bu da çökme sorununa yol açacaktır. Basitleştirilmiş günlük aşağıdaki gibidir. root@ls1028ardb:~# tc qdisc add dev eno0vf0 parent root handle 100: \ mqprio num_tc 4 map 0 0 1 1 2 2 3 3 queues 1@0 1@1 1@2 1@3 hw 1 [ 187.290775] Unable to handle kernel paging request at virtual address 0000000000001f00 [ 187.424831] pc : enetc_mm_commit_preemptible_tcs+0x1c4/0x400 [ 187.430518] lr : enetc_mm_commit_preemptible_tcs+0x30c/0x400 [ 187.511140] Call trace: [ 187.513588] enetc_mm_commit_preemptible_tcs+0x1c4/0x400 [ 187.518918] enetc_setup_tc_mqprio+0x180/0x214 [ 187.523374] enetc_vf_setup_tc+0x1c/0x30 [ 187.527306] mqprio_enable_offload+0x144/0x178 [ 187.531766] mqprio_init+0x3ec/0x668 [ 187.535351] qdisc_create+0x15c/0x488 [ 187.539023] tc_modify_qdisc+0x398/0x73c [ 187.542958] rtnetlink_rcv_msg+0x128/0x378 [ 187.547064] netlink_rcv_skb+0x60/0x130 [ 187.550910] rtnetlink_rcv+0x18/0x24 [ 187.554492] netlink_unicast+0x300/0x36c [ 187.558425] netlink_sendmsg+0x1a8/0x420 [ 187.606759] ---[ end trace 0000000000000000 ]--- Ayrıca, bazı PF'ler de preemptible TC'lerin yapılandırılmasını desteklemez; örneğin LS1028A üzerindeki eno1 ve eno3. VF'lerde olduğu gibi çökme yaşanmaz, ancak bu PF'lerin bu uygulanmamış kayıtlara erişmesini engellemeliyiz.
Nasıl düzeltilir
- linux linux_kernel6.6.66, 6.12.5 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 | 6.4 ≤ v < 6.6.66, 6.7 ≤ v < 6.12.5, 6.13 | 6.6.66, 6.12.5 |
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.