CVE-2026-85769: Libtpms: libtpms: heap out-of-bounds read in tpm2 state unmarshalling via unchecked block_skip_read() blocksize
A flaw was found in libtpms, a library that provides software TPM 2.0 emulation. When restoring TPM 2.0 state (for example during a virtual machine's power-on or state/migration restore), a malformed state blob can supply an oversized skip-block length that is not validated against the remaining size of the input buffer. This can drive an internal size counter negative, which bypasses a subsequent bounds check due to an unsafe signed-to-unsigned conversion, causing the parser to read memory outside the bounds of the heap buffer holding the state data. Successful exploitation can crash the process hosting libtpms (such as swtpm), resulting in a denial of service of the emulated TPM device and the virtual machine that depends on it. No data corruption or information disclosure was confirmed.
Affected Software
Event History
Frequently Asked Questions
Which deployments are exposed to this issue?
Deployments that use libtpms to emulate a TPM 2.0 device and restore TPM 2.0 state are exposed. Examples given include virtual machine power-on and state or migration restore, with swtpm identified as a possible hosting process.
What does an attacker need to trigger the vulnerability?
The attacker needs to provide a malformed TPM 2.0 state blob during state restoration. The blob must contain an oversized skip-block length that exceeds the remaining input-buffer size.
What is the expected impact if exploitation succeeds?
Successful exploitation can crash the process hosting libtpms, such as swtpm. This causes denial of service for the emulated TPM device and the virtual machine that relies on it; data corruption and information disclosure were not confirmed.