Security Week 2448: десятилетняя уязвимость в утилите needrestart
На прошлой неделе специалисты компании Qualys сообщили об обнаружении достаточно серьезной уязвимости в утилите needrestart. Данная утилита используется, в частности, в ОС Ubuntu Server начиная с версии 21.04 и запускается после установки и обновления программных пакетов. Ее задача — определить, что система или отдельные программы должны быть перезапущены в результате произведенных в системе изменений и инициировать перезапуск. Ошибки в коде программы обеспечивают сразу несколько способов выполнения произвольного кода. В результате получается надежное средство повышения привилегий обычного пользователя до root, так как сама needrestart выполняется с привилегиями суперпользователя.
Формально в утилите были зафиксированы пять разных уязвимостей. Часть из них получила достаточно высокий рейтинг по шкале CVSS — 7,8 балла. Все уязвимости закрыты в версии needrestart 3.8, причем существовали они как минимум начиная с версии 0.8, выпущенной в 2014 году. Именно тогда в утилиту была добавлена возможность отслеживания интерпретаторов языков высокого уровня. Если сам интерпретатор был обновлен, вполне логично, что необходимо перезапустить программы на этом языке программирования. Отсутствие необходимых проверок позволяет в теории запустить не настоящий, установленный в системе, интерпретатор кода на языке Python или Ruby, а произвольную программу, путь к которой может задать атакующий.
Исследователи из Qualys показали, как это работает, на примере уязвимости CVE-2024–48990. Чтобы определить, нуждается ли программа на Python в перезапуске, needrestart выясняет версию интерпретатора, которую данный процесс использует, забирая ее из /proc/pid/environ. Это обеспечивает возможность провести следующую атаку. Пользователь запускает код на Python и прописывает для него переменную окружения типа «PYTHONPATH=/home/jane». В директорию /home/jane сохраняется библиотека «importlib/__init__.so». Далее достаточно дождаться условий для перезапуска всех скриптов на Python, во время которого будет выполнена поддельная версия интерпретатора. Выполнена она будет с правами суперпользователя, что даст соответствующие права атакующему. Аналогичный трюк можно провернуть с интерпретатором Ruby, что было выделено в отдельную уязвимость CVE-2024–48992.
Уязвимость CVE-2024–48991 предлагает другой вариант атаки. Здесь ошибка в коде делает возможной атаку TOCTOU (Time-of-check to time-of-use). Баг был обнаружен в коде проверки типа процесса. Прежде чем использовать, например, интерпретатор Python, needrestart должен убедиться, что процесс действительно его использует. Чтение данных о процессе происходит гораздо раньше проверки, что позволяет создать состояние гонки, когда утилита проверяет одни данные, а запускает другие. Результат тот же: выполнение произвольного кода с правами root.
Еще две уязвимости (CVE-2024–10224 и CVE-2024–11003) могут быть задействованы при обработке скриптов на языке Perl. Здесь интерпретатор не запускается напрямую; вместо этого используется штатный модуль ScanDeps, анализирующий скрипты на этом языке программирования. Как выяснилось, если атакующий контролирует имя скрипта на Perl, он также может создать условия для повышения привилегий. Примечательно, что данный тип уязвимостей известен как минимум с 1999 года. Для решения этой проблемы в needrestart полностью удалили зависимость от ScanDeps, использовав для анализа процессов на Perl набор регулярных выражений, похожий на таковые для Ruby и Python.
Помимо установки новой версии needrestart можно также ограничить возможности утилиты по использованию интерпретаторов, добавив строку в конфигурационный файл:
# Disable interpreter scanners.
$nrconf{interpscan} = 0;
Что еще произошло
Свежая публикация экспертов «Лаборатории Касперского» разбирает атаки на GNSS-приемники с доступом через Интернет.
19 ноября компания Microsoft опубликовала достаточно длинный документ о новых средствах безопасности в Windows 11. Часть нововведений призвана уменьшить шансы на повторение инцидента с защитным решением CrowdStrike, когда ошибка в обновлении привела к неработоспособности множества систем по всему миру. В частности, разработчикам защитного ПО станут доступны технологии, позволяющие выполнять бо́льшую часть операций с привилегиями пользователя, а не ядра ОС. Кроме того, испытывается система, требующая дополнительной аутентификации при запуске программ с привилегиями администратора. Также планируется доставлять больше критических обновлений ОС без необходимости в перезагрузке системы. Отдельно сообщается о разработке фичи Quick Machine Recovery. Она позволит администраторам удаленно восстанавливать работоспособность систем, отказывающихся загружаться, как это произошло в случае с обновлением CrowdStrike.
Компания D-Link сообщает о новой критической уязвимости в устаревших устройствах — на этот раз в моделях VPN-роутеров DSR-150, DSR-150N, DSR-250 и DSR-250N. Уязвимость позволяет выполнять произвольный код на устройстве без аутентификации. Патча для устройств не будет; производитель рекомендует заменить их на более современные.
Специалисты по безопасности из Google поделились новыми успехами в поиске уязвимостей с использованием технологии фаззинга, где подаваемые на ввод тестируемой программы данные управляются искусственным интеллектом. Задача ИИ-фаззинга — улучшить автоматизацию тестирования. Новый метод уже привел к обнаружению 26 уязвимостей, включая некритичную ошибку в библиотеке OpenSSL. OpenSSL в данном случае — это пример хорошо протестированного кода, поэтому обнаружение в нем новой проблемы, тем более с использованием автоматизированной системы, представляет интерес.
Организация MITRE представила новый хит-парад ошибок в программном обеспечении. В отличие от других рейтингов, здесь оцениваются не конкретные уязвимости в ПО, а часто встречающиеся типы ошибок. В TOP 3 вошли уязвимости типа XSS, запись за пределами границ выделенного участка памяти и SQL-инъекция.
Срочные обновления для iOS и macOS закрывают серьезные уязвимости в компонентах JavaScriptCore и WebKit. По данным компании Apple, эти уязвимости на момент обнаружения активно использовались в атаках на компьютеры Apple, использующие процессоры Intel.
Издание BleepingComputer пишет о достаточно необычном методе распространения вредоносных ссылок — через стриминговый сервис Spotify. Для этого там создаются плейлисты с названиями типа Sony Vegas Pro 13 Crack. Подобный метод наверняка повышает вероятность, что ссылка на вредоносный плейлист окажется достаточно высоко в результатах поиска по соответствующим ключевым словам.