There has been a healthy reaction to our initial post on our research into the RSA SecureID Software Token. A number of readers had questions about certain aspects of the research, and I thought I’d clear up a number of concerns that people have.
The research pointed out two findings; the first of which is in fact a design vulnerability in RSA software’s “Token Binding” mechanism. The second finding is another design issue that affects not only RSA software token but also any other software, which generates pseudo-random numbers from a “secret seed” running on traditional computing devices such as laptops, tablets or mobile phones. The correct way of performing this has been approached with hardware tokens, which are often tamper-resistant.
Let me first explain one of the usual use cases of RSA software token deployments:
- The user applies for a token via a RSA self-service console or a custom web form
- The user receives an email which contains the “software token download URL”, once the software is installed, they should open the program and then choose Token Storage Devices where they would read the “Device Serial Number” and reply back with this device serial number to complete their token request.
- The second email will contain an attachment of the user’s personal RSA SecurID Token Configuration file, which they will import to the RSA software token. This configuration file is bound to the users’ laptop or PC.
- The third email contains an initial password to activate the token.
An attacker who is able to capture the victim’s configuration file and initial password (The security of this initial password is subject to future research at SensePost and will be released in the future) would be able to import it into his token using the described method to bypass the token binding. This attack can be launched remotely and does not require a “fully compromised machine” as RSA have stated.
The second finding, as I mentioned before, is a known issue with all software tokens. Our aim at SensePost was to demonstrate how easy/hard it would be for an attacker, who has already compromised a system, to extract RSA token secrets and clone them on another machine. A number of people commented on the fact that we did not disclose the steps required to update the LSA secrets on the cloned system. Whilst this technique is relatively easy to do, it is not required for this attack to function.
If a piece of malware was written for this attack, it does NOT have to grab the DPAPI blobs and replicate them on the attackers machine. It can simply hook into the CryptUnprotectData and steal the decrypted blobs once the RSA software token starts execution. The sole reason I included the steps to replicate the DPAPI on another machine, was that this research was performed during a real world assessment, which was time-limited. We chose to demonstrate the attack to the client by replicating the DPAPI blobs instead of developing a proof of concept malcode.
A real-world malware targeting RSA software tokens would choose the API hooking method or a similar approach to grab the decrypted seed and post it back to the attacker.
“I’m also curious to know whether software token running on smartphones might be vulnerable.”
The “Token Binding” bypass attack would be successful on these devices, but with a different device serial ID calculation formula. However, the application sandboxing model deployed on most modern smartphone operating systems, would make it more difficult for a malicious application, deployed on the device, to extract the software token’s secret seeds. Obviously, if an attacker has physical access to a device for a short time, they would be able to extract those secrets. This is in contrast to tamper-proof hardware tokens or smart cards, which by design provide a very good level of protection, even if they are in the hands of an attacker for a long time.
“Are the shortcomings you document particular to RSA or applicable to probably applicable to Windows software tokens from rival vendors too?”
All software tokens found to be executing a pseudo-random number generation algorithm that is based on a “secret value”, are vulnerable to this type of cloning attack, not because of algorithms vulnerabilities, but simply because the software is running on an operating system and storage that is not designed to be tamper-resistance like modern smart cards, TPM chips and secure memory cards.
One solution for this might be implementing a “trusted execution” environment into CPUs, which has been done before for desktop and laptops by Intel (Intel TXT) and AMD. ARM’s “trustzone” technology is a similar implementation, which targets mobile phone devices and secures mobile software’s from logical and a range of physical attacks.