Ако бъдат използвани, тези пропуски могат да позволят на нападателите да получат неоторизиран достъп до чувствителна информация или като цяло да причинят проблеми
Преди няколко дни беше съобщена новината, че е открита уязвимост в мрежовата подсистема на ядрото Linux, че позволява, презаписване на съдържанието на паметта на ядрото, чрез манипулиране на мрежови сокети в потребителското пространство.
Споменава се, че уязвимостта (вече каталогизирана под CVE-2023-42752) е класифициран като критичен и може да се използва за разрешаване на достъп на непривилегирован потребител да изпълнява вашия код на ниво ядро.
Относно уязвимостта CVE-2023-42752
Като такава, откритата повреда Причинява се от промяна, въведена в ядрото на Linux версия 6.2, но се споменава, че тази промяна е въведена и във всички поддържани LTS клонове, така че уязвимостта Появява се и в по-стари версии на поддържани стабилни клонове на ядрото.
Здравейте,
Наскоро срещнах целочислено препълване в ядрото на Linux, което води към ядрото чрез разпределяне на `skb_shared_info` в потребителското пространство, което е може да се използва на системи без SMAP защита от `skb_shared_info` съдържа препратки към функционални указатели.
Проверих съществуването на уязвимостта и в двата основни клона и v6.1.y, повече версии може да бъдат засегнати (потенциално всички стабилни версии)
По отношение на причините за проблема се споменава целочислено препълване все още се дължи във функцията "alloc_skb". на Linux ядрото, репликата се използва за предоставяне на разпределението на паметта за структурата sk_buff (буфер на гнездо), която се използва за съхраняване на мрежови пакети.
Уязвимостта може да бъде използвана, защото възниква проблем, който причинява препълване поради липса на правилно валидиране на параметрите, получени от потребителя, използвани за изчисляване на размера на буфера. Атака от непривилегирован потребител изисква достъп за създаване на потребителски пространства от имена, които могат да бъдат предоставени, например, в изолирани контейнери.
Екранна снимка на кода
Споменава се, че: Функцията `kmalloc_reserve` закръгля размера в `PAGE_SIZE << get_order(size);` в `kmalloc_size_roundup`. Тъй като 'size' е 'unsigned int', логиката за закръгляване ще го направи 0, ако оригиналната стойност е по-голяма, например нещо като 0xffffded0. В резултат на това „данните“ всъщност ще станат `ZERO_SIZE_PTR`, което е 0x10 вместо 0. Тъй като проверката не взема предвид случая, така че ядрото ще продължи да обработва „данните“, сякаш са указател към валидното ядро.
По-късно, когато ядрото се опита да финализира skb обекта в `__finalize_skb_around`, то има кода: `shinfo = skb_shinfo(skb);`, който е `skb->head+skb->end`, където `skb->head ` е 0x10 и `skb->end`
е голям размер като 0xffffmed0. В резултат на това `shinfo` сочи към указател на потребителско пространство.
Струва си да се спомене, че уязвимостта CVE-2023-42752 е локален и не може да се използва дистанционно по мрежата, тъй като, както споменахме по-горе, нападателят изисква достъп, за да създаде потребителски пространства от имена.
През 2010 г. не осъзнавах, че злонамерените потребители могат да задават dev->mtu на произволни стойности. Това mtu оттогава е ограничено до 0x7fffffff, но независимо от това колко голям е dev->mtu, няма смисъл за igmpv3_newpack() да разпределя повече от IP_MAX_MTU и рискува да препълни множество skb полета
Като временно решение Препоръчва се защитният механизъм SMAP да бъде активиран (Supervisor Mode Access Prevention) в ядрото, което блокира проблема.
Тъй като решение на проблема като такъв, това вече е коригирано и разпространени в корекциите, които блокират уязвимостта в различните версии с поддръжка на ядрото, се споменава, че промените са приети в стабилните клонове на ядрото на 5 септември.
И накрая, за се интересуват от проследяване на корекцията на уязвимостта, можете да го направите на страниците на различните дистрибуции: Debian, Ubuntu, Gentoo, RHEL,Fedora и SUSE/openSUSE.Можете да проверите подробностите за уязвимостта в следваща връзка.