Несколько лет назад дней они выпустили новости из того, что было идентифицировано уязвимость в Ghostscript (CVE-2020-15900) что могло вызвать модификацию файла и выполнение произвольной команды при открытии специально отформатированных документов PostScript.
Тем, кто не знаком с Ghostscript, следует знать, что это механизм рендеринга для содержимого Postscript и PDF и обычно используется для преобразования документов PDF и Postscript в изображения для предварительного просмотра, миниатюр и печати.
Он также используется для воспроизведения документов в полном качестве для многих программ просмотра PDF, включая популярные программы просмотра на Android, и лицензирован несколькими крупными компаниями, такими как Google, для рендеринга в облаке.
Об уязвимости в Ghostscript
Обнаружена ошибка при использовании оператора rsearch. Нестандартный PostScript в документе, который позволяет вызвать переполнение типа uint32_t при расчете размера, перезаписывать области памяти из буфера назначается и получает доступ к файлам в файловой системе, что может быть использовано для организации атаки с целью выполнения произвольного кода в системе (например, путем добавления команд в ~ / .bashrc или ~ / .profile).
Фрагмент, найденный AFL, поместил в стек пустую строку: пустые скобки () скопировали ссылку на нее, в результате получился стек с двумя пустыми строками () (), а затем был выполнен обратный поиск. Другими словами, он искал пустую строку в пустой строке, начиная с конца.
К сожалению, они упустили пограничный случай, когда ищется пустая строка. При поиске пустой строки это определяется как немедленный успех: искать нечего, поэтому мы переходим к концу. Однако результат должен быть разделен на значения до, после и после совпадения. К сожалению, код предполагал, что мы просмотрели хотя бы один раз и неправильно вычислили длину результата после матча, вычтя единицу из нуля, что привело к возврату к максимальному значению: 4,294,967,295 XNUMX XNUMX XNUMX.
Эта ошибка это дефект, связанный с повреждением памяти, при котором существует вероятность сбоя и это происходит постоянно. Нет необходимости иметь дело с защитой стека и т. Д., Просто читайте и записывайте все, что хотите, в массивный сегмент памяти. Это упростило его эксплуатацию для тех, кто не является опытным разработчиком эксплойтов.
Из-за этого переполнения, эта строка никогда не выделялась и не занимала реального места, но его длина простиралась на другое воспоминание. Попытка прочитать или записать эту память по случайным адресам выйдет за пределы памяти, отсюда и все ошибки фаззинга. Однако мы могли бы сохранить ссылку, чтобы разрешить ее использование, используя этот фрагмент кода:
Важно учитывать, что уязвимости в Ghostscript более серьезныпоскольку этот пакет используется во многих популярных приложениях для обработки PostScript и PDF. Например, Ghostscript вызывается при создании эскизов на рабочем столе, при индексировании данных в фоновом режиме и при преобразовании изображений.
Для успешной атаки во многих случаях достаточно просто загрузить файл эксплойта или просмотреть каталог с ним в Nautilus.
Уязвимости в Ghostscript также можно использовать через драйверы образов. на основе пакетов ImageMagick и GraphicsMagick, передавая файл JPEG или PNG, который содержит код PostScript вместо изображения (этот файл будет обрабатываться в Ghostscript, поскольку тип MIME распознается содержимым и не зависит от расширения).
Решение
Проблема затрагивает версии с 9.50 по 9.52. (Ошибка существует с версии 9.28rc1, но, по словам исследователей, выявивших уязвимость, она появилась с версии 9.50).
Но исправление уже было предложено в версии 9.52.1 в дополнение к этому иобновления были опубликованы пакетов исправлений для некоторых дистрибутивов Linux, таких как Debian, Ubuntu и SUSE.
В то время как пакеты в RHEL не затрагиваются.
источник: https://insomniasec.com