BitLocker encryption broken in 43 seconds with sub-$10 Raspberry Pi Pico
tomshardware.com
tomshardware.com
Developing the exploit itself also took significantly more than $10, it's not like you can just hook up a Raspberry Pi to any circuit board and start bit banging blindly. Without a scope that supports digital signal processing, you'll struggle to adapt this attack to TPMs that speak a different protocol.
It's a shame that there's no E2EE between the CPU and the TPM, but luckily on many modern devices with fTPMs this attack doesn't apply. Unlocking your disk with systemd-boot will still be relatively safe.
On affected systems, the workaround (a TPM PIN) still leaves for a much more secure encryption system than a plain password would, assuming you have stored your backup key somewhere safe.
Your broader point is fair though. Because this explout is nullified by a built-in TPM (already here) or the lanes being end to end encrypted (ship has sailed)
TPM+PIN prevents taking/imaging the drive and trying an offline attack.
And TPM is rate-limited, another security in depth feature.
A "PIN" in the TPM sense is alphanumeric and will be entered the same way the user enters a passphrase, except the secret that actually protects the disk isn't derived from that passphrase.
It's much harder to brute force a TPM PIN than it is to brute force your average PKDF function. The brute force complexity grows to encompass the full key space rather than the key space of a key derived from memorable alphanumeric text. With a proper passphrase this probably won't matter much in terms of feasibility, but a lot of users pick terrible passwords that are easy to brute force with a whole bunch of servers, while with a TPM chip an attacker would need to choose another method (i.e. attacking the TPM itself).
It's like with console modchips - once someone has developed an attack, every highschooler with a soldering iron and moderate skills can do it.
And yes, it's only $10 or thereabouts for a logic analyzer that can decode LPC bus communications.
2019 ref - https://pulsesecurity.co.nz/articles/TPM-sniffing
RAM, PCIe and USB remain unencrypted though so you can just interpose one of those if you're performing an evil maid attack.
Recent AMDs have another feature called SecureBio(metrics) which directly connect one USB socket to the CPU in such a way interception is not possible, which allows one to design a secure USB device (fingerprint reader, webcam for now) which can't be intercepted at the bus level.
PCIe is still vulnerable, but I bet it won't be long before transparent encryption comes to it.
>Developing the exploit itself also took significantly more than $10
Less. You can perform same attack using $6.44 Free International Shipping "EZ-USB FX2LP CY7C68013A USB2.0 Core Boards Logic Analyzer" ebay board and https://sigrok.org/wiki/Protocol_decoder:Lpc
If the KEX is broken, the encryption is broken.
Name dropping BitLocker was one sure way to gather attention for something that had been proven years ago, and had already reached a “close enough for all intents and purposes” price point [0]. Not unlike name dropping Tesla or Apple even for mundane things.
I'm happy that systemd-cryptenroll does what Windows failed to do, though. I can't fathom why Microsoft would make it do easy for an attacker to bypass Bitlocker's encryption like this.
It seems that a bitlocker key is stored unencrypted (no master password) on the TPM device. This seems to imply that I could boot the laptop without entering a password anyway, and get access to the disk. What would the point of such external device be?
Is bitlocker designed to only prevent stealing the hd separately from the laptop?
Or is anything in the protocol that makes it so that the boot code, after reading the master key, forces the user to enter a password nevertheless to access the hard drive contents? But it still looks like that if I can hijack this boot process (external usb boot?) I could get access to the drive contents.
Disclosure: unfamiliar with bitlocker but I have used and understand FDE on Linux and FileVault.
In particular, there are 2 operations that can be performed on a PCR: read and extend. Read does what it sounds like, and gives you the current value of the PCR. Extend concats the current value of the PCR with a provided value, and hashes the result back into the PCR: PCR[i] <- Hash ( PCR[i] || data ).
The TPM also has a small amount of general purpose non-volatile storage (NVRAM). It lets you "seal" entries in NVRAM such that it will only give you them if particular PCRs have particular values.
UEFI along with most modern bootloaders and operating systems incorporate this into the boot process such that a component will measure all critical configuration parameters and executables before operating on them. To take your USB boot example, before the UEFI boots into your USB it will measure (at least) the bootloader on your USB drive. As soon as that happens, there is no way to get the PCRs into the required state without breaking the hashing algorithm. Even if your USB drive uses the window's bootloader, the UEFI likely measured other things, such as the device it was booting off of, and possibly your entry into the one-time boot menu [1]. Even if you get through all of that, the Window's bootloader probably measures the code it runs. By the time you get to code you can actually change without invalidating the PCRs, you are running inside of Window's userspace subject to normal software security measures; and Window's might have already modified one of the appropriate PCRs (or simply locked the NVRAM for further reads until system reset).
There are several potential problems with this:
1) It assumes that all of the components in the chain are secure and do the right thing. If you can convince one to run your code without changing what it measures, then you can attack the system.
2) It assumes the entire system is an atomic unit. If you can talk to the TPM directly, you can simply measure in the same values that get measured during a normal boot, weather you are actually booting, or have the TPM on a breakout board. The measurement inputs to the TPM are not secret. They are just hashes of firmware, kernels, etc.
2.5) What this paper talks about, none of the communication to/from the TPM is encrypted.
TPM backed FDE exists on Linux as well and is vulnerable to the same class of attacks.
Some systems have the TPM integrated into the CPU itself, which makes such an attack practically impossible.
[0] Or, at least the initial bootloader, which is then responsible for measuring the kernel, which is then responsible for measuring the core OS components, etc).
[1] Although, these things are done in a seperate PCR, and BitLocker probably doesn't use all of the PCRs. You don't want to brick a system by simply changing a random setting in the bios.
Breaking Bitlocker – Bypassing the Windows Disk Encryption [video] https://news.ycombinator.com/item?id=39243305
I know this attack doesn't apply to commonplace embedded TPMs.
I think the label of "security theater" doesn't apply to commonplace embedded TPMs.
I can find lots of current motherboards with a chipset on them, even specifically calling it a PCH.
The only thing that TPM prevents from reading your hard drive is jealous coworkers. Everyone else just steals your laptop and gets access anyways.
Even the BIOS passwords are utterly useless because you can google the master passwords based on Laptop and model number these days. And if you can't, just flash a BIOS without a password on the memory chip via a 5$ ch341 adapter.
As long as all hardware has backdoors for everything and nothing relies on real cryptography, there is no point in assuming it is secure.
Embedded TPMs are the exception, for now, until one finds the next backdoor of broken undocumented CPU instructions. TPM was claimed to be secure so often in the past, at this point you must assume that every implementation is broken by default.
This is not a matter of exclusivity but of probability. If you split the world into "jealous coworkers" and "everyone else" then everyone else who wants your laptop does it to resell it and not access the data.
Sorry for the snark, but I'm getting tired of the pervasive cynicism. The situation got so much better since tpm and fde got commonplace. Laptop thieves no longer get your data, people no longer unwillingly expose their data when they sell their used disks, boot loader attacks got from easy to almost impossible.
Yes, the CIA will still be able to read your disk, and maybe even just a motivated hacker. But that doesn't mean everything is useless.
Similarly, BitLocker with a TPM may not be impenetrable, but it does stop a kid from booting Hiren's and running ntpasswd to change the local admin password and install Roblox on mom's work laptop. Or the employee dumping the SSD of company data before leaving for a competitor.
Not every security measure needs to address every threat entirely. This is why we have risk assessments and defense in depth. This exploit may change some people's calculations or it may still be worthwhile based on the balance of security to convenience. But that isn't worthless.
If the latter, I think we can expect a higher quality bar from an integrated solution. If the former, well, I guess that’s just a security trade off.
Any attack to find keys in memory - unless you find a simple exploit for the login prompt - will be more complex than just booting the machine with that sniffer plugged in.
Edit: Note I'm asking about CPUs specifically. Not other TPMs on the system.
Also, are you sure you're not confusing CPU-embedded TPMs with other TPMs in the system?
More discussion on the video a few days ago:
- I always set a PIN. Wish it was a proper passphrase instead. The whole magic thing of decrypting things automatically seems like a total design flaw.
- I often disable the hardware encryption support. Some of these are total jokes. AES-NI is decent but it’ll reduce performance on faster SSD drives.
An unbooted FileVault Apple device just does not know the decryption key. Until you’ve entered the passphrase there’s no flaw in the OS or hardware that can give it to you. Such a cleaner design. So much safer no magic TPM BS. Same goes for my Linux/LUKS servers. No passphrase not boot.
By 2% at the outside. Well worth it.