Open Source

The bootloader supply chain: what an OS vendor controls versus inherits

Between firmware and the kernel sits a thin layer of code that almost no one audits and almost everyone trusts. Understanding the supply chain behind shim, GRUB, and u-boot is the difference between owning your boot path and renting it.

Hritik Sharma
Staff Engineer
7 min read

The bootloader is the most consequential piece of code in any system, and it is also one of the least visible. By the time it runs, firmware has handed off the platform and the kernel has not yet taken over, which means the bootloader briefly holds the keys to everything: it can choose which kernel to load, what command line to pass, what initramfs to mount, whether to enforce module signature verification, and whether to participate honestly in the measured-boot protocol. Most operators interact with it only when something has gone wrong, and most security teams treat it as part of the operating system even though its supply chain is meaningfully different from the rest of the OS.

That difference matters because the bootloader stack — shim, GRUB, systemd-boot, u-boot for embedded — is produced and signed by a different combination of parties than the rest of the distribution. Microsoft signs shim, the distro signs GRUB with a key whose certificate is embedded in shim, the kernel is signed by the distro's separate signing infrastructure, and on embedded platforms u-boot is signed by the board vendor or not signed at all. An OS vendor controls some of those keys and inherits others, and the security properties of your boot path depend on how cleanly that distinction is maintained.

Why is the bootloader chain organized this way in the first place?

The chain looks the way it does because Secure Boot requires that everything pre-kernel be signed by a key trusted in the platform db, and most platforms ship with only Microsoft's Secure Boot CA in db by default. If a Linux distribution wants to boot on those platforms without requiring the user to enroll a new key, it has to convince Microsoft to sign something. Microsoft will not sign GRUB directly because GRUB is a large, configurable, command-line-driven program that has historically had a lot of vulnerabilities and that loads other binaries based on text configuration files. So the community built shim — a small, deliberately minimal pre-bootloader whose only job is to verify and chain-load the distro's actual bootloader using a key the distro embeds.

That design lets the distro retain control over its own boot binaries (the GRUB build, the kernel, the modules) while still benefiting from the platform's default trust anchor. It also creates a clean division of supply-chain responsibility: shim is the project that Microsoft signs, the distro signs its GRUB and kernel, and the kernel signs its own modules. When a vulnerability appears in any of those layers, the responsibility for fixing it and re-signing the fix follows the same boundaries. When a vulnerability appears that allows one layer to be bypassed entirely, as happened with the BootHole disclosure in GRUB and several subsequent CVEs, the consequences cascade through every layer above it.

How does an OS vendor actually manage the bootloader supply chain?

Inside Red Hat, SUSE, Canonical, Debian, and the smaller distros, the bootloader pipeline is one of the most carefully managed parts of the build infrastructure. The keys that sign shim, GRUB, and the kernel are typically stored in hardware security modules, the build hosts are isolated from the rest of the build farm, the release engineering teams who can trigger a signing operation are a small named set, and the artifacts that come out are recorded in transparency logs that downstream consumers can verify. Distros have invested heavily in this because they have learned, through specific incidents, what happens when the supply chain breaks: a leaked signing key cannot be revoked without breaking every system in the field, a buggy signed binary cannot be removed from circulation without coordinating dbx updates, and a delayed response shows up in customer trust the way a delayed kernel security release does not.

Where it gets interesting is in the integration boundary. The distro controls its own keys and its own build of GRUB, but the version of shim it ships is built from an upstream project maintained by a small team, and the version of GRUB it ships is built from an upstream maintained by a different team, and both of those upstreams pull in third-party patches that the distro has to evaluate. Most of the BootHole-class issues were not introduced by the distros; they were introduced upstream, inherited downstream, and only surfaced when somebody decided to look hard at the parser or the configuration handling. The honest framing is that an OS vendor controls signing and release, and inherits design and most of the implementation.

What changes for u-boot and embedded bootloaders?

Embedded changes the picture in two important ways. First, the trust roots are typically baked into hardware at fabrication — eFuses, OTP regions, or ROM bootloaders — rather than provisioned at the OEM, which means platform key rotation is generally not possible and a compromised root is a compromised device for life. Second, u-boot is a single project that plays the role of multiple components in the PC world: it is firmware, it is bootloader, and on many platforms it is the only thing between power-on and the kernel. The supply chain is therefore shorter but tighter — there is less surface area to defend, and less opportunity to recover when something goes wrong.

The practical consequence is that embedded platforms benefit disproportionately from rigorous SBOM coverage and supplier scoring. When a CVE in u-boot's filesystem parser lands, knowing exactly which boards in your fleet ship which u-boot version, signed by which vendor key, with which command-line configuration, is the difference between a remediation plan and a guessing game. The same is true for the BSPs that hardware vendors ship as part of their reference designs: those BSPs typically contain dozens of third-party components and patches, and they typically come with no SBOM at all unless the customer asks for one. Asking for one is a procurement decision, and the vendors who can produce one tend to be the ones who have the rest of their security house in order.

What should an OS vendor or platform operator actually do?

The first thing is to know which links in the chain you control and which you inherit. If you build your own distribution image, you control the GRUB build, the kernel, the modules, and the signing infrastructure that produces them; you inherit shim from a separately maintained upstream, you inherit Microsoft's signing of shim, and you inherit the embedded shim's allow-list of distro signing certificates. Each of those inheritance points is a place where a problem upstream becomes your problem downstream, and a place where you should be tracking advisories actively rather than waiting for a customer escalation.

The second thing is to wire the bootloader supply chain into the same SBOM and policy pipeline you use for the rest of the stack. The components are smaller and the cadence is slower, but the consequences of a missed update are larger. Most organizations have a clear path from "CVE published in OpenSSL" to "fix deployed across the fleet"; very few have an equivalent path from "CVE published in shim" to "shim updated, dbx rotated, attestation re-baselined." Building that path before you need it is the work that turns the bootloader from a hidden dependency into a managed one.

How Safeguard Helps

Safeguard treats bootloader components as first-class SBOM artifacts and correlates them with platform firmware, kernel, and userspace dependencies for end-to-end boot-path visibility. Griffin AI can answer questions like "which of our hosts are running shim builds affected by the latest revocation, and which are still trusting a distro signing certificate that was deprecated last quarter" and propose a remediation plan that accounts for the cascading effect of dbx updates. Our TPRM scoring includes distro security teams, bootloader upstreams, and hardware vendors that ship signed u-boot images, so procurement and operations have a shared view of supplier health. Policy gates can prevent provisioning a host whose boot chain fails attestation or whose bootloader components are below your patch threshold. If you want your boot-time trust posture on the same dashboard as the rest of your supply chain, get in touch.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.