EntrySign
EntrySign - AMD Zen microcode signature verification vulnerability (CVE-2024-36347, CVE-2024-56161)
Published
6 April 2026
EntrySign is a security vulnerability consisting of CVE-2024-36347 (AMD-SB-7033) and CVE-2024-56161 (AMD-SB-3019). It involves a weakness in the signature validation of AMD Zen microcode, affecting platforms from Zen 1 through Zen 5. The vulnerability was discovered by Josh Eads, Kristoffer Janke, Eduardo Vela Nava, Tavis Ormandy, and Matteo Rizzo of Google.
Because the vulnerability resides in the early hardware-level microcode signature verification process, a complete fix requires a BIOS upgrade provided by Original Equipment Manufacturers (OEMs). It is not possible to fully resolve this issue through standard OS-level updates alone, such as the amd64-microcode package.
If the BIOS is not updated, systems with an outdated, vulnerable BIOS will be unable to load newer microcode updates from the OS because they cannot verify the new signature format.
In addition to the BIOS update, the kernel must include the logic introduced in commit 8d171045069c (and its prerequisites), which enables the OS microcode loader to navigate the transition to the new signature format while maintaining compatibility for systems still reliant on legacy verification methods. This allows the kernel to verify that a microcode patch is compatible with the system’s current security state, preventing critical loading errors—such as general protection faults—that occur when an unpatched loader attempts to process the new microcode format.
On systems with older, unpatched kernels, attempting to load post-EntrySign microcode may cause the system to regress its microcode version back to the version stored in the outdated BIOS.
To prevent a complete loss of security mitigations, AMD has implemented a secondary option for the OS microcode loader: if an update with the new signature format is attempted on a system lacking the EntrySign BIOS fix, the OS will instead load the final compatible microcode from the 2025-10-27 release to avoid a regression to the original BIOS version.
Updated kernels can detect an unpatched BIOS and automatically select this “final” compatible microcode version. This ensures the system maintains its prior security level and avoids a total downgrade to the ancient microcode initially found in the BIOS.
Affected Processors
AMD EPYC processors based on the Zen 1 through Zen 5 microarchitectures are affected. For a full list of processors affected and the corresponding Platform Initialization (PI) version with the fix, please refer to the AMD-SB-7033 security bulletin.
Recommended Actions for System Administrators
Because this vulnerability is rooted in the hardware’s early boot logic, a BIOS update is critical for security.
On Ubuntu, you can check if your manufacturer has provided a BIOS update through the Linux Vendor Firmware Service (LVFS). Run: fwupdmgr refresh && fwupdmgr get-updates Look specifically for mentions of “AMD-SB-7033”, “EntrySign”, or “AGESA/PI” updates in the release descriptions.
If your motherboard vendor does not support fwupd, you must visit the manufacturer’s support website, download the latest BIOS/UEFI firmware for your specific model, and install it manually according to their instructions.
Verifying Your Current System State
To determine if your system is protected, you must first identify your processor’s specific CPUID and the currently loaded microcode version. On Ubuntu, you can find this information by running the following commands:
$ sudo apt install cpuid
$ printf "0x%08x\n" $(cpuid -1 -l 1 -r | grep "eax=0x" | head -1 | cut -d'=' -f2 | cut -d' ' -f1)
0x00a00f11
If cpuidcan’t be installed, you can also retrieve CPUID information from /proc/cpuinfo with:
$ python3 -c "
import re
with open('/proc/cpuinfo') as f:
text = f.read()
family = int(re.search(r'cpu family\s+:\s+(\d+)', text).group(1))
model = int(re.search(r'model\s+:\s+(\d+)', text).group(1))
stepping = int(re.search(r'stepping\s+:\s+(\d+)', text).group(1))
ext_f = (family - 15) if family > 15 else 0
ext_m = model // 16
base_f = 15 if family > 15 else family
base_m = model % 16
cpuid = (ext_f << 20) | (ext_m << 16) | (base_f << 8) | (base_m << 4) | stepping
print(f'CPUID Signature: 0x{cpuid:08X}')
"
CPUID Signature: 0x00A00F11
And the microcode version with:
$ cat /proc/cpuinfo | grep microcode
microcode : 0xa0011de
Compare the CPUID and microcode version against the “Affected Products and Mitigation” table in the AMD-SB-7033 bulletin. If your currently loaded microcode version is lower than the one listed for your CPUID, and your BIOS has not been updated to the required PI version, your system remains vulnerable.
You can also confirm that the operating system has successfully “hot-loaded” a newer microcode version over the one provided by your BIOS, with the kernel boot logs with the following command:
$ sudo dmesg | grep microcode
[ 1.920448] microcode: Current revision: 0x0a0011de
[ 1.920464] microcode: Updated early from: 0x0a0011db
The example above illustrates a system with a patched BIOS: the Milan processor (CPUID 0x00A00F11) is already running the EntrySign-fixed microcode (0x0A0011DB) provided by the BIOS, which allowed it to successfully verify and accept the even newer microcode version (0x0A0011DE) included in the current OS package.
Impacts on Ubuntu Updates for the amd64-microcode package
Due to the potential for systems to have unpatched BIOS, the Ubuntu Security Team will only update amd64-microcode package to versions newer than the 2025-07-08 release if the kernel for that specific Ubuntu release includes commit 8d171045069c (and its prerequisites); this ensures the kernel microcode loader can correctly identify the system’s security state and select the appropriate compatible microcode version.
Updated kernel and amd64-microcode can be observed in Ubuntu 26.04 LTS (Resolute) with work in progress for earlier Ubuntu releases.
Specific CVE-2024-36347, and CVE-2024-56161 aspects
CVE-2024-36347 tracks the fundamental vulnerability in the microcode signature verification process. A full resolution requires a BIOS upgrade provided by OEMs to patch the hardware-level verification logic. Additionally, specific kernel updates are mandatory to enable the OS loader to intelligently handle newer microcode formats and prevent loading failures on systems with older firmware.
CVE-2024-56161 focuses on the AMD SEV (Secure Encrypted Virtualization) firmware used for secure virtualization. While the amd64-microcode update that fixes this CVE does not resolve the underlying EntrySign issue, it ensures that SEV-SNP attestation remains functional and secure on systems that have applied the necessary firmware updates. AMD SEV firmware is included and supported in amd64-microcode for Ubuntu 24.04 (Noble) and newer.
Upstream Kernel Requirements
To correctly support the new AMD microcode signature format and coordinate with updated BIOS logic, the Linux kernel must include specific patches to the AMD microcode driver. These commits allow the early loader to verify patch signatures and prevent system instability (such as General Protection faults) during the update process.
The following table tracks the primary upstream commits. The commits listed below may require additional prerequisite patches depending on the base kernel version.
| Commit | Title | Upstream Kernel Release |
|---|---|---|
| 50cef76d | x86/microcode/AMD: Load only SHA256-checksummed patches | 6.14 |
| 058a6bec | x86/microcode/AMD: Add some forgotten models to the SHA check | 6.14 |
| 31ab12df | x86/microcode/AMD: Fix __apply_microcode_amd()'s return value | 6.15 |
| 805b743f | x86/microcode/AMD: Extend the SHA check to Zen5, block loading of any unreleased standalone Zen5 microcode patches | 6.15 |
| c0a62ead | x86/microcode/AMD: Use sha256() instead of init/update/final | 6.16 |
| 2329f250 | x86/microcode/AMD: Add TSA microcode SHAs | 6.16 |
| fcf8239a | x86/microcode/AMD: Handle the case of no BIOS microcode | 6.17 |
| 876f0d43 | x86/microcode: Fix Entrysign revision check for Zen1/Naples | 6.18 |
| 8a9fb512 | x86/microcode/AMD: Limit Entrysign signature checking to known generations | 6.18 |
| d23550ef | x86/microcode/AMD: Add more known models to entry sign checking | 6.18 |
| dd14022a | x86/microcode/AMD: Add Zen5 model 0x44, stepping 0x1 minrev | 6.18 |
| 8d171045 | x86/microcode/AMD: Select which microcode patch to load | 6.19 |
| 150b1b97 | x86/microcode/AMD: Fix Entrysign revision check for Zen5/Strix Halo | 6.19 |
References
- https://www.amd.com/en/resources/product-security/bulletin/amd-sb-3019.html
- https://www.amd.com/en/resources/product-security/bulletin/amd-sb-7033.html
- https://bughunters.google.com/blog/zen-and-the-art-of-microcode-hacking
- AMD: Microcode Signature Verification Vulnerability · Advisory · google/security-research · GitHub
- https://media.ccc.de/v/why2025-156-entrysign-create-your-own-x86-microcode-for-fun-and-profit