CVE-2025-39986
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.
Necə düzəltmək olar
- Linux Linux063539db42203b29d5aa2adf0cae3d68c646a6b6, 4f382cc887adca8478b9d3e6b81aa6698a95fff4, 60463a1c138900494cb3adae41142a11cd8feb3c, a61ff7ac93270d20ca426c027d6d01c8ac8e904c, 2e423e1990f3972cbea779883fef52c2f2acb858, de77841652e57afbc46e9e1dbf51ee364fc008e1, 7f7b21026a6febdb749f6f6f950427245aa86cce, 61da0bd4102c459823fbe6b8b43b01fb6ace4a22 və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| Linux Linux | 0738eff14d817a02ab082c392c96a1613006f158 ≤ v < 063539db42203b29d5aa2adf0cae3d68c646a6b6, 0738eff14d817a02ab082c392c96a1613006f158 ≤ v < 4f382cc887adca8478b9d3e6b81aa6698a95fff4, 0738eff14d817a02ab082c392c96a1613006f158 ≤ v < 60463a1c138900494cb3adae41142a11cd8feb3c, 0738eff14d817a02ab082c392c96a1613006f158 ≤ v < a61ff7ac93270d20ca426c027d6d01c8ac8e904c, 0738eff14d817a02ab082c392c96a1613006f158 ≤ v < 2e423e1990f3972cbea779883fef52c2f2acb858, 0738eff14d817a02ab082c392c96a1613006f158 ≤ v < de77841652e57afbc46e9e1dbf51ee364fc008e1, 0738eff14d817a02ab082c392c96a1613006f158 ≤ v < 7f7b21026a6febdb749f6f6f950427245aa86cce, 0738eff14d817a02ab082c392c96a1613006f158 ≤ v < 61da0bd4102c459823fbe6b8b43b01fb6ace4a22, 4.4 | 063539db42203b29d5aa2adf0cae3d68c646a6b6, 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.
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.