Хакер C. L. Rokr нашёл способ обхода механизма проверки подписей программ при запуске в Windows RT. Таким образом, становится возможной установка и запуск произвольных десктопных приложений под Windows RT.
Windows RT — особая версия Windows 8, оптимизированная для процессоров ARM. Её обычно устанавливают на планшеты, в том числе на фирменный Microsoft Surface. В комплекте поставки отсутствует Windows Media Player, а единственными десктопными приложениями могут быть только те, которые поставляются вместе с операционной системой: это File Explorer, Internet Explorer и Office RT. В дальнейшем устанавливать на устройство можно только приложения, созданные с использованием кроссплатформенных API-интерфейсов Windows Runtime. Получив соответствующую цифровую подпись, такое приложение может быть установлено на Windows RT. Запрещено портировать или запускать на Windows RT десктопные приложения со старых версий Windows.
Операционная система осуществляет проверку подписи приложения при запуске. В своём блоге автор пишет, что эксплойт стал возможен благодаря той тщательности, с которой компания Microsoft осуществила портирование кода операционной системы с платформы x86 на платформу ARM. Они портировали код настолько точно, что даже относительный адрес в памяти 0x19FFA6
имеет здесь такую же функцию — хранить байт, который соответствует минимальному уровню качество подписи кода, который приемлем для запуска приложения. Значение “0” соответствует отсутствию цифровой подписи. Значение “8” соответствует цифровой подписи, одобренной Microsoft. Максимальное значение “12” — это системные компоненты Windows.
На компьютерах x86 приложения запускаются с минимальным уровнем “0”, а под Windows RT у них должно быть значение качества подписи минимум “8”. Этот параметр хранится непосредственно в ядре и не может быть изменён. Однако, после того как система загружает его в память, его можно изменить непосредственно в памяти. Автору эксплойта удалось внедрить в память необходимый код через процесс CSRSS (Client/Server Runtime Subsystem), компонент ядра Windows, с помощью дебаггера, который модифицирует данные CSRSS в памяти. Таким образом, удалось загрузить код, который меняет значение “8” на “0” по известному адресу.
Возможно, кто-нибудь использует работу C. L. Rokr и выпустит простенькую утилиту, которая будет выполнять всю работу без необходимости разбираться с дебаггером. В любом случае, джейлбрейк нужно будет повторять после каждого запуска ОС. Как в случае с мобильными устройствами, это называется «привязанный джейлбрейк».
Хакер обращается с призывом к Microsoft снять ненужное «маркетинговое» ограничение на запуск приложений Win32 под Windows RT или хотя бы дать пользователям самим возможность принимать решения, какие программы они могут запускать. То есть сделать проверку цифровых подписей отключаемой опцией.