
На ежегодной конференции Recon 2015 в Монреале, которая фокусируется на проблемах ИБ и IT-инжиниринга, настоящую сенсацию произвел доклад польского эксперта по ИБ из подразделения Google Project Zero Матеуша Юрчика. Исследовав структуру кода стандартных шрифтов ОС Windows и ПО Adobe Reader, он выявил 15 уязвимостей — от условно незначительных до критических, из-за которых безопасность всей системы постоянно находилась на грани риска. Шутка ли, потенциальная уязвимость сохранялась почти два десятилетия в коде шрифтов ОС семейства Windows NT — с версии 4.0 вплоть до версии 8.1 Update1.
Юрчик в своем выступлении особо отметил, что одна уязвимость шрифта позволяет управлять всей системой. «Даже в 2015 году — в эпоху высокого качества ПО и механизмов безопасности — одной хорошей ошибки в системе будет достаточно для полного системного сбоя», — отмечал он в докладе. Свое исследование польский эксперт начал с изучения программного кода, с точки зрения уровня безопасности драйверного модуля Adobe Type Manager Font: ATMFD.DLL, который обеспечивал поддержку инструкций шрифтов Adobe Type 1 и OpenType в ядре Windows всего семейства NT. Он предположил, что в коде шрифтов могут иметься уязвимости, а значит, это затрагивает безопасность и ОС, и ПО, которые подгружают их.
«В частности, я сосредоточился на работе с так называемыми модульными функциями CharStrings, которые по существу являются программами бинарной кодировки PostScript на BLEND-инструкциях и конкретной среде исполнения, которые отвечают за рендеринг очертаний каждого глифа в определенном размере точки для заданного размера шрифта», — вспоминал Матеуш о ходе своих изысканий. В процессе исследования он обнаружил 15 уязвимостей, допускающих удалённое исполнение кода или повышение привилегий. При этом он пояснил, что «слабое звено» кода шрифтов Adobe Type 1 и OpenType входят в стандартные библиотеки Windows GDI, Adobe Reader, Microsoft DirectWrite и Windows Presentation Foundation.
Относительно главной уязвимости, которая «позволяет управлять всем», в том числе и кросс-программным контролем, и общими базами кода, и эксплуатационным режимом, Матеуш Юрчик сказал: «Исключительно мощный примитив, который даёт эта уязвимость, сочетается с тем фактом, что она присутствует во всех совместимых версиях Adobe Reader и Microsoft Windows (32-bit). Можно сделать цепочку эксплоитов, которая ведёт к полной компрометации системы всего с одной уязвимостью. Всё это делает данную вещь одной из самых интересных проблем в безопасности, с которой я сталкивался до сих пор». Резюмируя, он пояснил, что под главной уязвимостью он подразумевает две наиболее серьезные «дыры»: CVE-2015-3052 и CVE-2015-0093, которые существуют в 32-битных и 64-битных системах и проявляются через Adobe Type Manager Font Driver из ядра ОС Windows всего семейства NT вплоть до версии 8.1.
Переводя разговор в практическую плоскость, Юрчик сообщил, что выявленные им в шрифте «дыры» могли бы быть использованы киберпреступниками, замыслившими удаленно запускать какой-то вредоносный код или назначать системный сбой. Для демонстрации взлома системы исследователь использовал специально сформированные шрифты и, управляя инструкциями в Type 1, запустил на исполнение код через Adobe Reader 11.0.10, — и он успешно обошел «песочницу» и, получив доступ к системе и используя уязвимость Adobe Type Manager Font Driver (в сборке Windows 8.1 Update1 32-bit/64-bit) расширил свои привилегии.
Правда, теперь вроде бы все опасения позади: для ликвидации уязвимостей при работе шрифтов корпорации Microsoft и Adobe оперативно выпустили в мае обновления безопасности — MS15-021, APSB15-10, MS15-044. Но, по мнению Матеуша Юрчика, точку в этом деле ставить пока рано: проблема окончательно не разрешиться «до тех пор, пока обработка шрифта в системе не будет проводится через привилегированные режимы системы безопасности». При этом он признался, что Microsoft движется в правильном направлении: в ядро своей новой ОС Windows 10 для обработки шрифтов разработан драйвер с особым режимом исполнения кода.