Microsoft’s Secure Boot has been broken for a decade and no one noticed until now
cross-posted from: https://piefed.world/c/tech/p/1263218/microsofts-secure-boot-has-been-broken-for-a-decade-and-no-one-noticed-until-now
https://www.welivesecurity.com/en/eset-research/forgotten-uefi-shims-undermining-secure-boot/Open linkView original on piefed.world
36 replies
Arch Wiki had pointed out for years that Secure Boot is a flawed mechanism.
Unpopular opinion but I’m dying on this hill. Secure boot creates more problems than it solves.
I'd argue this is actually a popular opinion. IMO secureboot has just become a way for Microsoft to leverage it's position and keep a strangle hold on industries they have no business being in.
The whole kernel level anti-cheat on win11 bullshit in the gaming industry is a good example. Essentially locking games to its platform and willing to sacrifice security to do so at our expense.
This is especially true on computers where it is impossible to change the signing keys. Smartphones, game consoles, many laptops, some desktops, smart TVs, IoT devices, modern cars, etc.
I think that key can be changed on Google Pixels. I run GrapheneOS and reverting to stock would require erasing the key.
Kind of. You can change the signing key for the operating system, but you cannot change the signing key of the primary bootloader, as that is baked into the SoC.
Only in tech circles, it says secure and that's enough for most people.
Outside of tech circles most people think secure boot looks something like this
Was it ever popular?
Popular is the wrong question, the correct question is, how many machines is this default on.
What problem does it create? Its a good tech and we absolutely should be cryptographically verifying the boot process to ensure it hasnt been tampered with.
Because it's proprietary and in 99% of cases actually means "Windows Boot", and isn't very compatible with other OS. Windows is basically in charge of the entire technology and doesn't have a history of being friendly to other OS.
For a while Linux was completely blocked by this setting, which was yet another technical barrier to getting into Linux because you had to fuck around in your scary UEFI settings otherwise your PC would be soft-bricked after installing Linux. Nowadays it's slightly supported by some distributions but Microsoft could of course change it at any time.
Further reading: https://wiki.ubuntu.com/UEFI/SecureBoot
The way it should work is that during the OS install the OS can ask to have a cert added to the keystore at which point UEFI pops up a screen that says something like:
This would at least be a vendor agnostic way of enrolling certificates instead of the MS certificate just always being pre-installed. It should also of course be publicly documented exactly how the process works so everyone can use it.
Universal Blue distros do that. For some reason you need to enter a password though.
Problem being, of course, that you can add more certificates, but you can't revoke the original M$ one. And since it's vulnerable and you can't get rid, then these exploits still work and there's nothing you can do to stop it.
Computers shouldn't come with Microsoft keys preinstalled to begin with (or an operating system for that matter). Microsoft being able to have Windows preinstalled on the vast majority of non-Apple PCs is how they gained their monopoly in the first place.
You should be able to remove any or all the certs as well, although I could see an argument for requiring you to enter the BIOS to do that.
This "Trust" is one of my pet peeves. It's $$$.
I get why you'd dislike that wording, but this is also how all certificate stores work, regardless of whether we're talking Secure Boot, Windows or Linux. Gotta trust the top level as providing legitimate certificates to then trust everything underlying as coming from the correct parties.
Certificate are something I work with constantly at work and I fucking hate resolving issues with them lol.
It's not just the wording.
Precisely.
Check out cacert.org and why it never gained "Trust". Hint: $$$
Add this to the pile of reasons why M$ is a joke and people should stop using them. Nothing they make is so good that you need to stick around.
MS has mastered the one thing businesses love which is being perfectly mediocre. If you present a business two pieces of software one that does one thing really well but nothing else, and one that does three things terribly, they'll pick the one that does three things terribly every time. That's the MS design, it smears a thin coating of suck across as broad a surface as possible and then advertises that it does everything.
All it takes for it to be 'broken' is to be from Microslop.
IMO, broken ≠ vulnerable. Broken to me means it doesn't work. There's a difference, to me. 🤷♂️
If the "working" definition is "is secure", and there's 11 ways in which it's not, is it not "insecure", aka. "not working" then?
"Being secure" doesn't seem to be the primary function of a "UEFI shim", so no? 🤷♂️
Well considering that the “UEFI Shim’s” role is to sit in between a Microsoft owned certificate signing chain, it is certainly part of it’s primary role.
Alright, good enough.
Secure boot is supposed to be a lock.
Turns out there are 10 year old tricks that bypass that lock.
A lock that cannot deny access to people without proper key... is a bad lock.
Yes.
Is UEFI shim = secure boot?
No.
Secure Boot is basically a 'lock', on the UEFI.
UEFI - Shim is basically a 'lockpick'.
UEFI is the first step in your computer booting, turning on.
So, if Secure Boot is supposed to be a 'lock', that limits who can access the UEFI ... but it turns out that there are many, old, UEFI - Shims, that defeat that 'lock'... then Secure Boot is not a good 'lock'.
I don't mean to be rude but it seems like there might be a bit of language confusion going on here... In English, a 'shim' is a kind of crude/simple tool that can be used to break or bypass some actual physical locks.
So 'UEFI-Shim' basically means 'a thing that breaks into your UEFI'.
I don't think there's a language barrier here. I'm fluent in English, and I know what a shim is, both IRL and in the software world. I've just not run into it in a boot loader context before. And I'm not really knowledgeable when it comes to secure boot, either. Just trying to understand. 🙂
Are you sure that's a good phrasing though, "that breaks into your UEFI"?
A shim is usually something that you use to add or modify functionality by interception, right? Like a middle-ware, almost. So these old shims, are they responsible for functionality that directly has to do with Secure Boot, or something else?
If so, they are broken — i.e. not fulfilling their purpose.
If something else, they are not broken. They are just breaking something else, or making it vulnerable.
Am I making sense? Does it not make sense? Because after all, I don't know much about the details of the subject matter. 😁
There's like dozens of ways to open a lock without the proper key, it's probably not the best comparison...
I think that Victor may not have English as his primary/first language, I am trying to use a simple comparison that is more likely to convey the general, fundamental concepts.
Better?
I guess? I dunno. I'm not very good at boot systems.