CVE-2025-39986

Yüksək

Təsvir

Linux kernel-də aşağıdakı zəiflik aradan qaldırılıb: can: sun4i_can: bufer daşmasının qarşısını almaq üçün ndo_change_mtu() doldurulsun PF_PACKET göndərmək CAN freymvork məntiqini yan keçməyə və birbaşa CAN drayverinin xmit() funksiyasına çatmağa imkan verir. PF_PACKET freymvorku tərəfindən yerinə yetirilən yeganə yoxlama skb->len dəyərinin interfeysin MTU-suna uyğun olduğundan əmin olmaqdır. Təəssüf ki, sun4i_can drayveri öz net_device_ops->ndo_change_mtu() funksiyasını doldurmadığı üçün hücum edən şəxs, məsələn, aşağıdakıları edərək yanlış MTU konfiqurasiya edə bilər: $ ip link set can0 mtu 9999 Bundan sonra hücum edən şəxs ETH_P_CANXL protokolu vasitəsilə PF_PACKET soketi aça bilər: socket(PF_PACKET, SOCK_RAW, htons(ETH_P_CANXL)) bu, zərərli CAN XL freymlərini inyeksiya etmək üçündür. Məsələn: struct canxl_frame frame = { .flags = 0xff, .len = 2048, }; CAN drayverlərinin xmit() funksiyaları skb-nin düzgünlüyünü yoxlamaq üçün can_dev_dropped_skb() funksiyasını çağırır, lakin yuxarıdakı şərtlər altında zərərli paket can_dev_dropped_skb() yoxlamalarından keçə bilir: 1. skb->protocol ETH_P_CANXL olaraq təyin edilmişdir və bu düzgündür (funksiya cihazın faktiki imkanlarını yoxlamır). 2. uzunluq düzgün CAN XL uzunluğudur. Beləliklə, sun4ican_start_xmit() düzgün şəkildə emal edə bilmədiyi bir CAN XL freymi qəbul edir və onu səhvən CAN freymi kimi şərh edir. Bu, bufer daşmasına səbəb ola bilər. Drayver, aşağıdakı sətirdə heç bir əlavə yoxlama aparmadan cf->len dəyərini olduğu kimi istifadə edəcək: dlc = cf->len; Burada cf->len CAN XL freyminin flags sahəsinə uyğundur. Əvvəlki nümunəmizdə biz canxl_frame->flags dəyərini 0xff olaraq təyin etmişdik. Gözlənilən maksimum uzunluq 8 olduğu üçün, aşağıdakılar yerinə yetirilərkən bir neçə sətir sonra 247 baytlıq bufer daşması baş verir: for (i = 0; i < dlc; i++) writel(cf->data[i], priv->base + (dreg + i * 4)); İnterfeysin MTU-sunun CAN_MTU-dan böyük təyin edilməməsini təmin etmək üçün net_device_ops->ndo_change_mtu() doldurulmuşdur. Kök səbəbin aradan qaldırılması ilə bufer daşmasının qarşısı alınmışdır.

CiddilikYüksək
CVSS7.8
İstismar ehtimalı—
MəhsulLinux
Dərc15 okt 2025
İlk görülmə15 okt 2025

Necə düzəltmək olar

Yeniləyin
  • Linux Linux063539db42203b29d5aa2adf0cae3d68c646a6b6, 4f382cc887adca8478b9d3e6b81aa6698a95fff4, 60463a1c138900494cb3adae41142a11cd8feb3c, a61ff7ac93270d20ca426c027d6d01c8ac8e904c, 2e423e1990f3972cbea779883fef52c2f2acb858, de77841652e57afbc46e9e1dbf51ee364fc008e1, 7f7b21026a6febdb749f6f6f950427245aa86cce, 61da0bd4102c459823fbe6b8b43b01fb6ace4a22 və ya daha yeni versiya

Təsirlənən məhsullar

MəhsulTəsirlənən versiyalarDüzəldildiyi versiya
Linux Linux0738eff14d817a02ab082c392c96a1613006f158 ≤ v < 063539db42203b29d5aa2adf0cae3d68c646a6b6, 0738eff14d817a02ab082c392c96a1613006f158 ≤ v < 4f382cc887adca8478b9d3e6b81aa6698a95fff4, 0738eff14d817a02ab082c392c96a1613006f158 ≤ v < 60463a1c138900494cb3adae41142a11cd8feb3c, 0738eff14d817a02ab082c392c96a1613006f158 ≤ v < a61ff7ac93270d20ca426c027d6d01c8ac8e904c, 0738eff14d817a02ab082c392c96a1613006f158 ≤ v < 2e423e1990f3972cbea779883fef52c2f2acb858, 0738eff14d817a02ab082c392c96a1613006f158 ≤ v < de77841652e57afbc46e9e1dbf51ee364fc008e1, 0738eff14d817a02ab082c392c96a1613006f158 ≤ v < 7f7b21026a6febdb749f6f6f950427245aa86cce, 0738eff14d817a02ab082c392c96a1613006f158 ≤ v < 61da0bd4102c459823fbe6b8b43b01fb6ace4a22, 4.4063539db42203b29d5aa2adf0cae3d68c646a6b6, 4f382cc887adca8478b9d3e6b81aa6698a95fff4, 60463a1c138900494cb3adae41142a11cd8feb3c, a61ff7ac93270d20ca426c027d6d01c8ac8e904c, 2e423e1990f3972cbea779883fef52c2f2acb858, de77841652e57afbc46e9e1dbf51ee364fc008e1, 7f7b21026a6febdb749f6f6f950427245aa86cce, 61da0bd4102c459823fbe6b8b43b01fb6ace4a22

Versiyanızı yoxlayın

Məhsulu seçin və istifadə etdiyiniz versiyanı yazın; versiyanın təsirlənən aralıqda olub-olmadığını görün.

Intelligence 360 paketində

Attack Surface Management

Domenlərinizə bağlı aktivləri, onlarda işləyən texnologiyaları və məlum zəiflikləri bir siyahıda görün.

CVE-2025-39986 · Linux · Dark Radar