Спецпроекты

ПО Свободное ПО Безопасность Администратору Пользователю Техника

«Дыра» в Linux превращает любого пользователя в админа системы

«Баг» в предустановленной командной утилите Linux позволяет обходить разграничения полномочий для пользователей, так что даже при ограниченных привилегиях можно запускать приложения с правами суперпользователя. Для этого локальному пользователю потребуется «правильно» себя идентифицировать.

Всё дозволено

Серьёзная уязвимость в системной утилите Sudo, которая есть практически в каждой ОС на базе UNIX/Linux, позволяет обходить её политику безопасности и выполнять команды с уровнем прав Root непривилегированным пользователям, даже если настройки утилиты (Sudoers configuration) прямо это запрещают.

Утилита Sudo (Superusers do) предназначена для того, чтобы пользователи, работающие в среде UNIX/Linux с неадминистративным уровнем прав, могли запускать некоторые приложения или команды без переключения сред, то есть без перехода в административный режим.

В файле настроек /etc/sudoers по умолчанию для всех пользователей, входящих в группы администраторов и sudo, выставлено разрешение запускать любую команду в качестве любого пользователя; иными словами, даже если данный конкретный администратор в текущий момент работает из-под непривилегированной учётной записи, он всё равно может выполнять команды как администратор.

Поскольку жёсткое разделение полномочий - одна из основных парадигм безопасности в Linux, администраторы могут прописывать более конкретно, что может делать тот или иной пользователь и с какими правами, а чего он делать не может.

Баг в утилите Sudo позволяет выполнять команды с уровнем прав Root любым пользователям, даже если настройки системы это запрещают

Однако, если у данного пользователя есть полномочия на запуск команд и приложений с любыми правами ниже рута, выявленная уязвимость в Sudo, тем не менее, позволяет ему обходить это ограничение и фактически делать всё, что может делать пользователь с root-полномочиями.

Правильный идентификатор

Например, если в файле /etc/sudoers заданы параметры «myhost bob = (ALL, !root) /user/bin/vi», то пользователь с идентификатором bob может запускать приложение Vi (текстовый редактор, по умолчанию включённый в большинство дистрибутивов Linux) с любыми правами, кроме root.

Однако если bob запускает Vi, используя команды вида «sudo -u#-1 id -u» или «sudo -u#4294867295 id -u», то у него появляется возможность запуска Vi с правами суперпользователя (рута).

Всё, что идёт после sudo - это присвоение нового идентификатора данному пользователю. Функция Sudo, отвечающая за конвертацию идентификатора в пользовательское имя, некорректно интерпретирует -1 или 4294867295 (это число является беззнаковым эквивалентом -1), как 0, а нулевой идентификатор - это обозначение рута.

Уязвимость, получившая индекс CVE-2019-14287, затрагивает все версии Sudo до самой последней - 1.8.28, выпущенной буквально на днях.

«Эксплуатация уязвимости едва ли угрожает большому количеству пользователей: слишком специфичными являются условия, при которых это возможно, - считает Анастасия Мельникова, эксперт по информационной безопасности компании SEC Consult Services. - С другой стороны, эта ситуация в очередной раз свидетельствует о том, что даже самые распространённые и часто используемые разработки с открытым кодом могут содержать очень серьёзные ошибки, чреватые компрометацией системы».

Пользователям Linux рекомендуется обновить Sudo в ближайшее время.

Роман Георгиев

Короткая ссылка