У језгру Linux Идентификована је рањивост (CVE-2022-0847) која омогућава преписивање садржаја кеша странице за било коју датотеку, укључујући оне у режиму само за читање, отворене са заставицом O_RDONLY или оне које се налазе на фајл системима монтираним у режиму само за читање. У практичном смислу, ова рањивост се може искористити за убризгавање кода у произвољне процесе или оштећење података у отвореним датотекама. На пример, садржај датотеке authorized_keys за sshd процес може се изменити. Прототип експлоатације је доступан за тестирање.
Проблем је добио кодни назив Дирти Пипе, слично критичној рањивости Дирти ЦОВ идентификованој 2016. Напомиње се да је по степену опасности Прљава цев на истом нивоу као и Дирти ЦОВ, али је много лакша за руковање. Рањивост је идентификована током анализе притужби на периодично оштећење датотека преузетих преко мреже у систему који преузима компримоване архиве са лог сервера (37 оштећења у 3 месеца на учитаном систему), за чију је припрему коришћена операција сплице() и неименоване цеви.
Рањивост се манифестује почевши од језгра Linux 5.8, објављена у августу 2020. године, тј. присутна је у Debian 11, али не утиче на основно језгро у Ubuntu 20.04 LTS. Језгра RHEL 8.x и openSUSE/SUSE 15 су иницијално заснована на старијим гранама, али је могуће да је проблем тамо пренет (још увек нема тачних детаља). Можете пратити објављивање ажурирања пакета за ове дистрибуције на овим страницама: Debian, СУСЕ, Ubuntu, RHEL, Федора, Генту, Арч LinuxИсправка за рањивост је понуђена у издањима 5.16.11, 5.15.25 и 5.10.102. Исправка је такође укључена у језгро које се користи на платформи. Android.
Рањивост је узрокована недостатком иницијализације вредности „буф->флагс“ у коду функција цопи_паге_то_итер_пипе() и пусх_пипе(), упркос чињеници да се меморија не брише приликом додељивања структуре и током одређених манипулација са неименоване цеви, вредност из друге операције. Користећи ову функцију, непривилеговани локални корисник може постићи изглед вредности ПИПЕ_БУФ_ФЛАГ_ЦАН_МЕРГЕ у заставици, што вам омогућава да организујете преписивање података у кешу странице једноставним писањем нових података у посебно припремљену неименовану цев.
За напад, циљна датотека мора бити читљива, а пошто се права приступа не проверавају приликом писања у канал, замена у кешу странице може се извршити и за датотеке које се налазе на партицијама монтираним само за читање (на пример, за датотеке ц ЦД- РОМ). Након замене информација у кешу странице, приликом читања података из датотеке, процес ће примити не стварне податке, већ замењене податке.
Операција се своди на креирање неименованог канала и његово попуњавање произвољним подацима како би се осигурало да је заставица ПИПЕ_БУФ_ФЛАГ_ЦАН_МЕРГЕ постављена у свим структурама прстена које су повезане са њим. Затим се подаци читају из цеви, али заставица остаје постављена у свим инстанцама структуре пипе_буффер у структурама прстена пипе_иноде_инфо. Затим се упућује позив сплице() за читање података из циљне датотеке у неименовану цев, почевши од жељеног помака. Приликом писања података у ову неименовану цев, због постављене заставице ПИПЕ_БУФ_ФЛАГ_ЦАН_МЕРГЕ, подаци у кешу странице ће бити преписани уместо да се креира нова инстанца структуре пипе_буффер.
Извор: опеннет.ру
