لینکس منٹ اور ایلیمنٹری OS کو متاثر کرنے والی سوڈو روٹ کا خطرہ

افادیت میں سودو، دوسرے صارفین کی جانب سے حکموں کے نفاذ کو منظم کرنے کے لیے استعمال کیا جاتا ہے، شناخت کیا کمزوری (CVE-2019-18634), позволяющая повысить свои привилегии в системе до пользователя root. Проблема проявляется начиная с выпуска sudo 1.7.1 только при использовании в файле /etc/sudoers опции «pwfeedback», которая отключена по умолчанию, но активирована в некоторых дистрибутивах, таких как Linux Mint и Elementary OS. Проблема устранена в выпуске سودو 1.8.31۔, опубликованном несколько часов назад. В дистрибутивах уязвимость пока остаётся неисправленной.

Опция «pwfeedback» включает отображение символа «*» после каждого введённого символа при вводе пароля. Из-за غلطیاں в реализации функции getln(), определённой в файле tgetpass.c, переданная через стандартный входной поток (stdin) слишком большая строка с паролем при определённых условиях может не уместиться в выделенный буфер и переписать другие данные в стеке. Переполнение возникает во время выполнения кода sudo с правами root.

Суть проблемы в том, что при использовании в процессе ввода спецсимвола ^U (очистка строки) и при сбое операции записи, код, отвечающий за очистку выведенных символов «*», сбрасывает данные о доступном размере буфера, но не возвращает в исходное значение указатель на текущую позицию в буфере. Другим фактором, способствующим эксплуатации, является отсутствие автоматического отключения режима «pwfeedback» при поступлении данных не с терминала, а через входной поток (данная недоработка позволяет создать условия для возникновения ошибки записи, например, на системах с однонаправленными неименованными каналами ошибка возникает при попытке записи за конец канала для чтения).

Так как атакующий может полностью контролировать перезапись данных в стеке, не представляет трудности создание эксплоита, позволяющего повысить свои привилегии до пользователя root. Проблема может быть эксплуатирована любым пользователем, независимо от прав на использование sudo и наличия специфичных для пользователя настроек в sudoers. Для блокирования проблемы следует убедиться в отсутствии в /etc/sudoers настройки «pwfeedback» и при необходимости отключить её («Defaults !pwfeedback»). Для проверки наличия проблемы можно выполнить код:

$ perl -e ‘print((«A» x 100 . «\x{00}») x 50)’ | sudo -S id
Password: Segmentation fault

ماخذ: opennet.ru

نیا تبصرہ شامل کریں