Am 19.12.2015 23:28 schrieb "Samuel Thibault" <samuel....@gnu.org>:
>
> Hello,
>
> David Renz, on Fri 18 Dec 2015 19:26:53 +0100, wrote:
> > E. g., there are so-called 'ACPI'- or 'BIOS-Rootkits', which are capable of manipulating
> > Windows as well as Linux systems. Since Hurd follows a different approach of
> > accessing hardware components, I often wondered whether this could make it
> > resistent against those kind of rootkits,
>
> It will most probably be resistent to windows- and linux-oriented
> rootkits, since the implementation is different. If there are flaws in
> the ACPI implementation of GNU Mach, there are probably ways to rootkit
> it. GNU Mach however currently uses ACPI only for shutting the system
> down, so the exposure is low. We'd however need it to eventually work
> with multicore processors.
What interests me a lot about GNU Hurd is some people's claim that it would have a "limited attack surface" due to its specific design, especially referring to the way it accesses hardware and the general kernel design - Which might (!) lead to the conclusion that it's more secure than Linux e. g. However, nothing is more dangerous than feeling secure without actually being secure, as all of you would probably agree.
You already 'admitted' (single quotation marks since that's certainly the wrong word - I admit my poor English without using single quotation marks) that in some way or another also Hurd would make use of ACPI code.
Now there are two critical questions to me:
1) I have seen ACPI code in 'real life' which is able to modify Windows, Linux and BSD systems on the same computer (probably code stored in the DSDT table). So even if Hurd would use ACPI only e. g. for shutting down the computer: Could the according function call used for shutting down the computer lead to other ACPI code being executed? I would guess that this might be possible.
2) If booting Hurd or Linux with the "acpi=off" boot parameter, would this rule out the possibility that (malicious) ACPI code might get executed?
The OS still interacts with the BIOS, which is also just patachable firmware and the ACPI code is in fact part of this, so could such a boot parameter really prevent the execution of ACPI code for certain?
> > Wouldn't it potentially increase one's security by many times, if one would be
> > able to let (e. g.) Debian Hurd as a template VM on top of a Qubes OS system?
>
> Well, that'll replace the GNU Mach ACPI implementation with the Xen
> implementation, i.e. trading one security surface by another. Since the
> Xen one is well-tested, that can be a good trade :)
Wouldn't a Qubes OS Hurd template be very much like running on a (perhaps more secure) VM? I thought of it in the way of (recursively) 'limiting the attack surface', like the approach they do by using a Whonix template.
There was an issue regarding the security XEN might offer which had been discussed in one of the Qubes OS security bulletins, so you may find some information there. I think this mailing list is not the right place to discuss about XEN.
>
> > I'm sure it would be really difficult to put this idea into practice, but
> > basically this should be possible to do, or am I missing a fact which make this
> > be impossible?
>
> GNU Mach is already ported to Xen, so it should be fine with Qubes.
(s. above: Maybe it would be worthy to give it a try then. It's not that easy though to 'just' create a Qubes OS template based on any kind of OS, even if it has already been ported to XEN.)
>
> Samuel
I didn't want to write this, but that's how it is (concluding that this is not possible with some unfree firmware components).
I see two ways out of that:
1) One could easily use two separate systems for two different purposes: Use one system, which doesn't provide any networking capability, for productivity etc. (Or use a system which is online, but keep in mind that you shouldn't use it for online communication others shouldn't be able to intercept.)
2) Use a Raspberry Pi running OpenBSD (just as an example, there would be numerous other solutions) for encrypting/decrypting and receiving/sending communication.
The other approach would be using a system running openBIOS, so you could combine both things. I can't evaluate how realistic this would be, since you would also have to think of patchable firmware in PCI etc. components. Running openBIOS should be a basic premise for a 'secure' x86 system however.
You can under no circumstances get a secure system running on one or multiple "system(s) of its/their own", because - as you have said it very precisely - you have no control over this.
On Wed, Dec 23, 2015 at 11:56:23AM +0100, David Renz wrote:
> You can under no circumstances get a secure system running on one or
> multiple "system(s) of its/their own", because - as you have said it very
> precisely - you have no control over this.
That's not what I said. First, you don't run a secure system "on one or
multiple systems of their own". You run one system among multiple ones.
Then, that system must have control over memory access because that's
where the data is and that's what you want to protect. Finally, you
need hardware that can actually restrict memory access from devices that
are external from the point of view of that main system and physical
memory.
After reviewing SMM a bit more, it seems to be an x86 processor operating
mode, giving access to normally inaccessible resources, hidden from the
operating system, which means firmwares using that mode actually run on
the main processor, and are subject to neither IOMMU nor MMU restrictions.
If I'm right, it seems you just can't protect an x86 system from firmware
interference.
--
Richard Braun