Могут ли шрифты TrueType содержать вредоносный код?
Я искал информацию об этом и не мог найти что-нибудь настолько твердое. Я использовал инструмент TTX в библиотеке fonttools, чтобы декомпилировать шрифт в формат XML, но не смог ничего извлечь из файла.
Возможно ли, что TrueType Font может содержать исполняемый код, который может быть потенциально вредоносным?
3 ответа
Согласно записи в Википедии о TrueType, во время рендеринга используется язык подсказок. Этот язык подсказок обрабатывается виртуальной машиной, но он позволяет злонамеренному коду подсказок использовать уязвимости в различных реализациях этой виртуальной машины.
Обратите внимание, что некорректные невыполненные данные могут привести к переполнению буфера и разрешить выполнение кода там, где он не должен, поэтому тот факт, что формат данных не содержит какого-либо типа исполняемого или виртуально исполняемого кода, не означает, что нет уязвимости, которые могут привести к удаленному выполнению кода.
Ну... не прямо, но совершенно определенно косвенно.
Существует тип вредоносного ПО, который формирует фактические байты своего исполняемого файла с использованием файла кода, который уже присутствует в целевой системе. Этот существующий файл кода должен быть одинаковым в каждой системе, которая должна быть заражена. Единственный код в поставляемой вредоносной программе - это код, который собирает байты, зная позицию, байт на байт, кода, который будет построен.
Например, если файл кода имеет байт 0xF3 в позиции 105, а следующий байт, необходимый для сборки вредоносного кода, - 0xF3, то, что закодировано вредоносной программой сборки, - "105", и он знает, как получить фактический байт кода из файл.
Итак, какой файл одинаков в большинстве / всех системах Windows, например? Оказывается, файл шрифта Wingdings не изменился в Windows, возвращаясь к тому, что собирается иметь любая современная система.
И я не мечтал об этом - все это описано здесь, с примерами кода..
Определенно ДА. В ссылке (и связанных ссылках) говорится, что шрифты TrueType предназначены для содержания кода для виртуальной машины, что в некоторых (большинстве) версий Windows код выполнялся (виртуальной машиной) в контексте ядра. Использование виртуальной машины должно изолировать код шрифта от остальной части машины, но были выявлены уязвимости.
Моя точка зрения в целом негативная, но в качестве положительного момента я цитирую (со указанной страницы), что «Windows 10 Aniversary Update теперь анализирует шрифты в режиме USER», поэтому суперпользователь может быть в относительной безопасности, в том смысле, что если шрифты используются только пользователями без привилегий, операционная система не имеет прямого доступа к шрифту, но я не обещаю никакой безопасности :-)