В команде sudo в Linux нашли уязвимость, которая дает права суперпользователя

    imageФото: 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.
    • +13
    • 12,4k
    • 9
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 9

      +4
      Какое отношение эта статья имеет к
      Как настроить Linux для входа в домен с использованием алгоритмов ГОСТ

      Или это уже норма для хабра вставлять рандомные ссылки по среди статьи?
        0
        Уже убрали.
        +8
        …будучи подписанной 32-разрядной целочисленной переменной
        Ню-ню.
          0
          $ sudo -u#-1 whoami
          [sudo] пароль для alex: 
          
          U16.04, ЧЯДНТ?
            +1
            Введите пароль. В теории, даже не-sudoer станет рутом.
              +6
              Не совсем. Нужно быть упомянутым в sudoers. И иметь переменную ALL, от имени которых можно выполнять команду.

              Уязвимость очень ограниченная.
              1. Обход запрета использования Всех кроме Root
                myhost bob = (ALL, !root) /usr/bin/vi
              2. В логах будет запуск от пользователя -1, а не root, что потенциально ломает аналитику и расследование инцидентов
              3. Так как пользователь -1 отсутствует, к нему не будут применены никакие модули PAM.


              Большинство записей в sudoers с переменной ALL и так подразумевают, что у пользователя полные права, включая root. Здесь минус только в маскировке логов.
              Единственная потенциальная серьезная опасность – записи с исключением (ALL, !root). Тогда пользователь может получить несанкционированный root в системе.
              0
              На Fedora 30 интереснее
              $ sudo -u#-1 whoami
              vlad is not in the sudoers file.  This incident will be reported.
              
                0
                А кто будет добавлять в /etc/sudoers строку
                vlad myhost = (ALL, !root) /usr/bin/whoami
                ?
                0
                Вы забыли добавить в /etc/sudoers строку
                alex myhost = (ALL, !root) /usr/bin/whoami

              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

              Самое читаемое