Bug 2519414 - CVE-2026-75900 swtpm: swtpm: Out-of-bounds read in SWTPM_NVRAM_CheckHeader due to sizeof(pointer) vs sizeof(struct) mismatch [fedora-all]
Summary: CVE-2026-75900 swtpm: swtpm: Out-of-bounds read in SWTPM_NVRAM_CheckHeader du...
Keywords:
Status: NEW
Alias: None
Product: Fedora
Classification: Fedora
Component: swtpm
Version: rawhide
Hardware: Unspecified
OS: Unspecified
medium
medium
Target Milestone: ---
Assignee: Stefan Berger
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard: {"flaws": ["2534069a-84db-498e-8ee9-7...
Depends On:
Blocks: CVE-2026-75900
TreeView+ depends on / blocked
 
Reported: 2026-08-19 07:39 UTC by Samuele Negrini
Modified: 2026-08-19 07:39 UTC (History)
3 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed:
Type: ---
Embargoed:


Attachments (Terms of Use)

Description Samuele Negrini 2026-08-19 07:39:17 UTC
Disclaimer: Community trackers are created by Red Hat Product Security team on a best effort basis. Package maintainers are required to ascertain if the flaw indeed affects their package, before starting the update process.

A flaw was found in swtpm. The SWTPM_NVRAM_CheckHeader() function in src/swtpm/swtpm_nvstore.c validates the caller-supplied buffer length against sizeof(bh), where bh is a blobheader pointer. Because sizeof(bh) evaluates to the pointer size (8 bytes on 64-bit, 4 on 32-bit) rather than the struct size (10 bytes for the packed blobheader), an undersized buffer passes the entry guard. The subsequent access to bh->totlen at offset 6 reads 4 bytes, overreading the allocation by 2 bytes on 64-bit systems (6 bytes on 32-bit). On 64-bit systems with glibc, the overread typically hits allocator padding and the function returns an error without crashing. On 32-bit systems or with non-glibc allocators, daemon termination is possible, causing denial of service to the associated VM. In both cases, the out-of-bounds totlen value is logged, leaking a small amount of adjacent heap data. The control channel attack path requires no encryption keys. The fix is to change sizeof(bh) to sizeof(*bh).


Note You need to log in before you can comment on or make changes to this bug.