Securing the Linux boot process Matthew Garrett
- Without boot security there is no other security
- MBR Attacks – previously common, still work sometimes
- Bootloader attacks – Seen in the wild
- Malicious initrd attacks
- RAM disk, does stuff like decrypt hard drive
- Attack captures disk pass-shrase when typed in
- How do we fix these?
- UEFI Secure boot
- Microsoft required in machines shipped after mid-2012
- sign objects, firmware trusts some certs, boots things correctly signed
- Problem solved! Nope
- initrds are not signed
- initrds
- contain local changes
- do a lot of security stuff
- TPMs
- devices on system motherboards
- slow but inexpensive
- Not under control of the CPU
- Set of registers “platform configuration registers”, list of hashes of objects booted in boot process. Measurements
- PCR can enforce things, stop boots if stuff doesn’t match
- But stuff changes all the time, eg update firmware . Can brick machine
- Microsoft to the resuce
- Tie Secure boot into measured boot
- Measure signing keys rather than the actual files themselves
- But initrds are not signed
- Systemd to the resuce
- systemd boot stub (not the systemd boot loader)
- Embed initrd and the kernel into a single image with a single signature
- But initrds contain local information
- End users should not be signing stuff
- Kernel can be handed multiple initranfs images (via cpio)
- each unpacked in turn
- Each will over-write the previous one
- configuration can over-written but the signed image, perhaps safely so that if config is changed, stuff fails
- unpack config first, code second
- Kernel command line is also security sensative
- eg turn off iommu and dump RAM to extract keys
- Have a secure command line turning on all security features, append on the what user sends
- Proof of device state
- Can show you are number after boot based on TPM. Can compare to 2FA device to make sure it is securely booted. Safe to type in passwords
- Secure Provision of secrets
- Know a remote machine is booted safely and not been subverted before sending it secret stuff.