В PDFium, компоненте браузера Chrome, который предназначен для отображения документов PDF, обнаружена опасная уязвимость. Она позволяет встраивать в PDF вредоносный код, исполняемый при просмотре документа.
Для эксплуатации этой уязвимости злоумышленник должен сформировать вредоносный документ PDF, содержащий изображение в формате JPEG2000 с модифицированным заголовком. Если жертва откроет этот документ в Chrome, то на её компьютере будет автоматически исполнен встроенный в PDF код.
Уязвимость скрывается в библиотеке OpenJPEG, при помощи которой PDFium работает с форматом JPEG2000. Интересно, что корень проблемы — не сама библиотека, а особый процесс сборки, который применяется при разработке Chrome. В обычной версии OpenJPEG переполнение буфера предотвращено при помощи вызова assert, но при включении библиотеки в состав Chrome этот вызов оказывается опущен. В результате проверка условия, которое указывает на возможное переполнение буфера, больше не выполняется.
В Talos продемонстрировали уязвимость на документе PDF с изображением в формате JPEG2000, у которого изменено значение маркера SIZ. Согласно маркеру, число компонентов равно нулю. При этом информация об индивидуальных компонентах, которая должна идти следом, отсутствует; Таким образом специалисты компании сумели вызвать сбой в той самой функции, которая подвержена переполнению буфера.
Talos уведомил Google об ошибке. Разработчики Chrome решили проблему, заменив исчезающий assert на условие, описанное при помощи if. В свежих версиях браузера уязвимость отсутствует.