У драйвері ядра ОС Linux виявлено вразливість, яка дозволяє локальному користувачеві підвищити свої привілеї та запустити на Linux будь-який код, включаючи шкідливий.
Запуск коду в просторі ядра
У драйвері ядра ОС Linux виявлено вразливість, яка дозволяє локальному користувачеві підвищити свої привілеї та здійснювати читання та запис у значні області пам'яті ядра, тобто запустити на Linux будь-який код, включаючи шкідливий.
Вразливість виявили експерти компанії CheckPoint під час аудиту безпеки ядра Linux та його драйверів. "Баг", як пишуть вони у звіті, з'явився в ядрі Linux "вісім років тому".
Технічні подробиці про «дірку» можна знайти на сайті CheckPoint.
Уразливість під індексом CVE 2018-8718 зачіпає внутрішню функцію mmap(), що визначається файловими операціями fb_helper в драйвері «udl» від DisplayLink – виробника комп'ютерних відеокомпонентів та програмного забезпечення для них.
В офіційному описі говориться, що «функція udl_fb_mmap в drivers/gpu/drm/udl/udl_fb.c в ядрі Linux 3.4 і далі аж до 4.15 містить вразливість класу цілечисленне переповнення, завдяки якій локальні користувачі з доступом до доступу можливість зчитувати та записувати дозволи на сторінки фізичної пам'яті та таким чином здійснювати запуск коду у просторі ядра».
Модуль video/drm в ядрі визначає оболонку mmap() за умовчанням, яка викликає реальний обробник mmap(), заданий конкретним драйвером. У нашому випадку вразливість міститься у внутрішньому mmap(), заданому файловими операціями fb_helper у драйвері "udl" від DisplayLink, - йдеться в описі CheckPoint.
«Помилка цілого переповнення (integer-overflow) виникає, коли арифметичні операції видають значення, що знаходиться за межами діапазону, який може бути представлений заданою кількістю бітів. Щоб запобігти такому, програмісти повинні реалізовувати перевірки діапазону. Відсутність таких перевірок - одна з ключових і найпоширеніших причин виникнення вразливостей даного типу. Цікаво, що за вісім років цей баг ніхто так і не виявив.
У бюлетені CheckPoint зазначається, що навіть у такому популярному проекті Open Source, як ядро Linux, завжди можна знайти вразливості, «якщо знати, де шукати».