Даследнікі бяспекі з кампаніі Google выявілі ў ядры Linux уразлівасць (CVE-2025-38236), якая дазваляе падвысіць свае прывілеі ў сістэме. Сярод іншага ўразлівасць дае магчымасць абыйсці механізм sandbox-ізаляцыі, які ўжываецца ў Google Chrome, і дамагчыся выкананні кода на ўзроўні ядра пры выкананні кода ў кантэксце ізаляванага працэсу рэндэрынгу Chrome (напрыклад, пры эксплуатацыі іншай уразлівасці ў Chrome). Праблема выяўляецца пачынальна з ядра Linux 6.9 і ўхіленая ў абнаўленнях ядра Linux 6.1.143, 6.6.96, 6.12.36 і 6.15.5. Для загрузкі даступны прататып эксплоіту.
Уразлівасць выклікана памылкай у рэалізацыі сцяга MSG_OOB, які можна выставіць для сокетаў AF_UNIX. Сцяг MSG_OOB ("out-of-band") дазваляе прымацаваць дадатковы байт да адпраўляных дадзеных, які атрымальнік можа прачытаць да атрымання астатніх дадзеных. Дадзены сцяг быў дададзены ў ядры Linux 5.15 па запыце Oracle і ў мінулым годзе прапаноўваўся для перакладу ў разрад састарэлых, як не атрымаў шырокага распаўсюджвання.
У рэалізацыі sandbox-асяроддзі Chrome дазволеныя аперацыі з UNIX-сокетамі і сістэмныя выклікі send()/recv(), у якіх сцяг MSG_OOB дапушчаўся нараўне з іншымі опцыямі і не быў асобна адфільтраваны. Памылка ў рэалізацыі MSG_OOB дазваляла дамагчыся звароту да памяці пасля яе вызвалення (use-after-free) пасля выканання вызначанай паслядоўнасці сістэмных выклікаў: char dummy; int socks[2]; socketpair(AF_UNIX, SOCK_STREAM, 0, socks); send(socks[1], "A", 1, MSG_OOB); recv(socks[0], &dummy, 1, MSG_OOB); send(socks[1], "A", 1, MSG_OOB); recv(socks[0], &dummy, 1, MSG_OOB); send(socks[1], "A", 1, MSG_OOB); recv(socks[0], &dummy, 1, 0); recv(socks[0], &dummy, 1, MSG_OOB);
Крыніца: opennet.ru
