A hacker claims to have found a method of bypassing the code integrity mechanism in Windows RT, therefore allowing for desktop-style programs to be installed on the platform.
The hacker, who uses the online moniker 'clrokr', documented the bypass method in a blog post yesterday.
Windows RT is a special version of Microsoft Windows designed for lightweight PCs and tablets that are based on the ARM architecture, including Microsoft's Surface tablet. Compared to Windows 8, Windows RT only allows Metro apps downloaded from the Windows Store to be installed. These applications are designed only for the Metro interface and don't have access to the regular Windows desktop.
That said, Windows RT does come with a few preinstalled desktop-enabled applications, like Microsoft Office RT, a special version of Microsoft Office 2013, and Internet Explorer 10.
According to clrokr, the restriction of installing only Metro-style apps on Windows RT is enforced through a code integrity mechanism that checks the application's signature before allowing it to be installed. This prevents users from simply taking a desktop application compiled for the ARM architecture and installing it on their Windows RT devices.
"Deep in the kernel, in a hashed and signed data section protected by UEFI's Secure Boot, lies a byte that represents the minimum signing level," clrokr said. "The minimum signing level determines how good an executable's signature is on a scale like this: Unsigned(0), Authenticode(4), Microsoft(8), Windows(12). The default value on x86 machines [Windows 8 and previous versions] is of course 0 because you can run anything you like on your computer. On ARM machines, it defaults to 8."
The minimum signing level enforced by Windows RT can be changed by exploiting a vulnerability in the Windows kernel that had existed for some time and is also present in Windows RT, in order to modify that special byte in memory, clrokr said.
The hacker decided to disclose the bypass method publicly because he feels that Microsoft's decision to artificially ban traditional desktop applications on the platform is a bad marketing move that decreases the value of Windows RT devices.
"Windows RT needs the Win32 ecosystem to strengthen its position as a productivity tool," he said. "There are enough 'consumption' tablets already."
"The reason I tried to disable Code Integrity has nothing to do with Win32 or WinRT," he said in a discussion thread on Reddit. "It has to do with choice. Microsoft wants devs to go through the [Windows] Store and it is understandable from a money standpoint. But allowing Win32 apps could have helped the chicken-and-egg problem the Surface is going to die from."
Clrokr doesn't agree with the argument that traditional desktop applications require more resources and consume more battery power than Metro-style apps, which might have led to Microsoft's decision to ban them in Windows RT.
"This is not quite true," he said. "It all really depends on the quality of the programs. Win32 and WinRT apps are not as different as you might think. You can easily build a crappy, slow, unresponsive WinRT app. And there is no reason to believe that Win32 apps have higher requirements when it comes to processing power and memory."
Microsoft is aware of the disclosed exploit and is looking into the matter. "We are actively investigating this report and will take appropriate action to help protect customers," the company said Monday via email.
The hack does have some limitations. For one, the signing-level byte cannot be permanently changed because of the Secure Boot feature that checks the integrity of the OS after every reboot and reverts unauthorised changes.
This means that the bypass procedure must be performed after every reboot. Tablet devices are not rebooted that often, so this is not necessarily a huge inconvenience, but it does mean that the use of the hack is, at least for now, restricted to more technical users.
Another limitation is that x86 desktop programs can't simply be installed on Windows RT; they need to be recompiled for the ARM architecture. For open source programs this might prove easier to do, but for closed-source ones the only way to do it is to convince the original developers to create versions for ARM.
In a discussion thread on the XDA-Developers forums, a user claims to have already compiled PuTTY - an open source SSH, Telnet and rlogin client application - for ARM and successfully installed it on a Surface Tablet using clrokr's hack.
In the same thread someone suggested the idea of porting Chromium, the open source browser that serves as the basis for Google Chrome, to ARM and installing it on Microsoft Surface. Clokr also said on Reddit that he has seen 7-Zip running on Windows RT.