L Дослідники безпеки Qualys виявили критичну вразливість (CVE-2021-3156) в утиліті sudo, який призначений для організації виконання команд від імені інших користувачів.
Вразливість дозволяє неаутентифікований доступ з правами root. Проблема може використовуватися будь-яким користувачем, незалежно від присутності в системних групах та наявності запису у файлі / etc / sudoers.
Атака не вимагає введення пароля користувача, тобто вразливість може бути використана зовнішньою особою для підвищення привілеїв у системі після того, як вразливість була скомпрометована в непривілейованому процесі (включаючи ті, які розпочато з користувача "ніхто").
Для пошуку вразливості у вашій системі просто запустіть команду "sudoedit -s /", і вразливість буде присутня, якщо відображається повідомлення про помилку, що починається з "sudoedit:".
Про вразливість
Уразливість з'явилася з липня 2011 року і спричинена переповненням буфера при обробці символів екранування рядків у параметрах, призначених для виконання команд у режимі оболонки. Режим оболонки вмикається шляхом вказівки аргументів "-i" або "-s" і викликає виконання команди не безпосередньо, а за допомогою додаткового виклику оболонки з позначкою "-c" ("команда sh -c»).
Суть полягає в тому, що при нормальному запуску утиліти sudo вона уникає спеціальних символів, вказуючи параметри "-i" та "-s", але при запуску утиліти sudoedit параметри не захищаються, як parse_args () Функція встановлює змінну середовища MODE_EDIT замість MODE_SHELL і не скидає значення "valid_flags".
У свою чергу незахищена передача символів створює умови для появи ще однієї помилки в контролері, який видаляє символи втечі перед перевіркою правил sudoer.
Обробник неправильно аналізує наявність символу зворотної косої риски не виходячи з кінця рядка, він вважає, що ця зворотна коса риса витікає ще з одного символу і продовжує читати дані за межі рядка, копіюючи їх в буфер "user_args" і перезаписуючи області пам'яті поза буфером.
І згадується, що при спробі маніпулювати значеннями в командному рядку sudoedit зловмисник може домогтися накладання перезаписуваної черги в дані, що впливає на подальший хід роботи.
На додаток до створення експлоїту, це спрощує той факт, що зловмисник має повний контроль над розміром буфера user_args, який відповідає розміру всіх переданих аргументів, а також контролює розмір і вміст даних, записаних за межами буфера, використовуючи змінні середовища.
Дослідникам безпеки Qualys вдалося підготувати три експлойти, робота яких базується на переписанні вмісту структур sudo_hook_entry, service_user та def_timestampdir:
- Скасувавши sudo_hook_entry, двійковий файл з іменем "SYSTEMD_BYPASS_USERDB" можна запустити як root.
- Замінивши service_user вдалося запустити довільний код як root.
- Перевизначивши def_timestampdir, вдалося змити вміст стеку sudo, включаючи змінні середовища, у файл / etc / passwd та домогтися заміни користувача кореневими привілеями.
Слідчі показали, що подвиги працюють для отримання повних привілеїв root на Ubuntu 20.04, Debian 10 та Fedora 33.
Вразливість можна використовувати в інших операційних системах та дистрибутивах, але перевірка дослідників була обмежена Ubuntu, Debian та Fedora, плюс згадується, що всі версії sudo 1.8.2 - 1.8.31p2 та 1.9.0 - 1.9.5p1 у налаштуваннях за замовчуванням зачіпаються. Пропоноване рішення в sudo 1.9.5p2.
Слідчі попередньо повідомив розробників дистриб’ютори, які вже скоординовано випустили оновлення пакетів: Debian, RHEL, Fedor, Ubuntu, SUSE / openSUSE, Arch Linux, Slackware, Gentoo та FreeBSD.
В кінці кінців якщо вам цікаво дізнатись більше про це щодо вразливості, ви можете перевірити деталі У наступному посиланні.