News for hackers. Stuff that matters.
Re:Systemd mounted efivarfs read-write, allowing motherboard... by kbenson on Friday January 29, 2016 @08:43PM (#11000080)
That is an extremely uncharitable reading of what he wrote, and I don't think it captures the essence of his intent at all. He said:

> Well, there are tools that actually want to write it.

It needs to be accessible in some manner.

> The ability to hose a system is certainly reason enought to make sure it's well protected and only writable to root.

Agreement it needs to be guarded, because it's a problem if it can hose a system.

> But beyond that: root can do anything really.

This is a truism for Unix, and altering this is much more of a problem than the occasional bricked machine. This is free software, and the ability to use it to control our hardware to the fullest extent possible is part of that freedom. Root cannot and should not be restricted from doing what it needs. It can, have hurdles put in place to make it harder to accidentally do something it doesn't mean to do though.

So, agreement on the problem, and agreement that something needs to be done to fix it, and a caution that access can't be entirely closed off without consequences, so root needs access. What's so horrible about that?

Re:Systemd mounted efivarfs read-write, allowing motherboard... by michaelmrose on Friday January 29, 2016 @10:27PM (#11000349)
Nobody is saying root shouldn't be able to access such functionality but rather it just shouldn't be mounted rw by default. This is actually fairly uncomplicated.
Re:Systemd mounted efivarfs read-write, allowing motherboard... by geofft on Saturday January 30, 2016 @02:40AM (#11000973)
But then whatever app that runs as root that actually needs to update it is going to remount it rw, at which point the original problem stands.

My personal opinion is that, for the use case of a single-user machine (i.e., "Linux on the desktop"), the traditional UNIX root isn't a useful concept. What's actually sensitive is your files, your saved passwords, your browser cookies, your emails, etc.; the ability to reconfigure drivers or replace OS components is only a problem because it allows all of those things to be compromised. Instead of throwing roadblocks in the way of root (remount ro, expose it as something more complicated than a filesystem so innocent users aren't tempted to look at it, etc.), let's take all the stuff that users should be able to do and make it accessible by nonroot, and take all the stuff they shouldn't be able to do and put it in the realm of automation.

UEFI has a pretty reasonable concept here, of a distinction between "boot" and "runtime" configuration; the BSDs have a conceptually similar idea of the securelevel. The idea is that if you're around during the boot, you might be interested in reconfiguring what the machine is doing, but as soon as you're out, you permanently abjure any further ability to reconfigure that. If we take a variant on that, that the OS doesn't abjure those capabilities as a whole but instead reserves them for itself, disabling all user-controlled ability to change things, I think we get very far. You can install new software, but not change the trusted sources for software. You can apply firmware updates via an existing cronjob, but not make arbitrary changes to firmware variables. If you want to do any of that, you have to reboot and enter a special setup mode. Apart from protecting against simple human error, this also serves as a very effective protection against malware: non-OS software simply has no ability to do unwanted things.

Then let's use UNIX users (which are a pretty solid isolation technique) to isolate things like your banking info from your Flash-requiring music service.

Chrome OS, incidentally, has this concept of things the OS can do that the user has no interface to, and Chrome OS is basically the most successful Linux on the desktop, so.

Re:Systemd mounted efivarfs read-write, allowing motherboard... by vertex-four on Saturday January 30, 2016 @04:45AM (#11001281)
> But then whatever app that runs as root that actually needs to update it is going to remount it rw, at which point the original problem stands.

There's a difference between a system which, at all times, is one mistyped command from being bricked, and a system which allows you to brick it if you're explicitly doing something dangerous in the first place.

> let's take all the stuff that users should be able to do and make it accessible by nonroot, and take all the stuff they shouldn't be able to do and put it in the realm of automation

While theoretically reasonable, this is also a huge project, and while this project is slowly implemented users are still vulnerable to this bug. Additionally, there's always going to be Linux users who find the idea abhorrent, and thus it remains a bug for those users. Choosing to have more control should not generally mean that you can brick your machine so easily as accidentally deleting a few files.

Re:Systemd mounted efivarfs read-write, allowing motherboard... by chris_wot on Saturday January 30, 2016 @06:53AM (#11001543)
Yeah, and that app isn't rm.

Precisely how many user space apps do you think need access to it?!?

Re:Systemd mounted efivarfs read-write, allowing motherboard... by kbenson on Saturday January 30, 2016 @02:40PM (#11003374)
Yes. And all I see from Lennart is agreement and the statement of a few facts (some programs need access), which implies that a slightly more nuanced solution may be required. I fail to see how this reflects poorly on him.
Re:Systemd mounted efivarfs read-write, allowing motherboard... by microcolonel on Saturday January 30, 2016 @01:58AM (#11000877)
The point is that that would offer no benefit. A root user can just mount it rw again in a single call.
Re:Systemd mounted efivarfs read-write, allowing motherboard... by pjmlp on Saturday January 30, 2016 @02:50AM (#11000998)
So in a similar vein, why bother with alias rm='rm -i' at all?
Re:Systemd mounted efivarfs read-write, allowing motherboard... by Ao7bei3s on Saturday January 30, 2016 @04:16AM (#11001205)
But that doesn't actually exist by default, and so it's not a good example.

A better example is that `/` is a special case for `rm`.

(Besides: I'm not a fan of `rm -i`, precisely because it's non-default. You'll get used to it, and then someday you accidentally some files on a system where you didn't add the alias.)

Re:Systemd mounted efivarfs read-write, allowing motherboard... by pjmlp on Saturday January 30, 2016 @04:23AM (#11001221)
Lots of GNU/Linux distributions used to it by default, has it changed?
Re:Systemd mounted efivarfs read-write, allowing motherboard... by Ao7bei3s on Saturday January 30, 2016 @05:16AM (#11001360)
None I currently use (just tested with bash* on: Debian, Centos, Fedora, OpenWRT) or have used in the past few years (Arch) has it.

I don't remember anything about my time with SUSE and Ubuntu, thats way back.

* I normally use zsh with grmlzshrc and nearly no customization (which is why I love grmlzshrc -- usable defaults), which warns for `rm -rf foo/*` but not for `rm -rf foo`.

Re:Systemd mounted efivarfs read-write, allowing motherboard... by SEJeff on Saturday January 30, 2016 @09:14AM (#11001856)
Redhat based distros absolutely do enable alias rm='rm -i' out of the box, but only for the root user. As a career SysAdmin, that seems like a good compromise. If you want to take the safety net off, you can escape out the alias (or any alias) with a slash i.e.:

\rm -rf somedir

Yet by default, if you don't include the "\", you get rm -i

Re:Systemd mounted efivarfs read-write, allowing motherboard... by Ao7bei3s on Saturday January 30, 2016 @11:17AM (#11002390)
You're right about RedHat, sorry.

.bash_history says I accidentally added `-f` on that host. I should have just checked with `which` instead of trying it out. Oops.

Re:Systemd mounted efivarfs read-write, allowing motherboard... by SEJeff on Saturday January 30, 2016 @12:16PM (#11002685)
Actually even if you do rm -f, the -i will still be added if it is an alias. Better is to use the bash builtin "type":

type rm is better than which rm, but it depends on what distro you're using. Some distros (Just checked on RHEL7) will fancify which as well ie:

$ type which which is aliased to `alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

Re:Systemd mounted efivarfs read-write, allowing motherboard... by Ao7bei3s on Saturday January 30, 2016 @12:28PM (#11002740)
> Actually even if you do rm -f, the -i will still be added if it is an alias.

Yes, I know, but rm ignores -i if -f is given.

  [root@example ~]# touch blah
  [root@example ~]# rm -i -f blah
  [root@example ~]# 
And hence:

  [root@example ~]# which rm
  alias rm='rm -i'
  	/usr/bin/rm
  [root@example ~]# touch blah
  [root@example ~]# rm -f blah
  [root@example ~]#
@type: yes, you're right, thanks for the reminder.
Re:Systemd mounted efivarfs read-write, allowing motherboard... by pjmlp on Saturday January 30, 2016 @06:03AM (#11001455)
Maybe I am wrong but I think Red-Hat, Mandrake and SuSE used to do it.

Nowadays I spend most of my time in Windows and mobile OSes to remember it properly.

Re:Systemd mounted efivarfs read-write, allowing motherboard... by jhkaghjkga on Saturday January 30, 2016 @04:25AM (#11001226)
Sane distributions don't include that alias by default. Because otherwise people will always use `rm -f` and lose the feature that `rm` asks before removing files marked as read-only.
Re:Systemd mounted efivarfs read-write, allowing motherboard... by pjmlp on Saturday January 30, 2016 @04:53AM (#11001302)
Then quite a few distributions are not sane, as I remember once a upon a time it was quite common to have it like that on fresh install.
Re:Systemd mounted efivarfs read-write, allowing motherboard... by Sanddancer on Saturday January 30, 2016 @01:05AM (#11000760)
Root needs access, but creating a pseudo-filesystem to access an area of the system with metadata, etc that doesn't map well to a filesystem, especially given the number of very buggy implementations of UEFI out there is just asking for trouble. There are properties that have settings to be visible only certain times during the boot process, there are settings that involve changing guids, etc. Access is better served through tools that better understand UEFI's confusing properties, not hammered at with general filesystem-level tools.
Re:Systemd mounted efivarfs read-write, allowing motherboard... by snuxoll on Saturday January 30, 2016 @03:19AM (#11001084)
I agree with you, but then we delve into the fun of needing to implement a syscall for this or a something in sysfs that limits the damage that can be done. I suppose it's better than the current efivars filesystem, but neither is a wonderful solution when we have to limit access to the hardware that could potentially do useful things (without patching the kernel, of course).
Re:Systemd mounted efivarfs read-write, allowing motherboard... by Sanddancer on Saturday January 30, 2016 @12:55PM (#11002871)
It's useful, yes, but because of the buggy implementations out there, the risk in bricking, wanton removal of important variables, etc, is just too great. If anything, it should be a device node or the like. /dev/efi makes a lot more sense given its structure and purpose than trying to abstract it into looking kinda sorta like a filesystem.
Re:Systemd mounted efivarfs read-write, allowing motherboard... by snuxoll on Saturday January 30, 2016 @01:09PM (#11002938)
My big problem at the end of the day is while we can help prevent users from killing their own boards - we still NEED to be holding these firmware vendors accountable. No matter what abstraction is presented to user space once someone has root on my system they could potentially destroy my hardware.

Maybe one there is some nasty Windows Virus out there that fries boards by deleting EFI variables these stupid vendors will get their shit in order.

Re:Systemd mounted efivarfs read-write, allowing motherboard... by deathanatos on Friday January 29, 2016 @09:55PM (#11000274)
Not only is root root, and should be permitted to access and modify the system as desired, it seems to me that the root of this problem is that motherboard manufacturers are shipping faulty boards. I shouldn't be able to brick my motherboard from my operating system, and that I can is a bug. You're telling me there isn't so much as a factory reset on these boards?

Perhaps systemd could shield users from their motherboard's manufacturer's stupidity, but the amount of flack being received doesn't seem warranted; has the same amount of outrage been directed towards the manufacturers?

Re:Systemd mounted efivarfs read-write, allowing motherboard... by pdkl95 on Friday January 29, 2016 @10:38PM (#11000374)
It is true that this is ultimately a hardware/firmware problem, but if the solution is waiting for motherboard manufacturers to not have bugs or stupid designs, then we will be waiting forever. Badly designed hardware will always exist.

If you look at how probing for hardware works in the Linux kernel, quite a few older drivers (and the occasional feature subtree) have auto-probing disabled by default because it tended to crash some types of hardware. You see this again in lm_sensors, where the auto-probe script specifically asks permission (with a default "no") before it tries certain probes that risk crashing the hardware.

We don't see this as much in recent years as hardware has gotten better - listing the device_ids/vendor_ids on a buss is much safer than poking ISA IO ports - but the problem remains. Some hardware needs special hand-holding, especially in the initial probe or initialize stages. Hence, tools that handle those stages are always going to have special cases and other annoyances.

> the amount of flack being received doesn't seem warranted

The flack against Pottering (and the rest of the systemd cabal) is because this isn't the first time his idealism has caused serious problems for others. Yes, it would be nice if we could just mount UEFI areas (or anything else). In reality, as this bug shows, this is dangerous behavior. It should have been made optional, or the entire idea of exposing those UEFI areas as a filesystem should have been reconsidered - a special purpose tool that handled bugged hardware might have been more appropriate.

Re:Systemd mounted efivarfs read-write, allowing motherboard... by michaelmrose on Friday January 29, 2016 @10:29PM (#11000353)
Fixing every vendors implementation is an impossible task. Ensuring that the default configuration can't brick your motherboard is an easy one. So do the easy thing to ensure user safety WHILE working to solve the hard one to the extent feasible.

Robust systems must work in the real world not just in an ideal one.

Re:Systemd mounted efivarfs read-write, allowing motherboard... by clinta on Friday January 29, 2016 @11:51PM (#11000561)
We've been living in a world where you couldn't brick the firmware from the OS for a long time, and it's been terrible. I'm perfectly happy to take the risk of being able to brick a board from the OS if it means I never again have to try boot to a dos disk and run a proprietary exe to update the BIOS.

Some boards do have something of a "factory reset" in the form of dual bios so that if one is bricked, the backup can still be booted. But it's not a bug that not every motherboard has this feature.

Re:Systemd mounted efivarfs read-write, allowing motherboard... by Sophira on Monday February 01, 2016 @04:30AM (#11010700)
The point isn't that it can be bricked; it's that it's possible to brick it via an "rm". Or heck, doing anything hardware-related via an 'rm'.

The UNIX philosophy of "everything is a file" has always been based around the conceptual 'contents' of these 'files'. The kernel doesn't (directly) care if you remove a device node (block or character-based), it doesn't care if you remove a pipe, and it doesn't care if you remove a socket - even though all of these things are interfaces to the kernel in one form or another. Removing these files only removes your ability to access that interface.

Simiarly with files in /proc - which, like /sys, is directly exported by the kernel. In many cases the kernel refuses to even allow you to unlink the 'files' in /proc, even when it might make sense. (For example, you can't kill a process by 'rm'ing anything in the relevant /proc directory.) Instead, you update the configuration values that the files in /proc represent by echoing into their contents, where applicable.

The case with the efivars 'file' actually causing the kernel to take action when it's removed is what's at issue here. The fact that it happens to brick some computers is particularly unfortunate, but does a good job with showing the problem here. This isn't what the "everything is a file" philosophy is about.

Re:Systemd mounted efivarfs read-write, allowing motherboard... by clinta on Monday February 01, 2016 @01:02PM (#11013691)
I was not defending SystemD, I was defending the hardware manufacturers against the accusation that they're "shipping faulty boards".

I think SystemD is in the wrong here. Operating Systems should be protecting users from bricking their hardware.

Harware manufacturers should not be shipping hardware that's nearly impossible to brick, because it results in hardware that is nearly impossible to update.

Re:Systemd mounted efivarfs read-write, allowing motherboard... by snuxoll on Saturday January 30, 2016 @03:21AM (#11001090)
> You're telling me there isn't so much as a factory reset on these boards?

Quite a few boards have a backup EEPROM to initialize from if the primary EEPROM fails to boot, but who knows if those that do will bother to reinitialize the UEFI variables stored in NVRAM. Honestly, since they are just supposed to be stored in NVRAM what happens if your board battery runs out of juice, will it still brick?

Re:Systemd mounted efivarfs read-write, allowing motherboard... by bigbugbag on Saturday January 30, 2016 @04:21AM (#11001214)
Hosing a system is a way different than bricking a motherboard.

Hosing a system is something that can be fixed by root by reinstalling from scratch or restoring from backup. Bricking hardware is not something a sysadmin can fix by himself.

Poettering attitude refusing to acknowledge his mistakes and fixing them is not something new.

Someone who doesn't get the difference between deleting the content of a drive and rendering hardware inoperable shouldn't be in charge of a critical system component.

Re:Systemd mounted efivarfs read-write, allowing motherboard... by LeoPanthera on Friday January 29, 2016 @11:01PM (#11000416)
I agree with everything you wrote, but he did close the issue, which generally implies "I'm not going to do anything about it".

Maybe it's not his responsibility and distro creators need to protect it, I don't know.

Re:Systemd mounted efivarfs read-write, allowing motherboard... by eeZi on Saturday January 30, 2016 @01:21AM (#11000803)
If they changed it to "ro" by default, people would complain as well if it breaks something.
Re:Systemd mounted efivarfs read-write, allowing motherboard... by mmsmatt on Friday January 29, 2016 @11:38PM (#11000520)
He who play in root, kill tree.

-Slackware fortune file