Giter VIP home page Giter VIP logo

linuxboot / heads Goto Github PK

View Code? Open in Web Editor NEW
1.4K 65.0 180.0 8.34 MB

A minimal Linux that runs as a coreboot or LinuxBoot ROM payload to provide a secure, flexible boot environment for laptops, workstations and servers.

Home Page: https://osresearch.net/

License: GNU General Public License v2.0

Makefile 83.06% Shell 14.36% Perl 0.23% Go 0.03% Python 2.14% Nix 0.18%
coreboot bootrom xen firmware linux tpm verifiedboot rom

heads's People

Contributors

3hhh avatar alex-nitrokey avatar danielp96 avatar daringer avatar eganonoa avatar flammit avatar flawedworld avatar jgrip avatar jonathonhall-purism avatar kakaroto avatar krystian-hebel avatar kylerankin avatar mdrobnak avatar merge avatar miczyg1 avatar mkopec avatar mmlb avatar mrchromebox avatar osresearch avatar paulmenzel avatar rbreslow avatar root-hardenedvault avatar saper avatar sergiidmytruk avatar snmcmillan avatar theplexus avatar thrilleratplay avatar tlaurion avatar tonux599 avatar undeaddevel avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

heads's Issues

USB modules should be measured

The Linux kernel bootloader should not have USB enabled; loading the modules should require measurement and adjustment of the PCRs (to invalidate the disk encryption keys).

Disable the ME

What happens if the ME firmware is zeroed out? Does coreboot still start up ok?

Enable VT-d early in boot process

The coreboot code should enable VT-d early in the boot process to avoid rogue hardware attacks prior to measuring bootlbock, etc.

cryptsetup should be in initrd

This will allow the LUKS headers to be included in the PCRs, as well as record the TPM stored keys into a LUKS key slot.

Downside: it requires an additional several MB of libraries. Can a simpler one be built?

Firmware updates without reflashing

It should be possible to update the firmware (other than the locked boot block) without a hardware programmer. Perhaps reserve the 4 MB upper flash chip for the bootblock, coreboot and the Linux recovery image, and use the lower 8 MB chip for the normal boot image?

Coreboot crossgcc is not verified

The Coreboot crossgcc target is not verified and does not check certs. In util/crossgcc/buildgcc:

download_showing_percentage() {
        url=$1
        printf " ..${red}  0%%"
        wget --no-check-certificate $url 2>&1 | while read line; do
                printf "${red}"
                echo $line | grep -o "[0-9]\+%" | awk '{printf("\b\b\b\b%4s", $1)}'
                printf "${NC}"
        done
}

Trusted Boot

Hey,

in order to get the maximum sealing against the platform it would be useful to have a well documented and feature complete trusted boot in coreboot. I started to refactor the tpm stack and implement the missing features. Take a look at https://review.coreboot.org/#/q/status:open+tpm

qr codes are too big

The QR codes don't fit on the 80x25 screen that coreboot's native VGA initializes. Can it use half height characters instead?

coreboot rebuilds every time

Something in the new per-board Makefile is causing coreboot to rebuild everything. This doesn't happen when make -C "/build/heads/build/coreboot-git" obj=./x230 DOTCONFIG=../../config/coreboot-x230.config -j 8 is run by hand, so it might be an environment variable.

tpmtotp make is executed lots of times

The top level Makefile doesn't know that all of the tpmtotp executables (for TPM operations) are generated with the same command, so it runs make -C build/tpmtotp-git many, many times.

Should use the .INTERMEDIATE: trick to let it know that they will be generated together.

SPI flash BP3-0 bits are not set

Once the bootblock is more stabilized, the BP3-0 bits should be set to avoid overwriting it and prevent the root of trust from being subverted by a software attack on the flash chip.

tpm takeown doesn't output srk

Do we need the storage root public key for anything? The mbedtls RSA wrapper would need to be improved to use it correctly.

Building system fails

A make on a clean cloned copy of heads produces the following errors under ubuntu 16.04:
sudo apt-get install m4 bison flex zlib1g-dev git build-essential
git clone https://github.com/osresearch/heads.git

1- initrd/bin directory is not created:
make
[...]
cmp --quiet "initrd/bin/kexec" "/media/user/7725fbc2-4b2d-4ade-9f1d-337ad8203dc3/Qubes/heads/build/kexec-tools-2.0.12/build/sbin/kexec" || cp -a "/media/user/7725fbc2-4b2d-4ade-9f1d-337ad8203dc3/Qubes/heads/build/kexec-tools-2.0.12/build/sbin/kexec" "initrd/bin/kexec"
cp: cannot create regular file 'initrd/bin/kexec': No such file or directory
Makefile:121: recipe for target 'initrd/bin/kexec' failed
make: *** [initrd/bin/kexec] Error 1

fix:
mkdir -p initrd/bin/

2- initrd/lib/x86_64-linux-gnu directory is not created:
make
[...]
cmp --quiet "initrd/lib/x86_64-linux-gnu/libtpm.so" "/media/user/7725fbc2-4b2d-4ade-9f1d-337ad8203dc3/Qubes/heads/build/tpmtotp-git/libtpm/libtpm.so" || cp -a "/media/user/7725fbc2-4b2d-4ade-9f1d-337ad8203dc3/Qubes/heads/build/tpmtotp-git/libtpm/libtpm.so" "initrd/lib/x86_64-linux-gnu/libtpm.so"
cp: cannot create regular file 'initrd/lib/x86_64-linux-gnu/libtpm.so': No such file or directory
Makefile:124: recipe for target 'initrd/lib/x86_64-linux-gnu/libtpm.so' failed
make: *** [initrd/lib/x86_64-linux-gnu/libtpm.so] Error 1

fix:
mkdir -p initrd/lib/x86_64-linux-gnu/

Coreboot config should support multiple targets

The makefile target for coreboot config only supports the x230; it should support building the qemu target or the (soon to be create) chell chromebook target without having to copy files around.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.