Уразлівасць у рэалізацыі сокетаў AF_PACKET ядры Linux

Праз тры гады з моманту хвалі ўразлівасцяў (1, 2, 3, 4, 5) у падсістэме AF_PACKET ядра Linux выяўлена яшчэ адна праблема (CVE-2020-14386), якая дазваляе лакальнаму непрывілеяванаму карыстачу выканаць код з правамі root або выйсці з ізаляваных кантэйнераў, пры наяўнасці ў іх root-доступу.

Для стварэння сокета AF_PACKET і эксплуатацыі ўразлівасці патрабуецца наяўнасць паўнамоцтваў CAP_NET_RAW. Тым не менш, паказанае паўнамоцтва можа быць атрымана непрывілеяваным карыстачом у кантэйнерах, ствараных у сістэмах з уключанай падтрымкай прастор імёнаў ідэнтыфікатараў карыстачоў (user namespaces). Напрыклад, user namespaces па змаўчанні ўключаны ў Ubuntu і Fedora, але не актываваны ў Debian і RHEL. У Android права ствараць сокеты AF_PACKET мае працэс mediaserver, праз які можа быць эксплуатаваная ўразлівасць.

Уразлівасць прысутнічае ў функцыі tpacket_rcv і выклікана памылкай вылічэнні зменнай netoff. Атакуючы можа стварыць умовы, пры якіх у зменную netoff будзе запісана значэнне менш зменнай maclen, што выкліча перапаўненне пры вылічэнні "macoff = netoff - maclen" і няслушнай наступнай усталёўцы паказальніка на буфер для паступаючых дадзеных. У выніку, атакавалым можа быць ініцыяваны запіс ад 1 да 10 байт у вобласць за мяжой вылучанага буфера. Адзначаецца, што ў распрацоўцы знаходзіцца эксплатыт, які дазваляе атрымаць root-правы ў сістэме.

Праблема прысутнічае ў ядры з ліпеня 2008 года, г.зн. выяўляецца ва ўсіх актуальных ядрах. Выпраўленне пакуль даступна ў выглядзе патча. Адсачыць з'яўленне абнаўленняў пакетаў у дыстрыбутывах можна на наступных старонках: Ubuntu, Мяккая фетравы капялюш, SUSE, Debian, RHEL, арка.

Крыніца: opennet.ru

Дадаць каментар