Рањивост у еБПФ подсистему који дозвољава извршавање кода на нивоу Линук кернела

Идентификована је рањивост (ЦВЕ-2021-4204) у еБПФ подсистему, која вам омогућава да покренете руковаоце унутар Линук кернела у специјалној виртуелној машини са ЈИТ-ом, омогућавајући локалном непривилегованом кориснику да постигне ескалацију привилегија и изврши свој код на Ниво Линук кернела. Проблем се појављује од Линук кернела 5.8 и остаје нерешен (укључујући издање 5.16). Статус ажурирања која се генеришу да би се решио проблем у дистрибуцијама може се пратити на овим страницама: Дебиан, РХЕЛ, СУСЕ, Федора, Убунту, Арцх. Објављено је да је направљен радни експлоат који је планиран за објављивање 18. јануара (корисници и програмери су добили недељу дана да поправе рањивост).

Рањивост је узрокована нетачном верификацијом еБПФ програма који се преносе на извршење. Подсистем еБПФ обезбеђује помоћне функције, чију исправну употребу верификује посебан верификатор. Неке функције захтевају прослеђивање вредности ПТР_ТО_МЕМ као аргумента, а да би спречио могуће преливање бафера, верификатор мора да зна величину меморије повезане са аргументом. За функције бпф_рингбуф_субмит и бпф_рингбуф_дисцард, подаци о величини пренете меморије нису пријављени верификатору, што би могло да се користи за преписивање меморијских подручја изван границе бафера приликом извршавања посебно дизајнираног еБПФ кода.

Да би извршио напад, корисник мора бити у могућности да учита свој БПФ програм, а многе недавне Линук дистрибуције подразумевано блокирају ову могућност (укључујући непривилеговани приступ еБПФ-у је сада подразумевано забрањен у самом кернелу, почевши од издања 5.16). На пример, рањивост се може искористити у подразумеваној конфигурацији у Убунту 20.04 ЛТС, али се у окружењима Убунту 22.04-дев, Дебиан 11, опенСУСЕ 15.3, РХЕЛ 8.5, СУСЕ 15-СП4 и Федора 33 појављује само ако је администратор поставио подешавања. параметар кернел.унпривилегед_бпф_дисаблед на 0. Као решење за блокирање рањивости, можете спречити извршавање БПФ програма од стране непривилегованих корисника командом „сисцтл -в кернел.унпривилегед_бпф_дисаблед=1“.

Извор: опеннет.ру

Додај коментар