В Ghostscript обнаружена опасная уязвимость

В Ghostscript обнаружена опасная уязвимость

Уязвимость заключается в том, что код Ghostscript раскрывает слишком много информации о себе через уведомления об ошибках.

Изучив новый выпуск популярного PDF-интерпретатора Ghostscript, исследователь безопасности Тэвис Орманди (Tavis Ormandy) из Google Project Zero обнаружил частично исправленную уязвимость во всех версиях программы вплоть до 9.26.

Орманди выявил проблему 11 декабря прошлого года в ходе анализа патча, присланного ему разработчиками Ghostscript из компании Artifex. Патч оказался недостаточно эффективным, поэтому исследователь публично сообщил о проблеме только после выхода новой, исправленной версии программы.

Ghostscript представляет собой интерпретатор Postscript и Adobe PDF с открытым исходным кодом, позволяющий пользователям Unix-подобных ОС просматривать PDF-файлы. Уязвимость также затрагивает web-серверы Ghostscript, поскольку такие наборы инструментов, как ImageMagick, используют его для преобразования просматриваемых пользователями PDF-файлов и изображений.

Уязвимость заключается в том, что код Ghostscript раскрывает слишком много информации о себе через уведомления об ошибках, которые могли контролироваться злоумышленником. Проблема связана с подпрограммами, скрытыми в псевдодифференциальных операторах. Для защиты подпрограмм от глаз пользователей они должны помечаться как executeonly. Однако, по словам Орманди, содержимое подпрограмм также должно быть защищено от отображения в обработчиках ошибок. Для этого используется команда odef, превращающая подпрограммы в псевдодифференциальных операторов.

Однако псевдодифференциальные операторы не являются достаточной защитой, отметил исследователь. «Подпрограммы в псевдодифференциальных операторах сами должны быть псевдодифференциальными операторами», - пишет Орманди. Если программист забыл об этом или просто не знал, то операторы все равно могут оказаться в стеке операндов. При наличии в коде ошибки переполнения стека стек операндов будет открыт перед обработчиком ошибок, и его потенциально можно просмотреть и использовать.

Квантовый кот Шрёдингера ищет хозяина!

Живой, мертвый или в суперпозиции? Узнайте в нашем канале

Откройте коробку любопытства — подпишитесь