10 ms·
Making hibernation work under Linux Lockdown
- aritmo 6y agoIt was unfortunate to use that name Linux Lockdown. It was selected before COVID-19 though.
- TeeMassive 6y agoI'm no kernel dev but yet I understood pretty much all of it. Well written!
- heavyset_go 6y agoMatthew's blog is great, I've been subscribed to it for years.
- wizzwizz4 6y agoI'm always a little wary of technological innovations that stop the system administrator from being able to administer the system. I understand the concept of not trusting root, but the solution surely isn't “so make the manufacturer the real root”. There isn't even a hardware override for this! Getting hibernation to work under Linux Lockdown is technically impressive, and now we know how it can be done. But should it be done?
- rcthompson 6y agoYou put your computer into hibernation and walk away for a few hours, then come back and wake it up. Wouldn't it be nice to have a cryptographic guarantee that the image you are resuming from is indeed the same one you hibernated to? That takes away a possible attack vector.
- garaetjjte 6y agoIn that scenario attacker doesn't have access to root anyway, so disk encryption is sufficient to protect against this.
- mjg59 6y ago> There isn't even a hardware override for this! You can always use mokutil to disable this.
- wizzwizz4 6y agoUnless the motherboard doesn't implement those APIs. It's difficult to tell until you've bought the computer – and my concern is that being able to change the keys might become a premium feature. Computers should be loyal by default.
- mjg59 6y agoWhich APIs? I've never seen a motherboard where SetVariable() is sufficiently broken that mokutil won't work.
- ylyn 6y agoThen just disable lockdown in your kernel.
- jeroenhd 6y agoIt's the administrator that enables or disables this feature, though. Laptops often come with some pretty advanced encryption hardware (the TPM) built in, and it's mostly useless silicon if you don't find a way to use it. The kernel trusts the hardware it runs on to do what it's supposed to do, unless it has some good reason to apply security restrictions to a device. _Real_ root turns on or off the hardware by configuring hibernation in lockdown or disabling it. Leave it disabled if you don't trust the TPM manufacturer, but I don't see a reason why not to use it to secure your operating system. Intel processors run a separate 486 CPU for scheduling reasons, there's so many potential security backdoors in the average laptop that I wouldn't worry about the TPM too much. In the end, this is just another trick that Windows could already securely do for years that Linux only just learned. "Can I hibernate without compromising kernel security measures when Windows can" isn't a great question to have to answer with "no, because..." if you want to advocate Linux to businesses.
- bonzini 6y agoDo you have a source for Windows being able to use the TPM to attest the validity of the hibernation file?
- deleted 6y ago[deleted]
- jeroenhd 6y agoThe TPM and TPM state are used to unlock the filesystem that contains the hibernation file. If the TPM state is altered, Bitlocker won't boot without a recovery key. Unencrypted Windows installations do not validate the hibernation file as far as I know. Then again, encrypting Windows is a lot easier than setting up TPM encryption on Linux. On Windows it's just a button, "enable Bitlocker". On Linux, you're reinstalling if you didn't enable encryption on startup or messing about with moving files in between encrypted and and unencrypted partitions, followed by random tutorials or Github shell scripts to enable the TPM. Or, if you don't care about the easy of use of the TPM, enter a passphrase during every boot. However, even on unencrypted Windows, you never needed to disable the system enforcing signature checks just to enable hibernation.
- GlitchMr 6y agoWell, if you don't need Linux Lockdown, don't enable it. The problem Linux Lockdown fixes as follows: Microsoft BitLocker stores its key in TPM which is accessible to Ring 0 code only. If the user would be able to run arbitrary Ring 0 code they could bypass BitLocker without actually knowing the password. To prevent this, Secure Boot is being used which requires the kernel to be signed. To avoid the necessity for user to allow distribution key in UEFI settings, many Linux distributions sign their kernel using Microsoft keys and to make sure this couldn't be used to run arbitrary Ring 0 code (which could end up with Microsoft revoking their key). Linux kernel enforces various restrictions: no loading custom modules and so on. Hibernation is complicated with Linux Lockdown as during hibernation, kernel loads contents of swap disk into RAM. Somebody could make their own Linux distribution, use a signed kernel from Canonical and make sure the bootloader would load their own malicious swap disk which would bypass Secure Boot requirements.
- baybal2 6y agoAnd all of this makes zero sense, given that anybody can simply tap the TPM chip itself. All x86 TPMs are effectively pwned, and useless for their stated application. TPM never served any real security role. Making a system fully secure against a physical attack is impossible, and looks plainly silly to anybody knowing how computers work. Even specially protected credit card chips cost only few thousand dollars to extract a key from in the numerous "firmware recovery" shops.
- userbinator 6y agobut the solution surely isn't “so make the manufacturer the real root” I think it's pretty clear what features like this are designed for. The mobile ecosystem and their walled gardens, where the manufacturers --- and Google --- certainly do want complete control (and it's a little funny to see the power struggles between them), and treat the users as nothing more than consumption-slaves to be milked for profit.
- saagarjha 6y agoRelated: https://news.ycombinator.com/item?id=26222160 https://news.ycombinator.com/item?id=26222160
- finchisko 6y agoIt was mentioned in second paragraph, that there is basically no security that can be enforced since root, can load arbitrary modules into kernel. So, how does the localities of TMP, solve the problem of rogue root installing custom TPM kernel module, that have access to locality 1?
- mjg59 6y agoOnce you're in the secure boot world, you enforce module signatures.
- jeffbee 6y agoWhy is hibernation even a thing? I can count the number of times I've wanted it on zero fingers.
- dividedbyzero 6y agoI'd absolutely love to use it on my secondary machine, a desktop PC running Windows 10 – just hibernate and pick up right where I've been a few days later without leaving it in standby blinking its super bright LED aggressively. Sadly if I send it to hibernate the PC will always turn itself back on in the night, so no hibernate for me...
- watermelon0 6y agoYou should check `powercfg lastwake` via PowerShell, and Event Viewer, to determine what wakes up your PC. I had similar issues, and IIRC, I had to disable wakeups for network adapters in Device Manager.
- dividedbyzero 6y agoI've tried lots of things from the first page of google results but I don't think I've tried that. Will give it a shot for sure!
- djs55 6y agoThank you for this -- I've been bothered by my Windows PC not sleeping properly for the best part of a year. `powercfg lastwake` indicated the Ethernet adapter and then disabling the option "Wake on Pattern Match" has allowed the computer to sleep soundly.
- mcv 6y agoI really do not understand Windows 10. It really seems like Windows 10 laptops and PCs are unable to sleep. They keep waking up, and then refuse to sleep. Frequently I find my work laptop in the morning turned on by itself, screen on, fan blowing enthusiastically. Power management in Windows 10 seems to be utterly broken. It certainly doesn't obey any of my settings.
- wheybags 6y agoI wish hibernation would consistently work at all...
- etaioinshrdlu 6y agoAnyone else fondly remember when the TPM chip was considered the most evil chip in the world? Simpler times...
- userbinator 6y ago...or when something that seems almost innocuous today, a processor serial number, caused such a huge amount of opposition that it was actually removed: https://news.ycombinator.com/item?id=10106870 https://news.ycombinator.com/item?id=10106870 Now, users are getting dumbed down and herded in the name of "security", and losing more and more freedoms every day... while being almost completely unaware of it.
- mcv 6y agoI don't understand the issue at stake here. > "if you were root you could just replace the on-disk kernel with a backdoored one and reboot." Isn't this a vital necessity? You want to be able to update the kernel to a new version, don't you? Preventing root from being able to do vital system maintenance sounds to me like the opposite of what you want. If an attacker has become root, the system is compromised. As far as I know, security should focus on preventing an intruder from getting root access. Once the intruder gets root access, isn't it kinda pointless to worry about the kernel?
- bombcar 6y agoReplace kernel with unsigned kernel where appropriate. They’re saying basically root should NOT be able to get to an unsigned kernel via swap/hibernation tricks. Who holds the keys is left up for discussion.
- mcv 6y agoAnd I disagree with that. You've got to be able to run your own OS on your own system, don't you? If you disagree with some choices made in the "official" kernel, you should be able to make your own changes. If you work on kernel development, you should be able to test your changes. If root can't control these things, then who can? Besides, even if root can't change the kernel, the system will still be compromised if an intruder gets root access.
- ravi-delia 6y agoYou can pretty easily sign your own kernel, it's not just manufacturer discretion.
- bombcar 6y agoYeah, it's the same as SELINUX - layers of security. I could easily see reasons to have a box that can boot a signed kernel but the signing keys are held by me offline.
- 6y ago
- admax88q 6y agoAn awful lot of work to protect my system from myself.