- Уязвимость в sudo позволяет запускать на Linux-машинах команды с правами суперпользователя
- Эксперты обнаружили критическую уязвимость в sudo, баг в утилите был с 2011 года
- В команде sudo в Linux нашли уязвимость, которая дает права суперпользователя
- Специалисты ИБ из Synacktiv обнаружили критическую уязвимость в sudo, позволяющую добиться получения прав root не admin
- В команде sudo в Linux нашли уязвимость, которая дает права суперпользователя
Уязвимость в sudo позволяет запускать на Linux-машинах команды с правами суперпользователя
Проблема возникает только при нестандартных настройках конфигурации и не затрагивает большинство Linux-серверов.
Специалист компании Apple Джо Венникс (Joe Vennix) обнаружил уязвимость (CVE-2019-14287) в команде sudo в Linux, позволяющую непривилегированным пользователям запускать команды с правами суперпользователя. К счастью, проблема возникает только при нестандартных настройках конфигурации и не затрагивает большинство Linux-серверов. Команда sudo (super user do) позволяет непривилегированным пользователям, которым было дано соответствующее разрешение или известен пароль суперпользователя, выполнять на Linux-машинах команды с правами суперпользователя. Sudo можно также сконфигурировать для запуска команд от имени другого пользователя (за исключением суперпользователя) путем добавления особых инструкций в конфигурационный файл /etc/sudoers. Уязвимость возникает как раз при настройках конфигурации sudo, позволяющих пользователям запускать команды от имени других пользователей. Добавив в командную строку -u#-1, они могут обойти ограничения и запускать команды с привилегиями суперпользователя. Допустим, администратор создал на сервере mybox пользователя sudo с именем bob, добавив в конфигурационный файл строку mybox bob = (ALL, !root) /usr/bin/vi. По идее, это даст пользователю bob возможность запускать текстовый редактор Vi с привилегиями любого пользователя за исключением суперпользователя. Однако, если bob запустит команду sudo -u#-1 vi, то сможет запускать Vi с привилегиями суперпользователя. Почему так происходит? Скажем, -u#1234 может использоваться в командной строке с sudo для запуска команд, в данном случае Vi, в качестве идентификатора (ID) пользователя 1234. Sudo передает это значение идентификатора через системные вызовы setresuid и setreuid для изменения эффективного ID пользователя команды. В результате, -u#-1 передает через вызовы -1 для изменения эффективного идентификатора на -1. Системный вызов принимает данный ID в качестве особенного и не меняет идентификатор пользователя. Поскольку sudo изначально обладает правами суперпользователя, -1 продолжает работать как суперпользователь. Интересно, что идентификатор пользователя 4294967295 также способен обходить ограничения, поскольку, будучи подписанной 32-разрядной целочисленной переменной, он равен -1. Во избежание возможных атак с использованием данной уязвимости пользователям настоятельно рекомендуется обновить sudo до версии 1.8.28 или более поздней. В обновленной версии sudo -1 больше не принимается в качестве идентификатора пользователя, поэтому эксплуатация уязвимости невозможна.
Как обезопасить свой смартфон от СЛЕДЯЩИХ ПРИЛОЖЕНИЙ ? Присоединяйтесь к нашему ТГ каналу и ваш смартфон станет вашим оружием.
Эксперты обнаружили критическую уязвимость в sudo, баг в утилите был с 2011 года
Эксперты компании Qualys обнаружили критическую уязвимость в утилите sudo. Злоумышленник может получить доступ с правами root, используя уязвимость CVE-2021-3156 под любым пользователем и без наличия записи в файле /etc/sudoers. Уязвимость можно применять для повышения привилегий в системе в непривилегированном процессе.
Специалисты Qualys проверили эксплойты с уязвимостью на дистрибутивах Ubuntu 20.04 (sudo 1.8.31), Debian 10 (sudo 1.8.27) и Fedora 33 (sudo 1.9.2). В этих дистрибутивах они получили полные привилегии в системе. Уязвимости подвержены и другие дистрибутивы Linux с утилитой sudo всех версий от 1.8.2 до 1.8.31p2 (legacy) и от 1.9.0 до 1.9.5p1 (stable). Уязвимость устранена разработчиками sudo в версии 1.9.5p2. Qualys прислала им всю необходимую информацию для устранения уязвимости 13 января этого года.
Эксперты Qualys пояснили, что уязвимость попала в исходный код утилиты sudo в июле 2011 года. Ее использование возможно, если определенным образом вызвать переполнение буфера при обработке символов экранирования строки в параметрах, предназначенных для запуска команд в режиме shell при использовании sudoedit и указании аргументов «-i» или «-s». В этом случае экранирования параметров не происходит и появляется возможность работать далее с переполнением буфера и использовать ошибки в обработчике утилиты. Специалисты Qualys с помощью трех эксплойтов смогли активировать уязвимость и получить права root в системе, манипулируя значениями аргументов и при вызове sudoedit.
Пример использования уязвимости. Qualys не опубликовала исходный код эксплойтов для ее активации.
Для проверки наличия уязвимости в системе нужно под обычным пользователем запустить команду sudoedit -s / . Если в ответ будет выдана ошибка с текстом в начале «sudoedit:», то уязвимость есть. Исправленные версии sudo выдают в этом случае текст с ошибкой, начинающейся с «usage:».
В команде sudo в Linux нашли уязвимость, которая дает права суперпользователя
Фото: Paul Harrison/Flickr
Специалист компании Apple Джо Венникс рассказал об уязвимости (CVE-2019-14287) в команде sudo в Linux. Она позволяет непривилегированным пользователям запускать команды с правами суперпользователя.
Однако данная проблема возникает лишь при нестандартных настройках конфигурации и не затрагивает большинство Linux-серверов.
Команда sudo дает возможность непривилегированным пользователям с соответствующим разрешением или паролем суперпользователя выполнять на Linux-машинах команды с его правами. При добавлении инструкций в конфигурационный файл /etc/sudoers систему можно настроить для запуска команд от имени другого пользователя, однако это невозможно в отношении суперпользователя. Именно при этих настройках конфигурации пользователи могут обойти ограничения и запускать команды с привилегиями суперпользователя, добавив в командную строку -u#-1, выяснил Венникс.
Специалист приводит пример: администратор создал на сервере mybox пользователя sudo с именем bob, добавив в конфигурационный файл строку mybox bob = (ALL, !root) /usr/bin/vi. Пользователь bob сможет запускать текстовый редактор Vi, однако, если он запустит команду sudo -u#-1 vi, то сможет делать это уже с привилегиями суперпользователя.
Венникс отметил, что -u#1234 может использоваться как идентификатор пользователя 1234 в командной строке с sudo для запуска команд, в данном случае Vi. Sudo передает это значение идентификатора через системные вызовы setresuid и setreuid для изменения эффективного ID пользователя команды. -u#-1 же передает через вызовы -1 для изменения эффективного идентификатора на -1. Идентификатор пользователя 4294967295 тоже может обходить ограничения, поскольку, будучи знаковой 32-разрядной целочисленной переменной, он равен -1.
Специалист посоветовал пользователям обновить sudo до версии 1.8.28 или более поздней версии, так как в них -1 больше не принимается в качестве идентификатора
Исправление также доступно в форме патча. В дистрибутивах уязвимость уже устранена в Debian, Arch Linux, SUSE/openSUSE, Ubuntu, Gentoo и FreeBSD.
Специалисты ИБ из Synacktiv обнаружили критическую уязвимость в sudo, позволяющую добиться получения прав root не admin
Специалисты ИБ Матье Баржоль и Виктор Кутильяс из Synacktiv обнаружили критическую уязвимость в утилите sudo, позволяющую локальному пользователю без административных привилегий добиться получения прав root в системе.
Уязвимость получила номер CVE-2023-22809 и затрагивает версии sudo, начиная с ветки 1.8.0. Разработчики утилиты закрыли этот баг в обновлении sudo 1.9.12p2.
Эксперты пояснили, что уязвимость CVE-2023-22809 позволяет локальному пользователю отредактировать любой файл в системе, и с её помощью можно получить права root через изменение /etc/shadow или системных скриптов. Для эксплуатации уязвимости требуется, чтобы в файле sudoers пользователю было предоставлено право запускать утилиту sudoedit или «sudo» с флагом «-e». Проблема возникла из-за отсутствия должной обработки символов «—» при разборе переменных окружения, определяющих программу, вызываемую для редактирования файла.
В подверженных уязвимости версиях sudo последовательность «—» используется для отделения редактора и аргументов от списка редактируемых файлов. Атакующий может добавить в переменные окружения SUDO_EDITOR, VISUAL или EDITOR последовательность «— файл» после пути к редактору, что приведёт к инициированию редактирования указанного файла с повышенными привилегиями без проверки правил доступа пользователя к файлам.
В качестве обходного пути для защиты от использования CVE-2023-22809 на непропатченных системах можно отключить обработку переменных окружения SUDO_EDITOR, VISUAL и EDITOR, указав в sudoers: Defaults!sudoedit env_delete+=«SUDO_EDITOR VISUAL EDITOR».
В январе 2021 года эксперты компании Qualys также обнаружили критическую уязвимость в утилите sudo. Злоумышленник мог получить доступ с правами root, используя уязвимость CVE-2021-3156 под любым пользователем и без наличия записи в файле /etc/sudoers. Уязвимость можно применять для повышения привилегий в системе в непривилегированном процессе. Эксперты Qualys пояснили, что уязвимость попала в исходный код утилиты sudo в июле 2011 года. Её использование возможно, если определённым образом вызвать переполнение буфера при обработке символов экранирования строки в параметрах, предназначенных для запуска команд в режиме shell при использовании sudoedit и указании аргументов «-i» или «-s». В этом случае экранирования параметров не происходит и появляется возможность работать далее с переполнением буфера и использовать ошибки в обработчике утилиты. Эта уязвимость была устранена разработчиками sudo в версии 1.9.5p2.
В команде sudo в Linux нашли уязвимость, которая дает права суперпользователя
Фото: Paul Harrison/Flickr
Специалист компании Apple Джо Венникс рассказал об уязвимости (CVE-2019-14287) в команде sudo в Linux. Она позволяет непривилегированным пользователям запускать команды с правами суперпользователя.
Однако данная проблема возникает лишь при нестандартных настройках конфигурации и не затрагивает большинство Linux-серверов.
Команда sudo дает возможность непривилегированным пользователям с соответствующим разрешением или паролем суперпользователя выполнять на Linux-машинах команды с его правами. При добавлении инструкций в конфигурационный файл /etc/sudoers систему можно настроить для запуска команд от имени другого пользователя, однако это невозможно в отношении суперпользователя. Именно при этих настройках конфигурации пользователи могут обойти ограничения и запускать команды с привилегиями суперпользователя, добавив в командную строку -u#-1, выяснил Венникс.
Специалист приводит пример: администратор создал на сервере mybox пользователя sudo с именем bob, добавив в конфигурационный файл строку mybox bob = (ALL, !root) /usr/bin/vi. Пользователь bob сможет запускать текстовый редактор Vi, однако, если он запустит команду sudo -u#-1 vi, то сможет делать это уже с привилегиями суперпользователя.
Венникс отметил, что -u#1234 может использоваться как идентификатор пользователя 1234 в командной строке с sudo для запуска команд, в данном случае Vi. Sudo передает это значение идентификатора через системные вызовы setresuid и setreuid для изменения эффективного ID пользователя команды. -u#-1 же передает через вызовы -1 для изменения эффективного идентификатора на -1. Идентификатор пользователя 4294967295 тоже может обходить ограничения, поскольку, будучи знаковой 32-разрядной целочисленной переменной, он равен -1.
Специалист посоветовал пользователям обновить sudo до версии 1.8.28 или более поздней версии, так как в них -1 больше не принимается в качестве идентификатора
Исправление также доступно в форме патча. В дистрибутивах уязвимость уже устранена в Debian, Arch Linux, SUSE/openSUSE, Ubuntu, Gentoo и FreeBSD.