Утечка информации из стека и переполнение кучи — лишь видимая верхушка айсберга.
Недавно специалисты Microsoft обнаружили в программной библиотеке «ncurses» ряд уязвимостей, связанных с повреждением памяти. Эти уязвимости могут быть использованы злоумышленниками для выполнения вредоносного кода на уязвимых системах Linux и macOS.
« ncurses » — это программная библиотека, выпущенная в далёком 1993 году и широко используемая для разработки текстовых пользовательских интерфейсов. Она предоставляет API для создания интерфейса, который может функционировать на множестве терминалов и систем, включая Unix-подобные операционные системы (Linux, macOS и другие). Библиотека позволяет программистам управлять отдельными символами, строками и другими элементами на экране, обеспечивая тем самым более удобное и функциональное взаимодействие с пользователем в текстовом режиме.
Согласно техническому отчёту , опубликованному сегодня исследователями из Microsoft Threat Intelligence, злоумышленники могут использовать так называемое «отравление переменных окружения» (environment variable poisoning) для объединения уязвимостей, что позволяет повысить уровень привилегий и выполнить произвольный код в контексте целевой программы.
Уязвимости имеют общий идентификатор CVE-2023-29491 и оценку по шкале CVSS 7.8. Судя по логу изменений на сайте ncourses , проблемы были устранены в 8 апреля 2023 года. Microsoft также сообщила, что работала совместно с Apple для устранения проблем, характерных для macOS-систем.
Переменные окружения — это пользовательские значения, которые могут быть использованы несколькими программами в системе. Манипуляции с ними могут привести к тому, что приложения будут выполнять несанкционированные операции.
В ходе аудита кода и фаззинга специалисты Microsoft обнаружили, что библиотека «ncurses» обращается к нескольким переменным окружения, включая «TERMINFO». Эта переменная может быть «отравлена», что в сочетании с обнаруженными уязвимостями может привести к повышению привилегий атакующих.
Обнаруженные уязвимости включают в себя утечку информации из стека (stack information leak), путаницу параметризованных строковых типов (parameterized string type confusion), ошибку «off-by-one», выход за пределы кучи (heap out-of-bounds).
Исследователи подчеркнули, что для получения контроля над программой через эксплуатацию уязвимостей, связанных с повреждением памяти, требуется многоступенчатая атака.
«Для того, чтобы злоумышленник мог повысить уровень привилегий, возможно, потребуется объединить несколько уязвимостей, таких как эксплуатация утечки информации из стека для получения полномочий произвольного чтения, вместе с эксплуатацией переполнения кучи для получения полномочий записи», — объяснили исследователи.
Разработчики должны регулярно проводить аудит кода и тестирование на проникновение, чтобы выявлять и устранять подобные проблемы безопасности до того, как они будут использованы злоумышленниками. Администраторы систем тоже должны следить за выпуском исправлений и оперативно устанавливать критические обновления. Только совместными усилиями можно минимизировать риски, связанные с уязвимостями в ПО.
От классики до авангарда — наука во всех жанрах