CVE-2025-39985

Yüksek

Açıklama

Linux çekirdeğinde aşağıdaki güvenlik açığı giderilmiştir: can: mcba_usb: arabellek taşmasını önlemek için ndo_change_mtu() dolduruldu Bir PF_PACKET göndermek, CAN çerçevesi mantığını atlamaya ve doğrudan bir CAN sürücüsünün xmit() işlevine ulaşmaya olanak tanır. PF_PACKET çerçevesi tarafından gerçekleştirilen tek kontrol, skb->len değerinin arayüzün MTU değerine sığdığından emin olmaktır. Ne yazık ki, mcba_usb sürücüsü net_device_ops->ndo_change_mtu() işlevini doldurmadığı için, bir saldırganın örneğin aşağıdakini yaparak geçersiz bir MTU yapılandırması mümkündür: $ ip link set can0 mtu 9999 Bunu yaptıktan sonra saldırgan, kötü niyetli CAN XL çerçeveleri enjekte etmek için ETH_P_CANXL protokolünü kullanarak bir PF_PACKET soketi açabilir: socket(PF_PACKET, SOCK_RAW, htons(ETH_P_CANXL)) Örneğin: struct canxl_frame frame = { .flags = 0xff, .len = 2048, }; CAN sürücülerinin xmit() işlevi, skb'nin geçerli olduğunu kontrol etmek için can_dev_dropped_skb() işlevini çağırır; ne yazık ki yukarıdaki koşullar altında kötü niyetli paket can_dev_dropped_skb() kontrollerinden geçebilir: 1. skb->protocol, geçerli olan ETH_P_CANXL olarak ayarlanmıştır (işlev, aygıtın gerçek yeteneklerini kontrol etmez). 2. uzunluk, geçerli bir CAN XL uzunluğudur. Böylece mcba_usb_start_xmit(), doğru şekilde işleyemediği bir CAN XL çerçevesi alır ve bu nedenle onu bir CAN çerçevesi olarak yanlış yorumlar. Bu, arabellek taşmasına neden olabilir. Sürücü, aşağıdaki satırlarda cf->len değerini başka bir kontrol yapmadan olduğu gibi kullanacaktır: usb_msg.dlc = cf->len; memcpy(usb_msg.data, cf->data, usb_msg.dlc); Burada cf->len, CAN XL çerçevesinin flags alanına karşılık gelir. Önceki örneğimizde canxl_frame->flags değerini 0xff olarak ayarladık. Beklenen maksimum uzunluk 8 olduğundan, 247 baytlık bir arabellek taşması meydana gelir! Arayüzün MTU değerinin CAN_MTU değerinden daha büyük bir değere ayarlanamamasını sağlamak için net_device_ops->ndo_change_mtu() doldurulmuştur. Kök neden düzeltilerek arabellek taşması önlenir.

ÖnemYüksek
CVSS7.8
İstismar olasılığı—
ÜrünLinux
Yayın15 Eki 2025
İlk görülme15 Eki 2025

Nasıl düzeltilir

Güncelleyin
  • Linux Linux0fa9303c4b9493727e0d3a6ac3729300e3013930, 37aed407496bf6de8910e588edb04d2435fa7011, 6eec67bfb25637f9b51e584cf59ddace59925bc8, ca4e51359608e1f29bf1f2c33c3ddf775b6b7ed1, 3664ae91b26d1fd7e4cee9cde17301361f4c89d5, 6b9fb82df8868dbe9ffea5874b8d35f951faedbb, b638c3fb0f163e69785ceddb3b434a9437878bec, 17c8d794527f01def0d1c8b7dc2d7b8d34fed0e6 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
Linux Linux51f3baad7de943780ce0c17bd7975df567dd6e14 ≤ v < 0fa9303c4b9493727e0d3a6ac3729300e3013930, 51f3baad7de943780ce0c17bd7975df567dd6e14 ≤ v < 37aed407496bf6de8910e588edb04d2435fa7011, 51f3baad7de943780ce0c17bd7975df567dd6e14 ≤ v < 6eec67bfb25637f9b51e584cf59ddace59925bc8, 51f3baad7de943780ce0c17bd7975df567dd6e14 ≤ v < ca4e51359608e1f29bf1f2c33c3ddf775b6b7ed1, 51f3baad7de943780ce0c17bd7975df567dd6e14 ≤ v < 3664ae91b26d1fd7e4cee9cde17301361f4c89d5, 51f3baad7de943780ce0c17bd7975df567dd6e14 ≤ v < 6b9fb82df8868dbe9ffea5874b8d35f951faedbb, 51f3baad7de943780ce0c17bd7975df567dd6e14 ≤ v < b638c3fb0f163e69785ceddb3b434a9437878bec, 51f3baad7de943780ce0c17bd7975df567dd6e14 ≤ v < 17c8d794527f01def0d1c8b7dc2d7b8d34fed0e6, 4.120fa9303c4b9493727e0d3a6ac3729300e3013930, 37aed407496bf6de8910e588edb04d2435fa7011, 6eec67bfb25637f9b51e584cf59ddace59925bc8, ca4e51359608e1f29bf1f2c33c3ddf775b6b7ed1, 3664ae91b26d1fd7e4cee9cde17301361f4c89d5, 6b9fb82df8868dbe9ffea5874b8d35f951faedbb, b638c3fb0f163e69785ceddb3b434a9437878bec, 17c8d794527f01def0d1c8b7dc2d7b8d34fed0e6

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.

Intelligence 360 paketinde

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.

CVE-2025-39985 · Linux · Dark Radar