
oss-sec mailing list archives
Re: AMD Microcode Signature Verification Vulnerability
From: Solar Designer <solar () openwall com>
Date: Thu, 6 Mar 2025 04:30:00 +0100
On Tue, Feb 04, 2025 at 11:10:28AM +0100, Solar Designer wrote:
On Wed, Jan 22, 2025 at 07:52:48AM -0800, Tavis Ormandy wrote:On Tue, Jan 21, 2025 at 11:38:16PM -0500, Demi Marie Obenour wrote:On Tue, Jan 21, 2025 at 06:31:31PM -0800, Tavis Ormandy wrote:It looks like an OEM leaked the patch for a major upcoming CPU vulnerability, i.e. "AMD Microcode Signature Verification Vulnerability": https://rog.asus.com/motherboards/rog-strix/rog-strix-x870-i-gaming-wifi/helpdesk_bios/ I'm not thrilled about this - the patch is *not* currently in linux-firmware, so this is the only publicly available patch.
Tavis also posted a screenshot to Twitter at the time, from which it could be seen that ASUS had indeed listed a relevant change in there. That mention was deleted from the web page within a day or so.
However, other people are discussing how to extract them: https://winraid.level1techs.com/t/offer-intel-amd-via-cpu-microcode-archives-1995-present/102857/53Is this fix effective, or can it be bypassed via a downgrade attack?I'm not sure yet, the vendor has been really excruciating to deal with, this is the first time I've been allowed to see the patch!! :(Much of the info is finally public (with more planned for March): https://github.com/google/security-research/security/advisories/GHSA-4xq7-4mgh-gp6w
Google notified AMD of this vulnerability on September 25, 2024. AMD subsequently provided an embargoed fix to its customers on December 17, 2024. To coordinate with AMD, we made a one-off exception to our standard vulnerability disclosure policy and delayed public disclosure until today, February 3, 2025. This joint disclosure occurs 46 days after AMD shared the fix with its customers and 131 days after Google's initial report. Due to the deep supply chain, sequence and coordination required to fix this issue, we will not be sharing full details at this time in order to give users time to re-establish trust on their confidential-compute workloads. We will share additional details and tools on March 5, 2025.CVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:C/C:H/I:H/A:N CVE-2024-56161
As mentioned in a Xen Security Notice in here earlier today: https://www.openwall.com/lists/oss-security/2025/03/05/3 the Google team did in fact "share additional details and tools" now: https://bughunters.google.com/blog/5424842357473280/zen-and-the-art-of-microcode-hacking https://github.com/google/security-research/tree/master/pocs/cpus/entrysign/zentool https://www.amd.com/en/resources/product-security/bulletin/amd-sb-7033.html This is an exciting read with a lot of detail, but for this posting I'll focus on what the vulnerability and its fix are:
The root cause of the EntrySign vulnerability is that the AMD Zen microcode signature verification algorithm uses the CMAC function as a hash function; however, CMAC is a message authentication code and does not necessarily provide the same security guarantees as a cryptographic hash function.
The weakness of using CMAC as a hash function is that anyone who has the encryption key is able to observe the intermediate values of the encryption and calculate a way to "correct" the difference so that the final output remains the same, even if the inputs are completely different.
Secure hash functions are designed in such a way that there is no secret key, and there is no way to use knowledge of the intermediate state in order to generate a collision. However, CMAC was not designed as a hash function, and therefore it is a weak hash function against an adversary who has the key. Remember that every AMD Zen CPU has to have the same AES-CMAC key in order to successfully calculate the hash of the AMD public key and the microcode patch contents. Therefore, the key only needs to be revealed from a single CPU in order to compromise all other CPUs using the same key. This opens up the potential for hardware attacks (e.g., reading the key from ROM with a scanning electron microscope), side-channel attacks (e.g., using Correlation Power Analysis to leak the key during validation), or other software or hardware attacks that can somehow reveal the key. In summary, it is a safe assumption that such a key will not remain secret forever. Forging On We noticed that the key from an old Zen 1 CPU was the example key of the NIST SP 800-38B publication (Appendix D.1 2b7e1516 28aed2a6 abf71588 09cf4f3c) and was reused until at least Zen 4 CPUs. Using this key we could break the two usages of AES-CMAC: the RSA public key and the microcode patch contents. We were able to forge new public keys which generated the same hash as the authentic AMD key. Additionally, we calculated collisions for signatures, and were able to generate a microcode patch that shares the same signature as another message that was legitimately signed.
Vulnerability Mitigation The fix released by AMD modifies the microcode validation routine to use a custom secure hash function. This is paired with an AMD Secure Processor update which ensures the patch validation routine is updated before the x86 cores can attempt to install a tampered microcode patch. We plan to provide additional details in the upcoming months on how we reverse engineered the microcode update process, which led to us identifying the validation algorithms, extracting the CMAC key, and discovering some file format details.
Alexander
Current thread:
- AMD Microcode Signature Verification Vulnerability Tavis Ormandy (Jan 21)
- Re: AMD Microcode Signature Verification Vulnerability Demi Marie Obenour (Jan 22)
- Re: AMD Microcode Signature Verification Vulnerability Tavis Ormandy (Jan 22)
- Re: AMD Microcode Signature Verification Vulnerability Solar Designer (Feb 04)
- Re: AMD Microcode Signature Verification Vulnerability Jacob Bachmeyer (Feb 05)
- Re: AMD Microcode Signature Verification Vulnerability trinity pointard (Feb 06)
- Re: AMD Microcode Signature Verification Vulnerability Jacob Bachmeyer (Feb 06)
- Re: AMD Microcode Signature Verification Vulnerability Tavis Ormandy (Jan 22)
- Re: AMD Microcode Signature Verification Vulnerability Solar Designer (Mar 05)
- Re: AMD Microcode Signature Verification Vulnerability Jacob Bachmeyer (Mar 05)
- Re: AMD Microcode Signature Verification Vulnerability Solar Designer (Mar 05)
- Re: AMD Microcode Signature Verification Vulnerability Jacob Bachmeyer (Mar 05)
- Re: AMD Microcode Signature Verification Vulnerability Solar Designer (Mar 05)
- Re: AMD Microcode Signature Verification Vulnerability Taylor R Campbell (Mar 06)
- Re: AMD Microcode Signature Verification Vulnerability Demi Marie Obenour (Jan 22)