In the Linux kernel, the following vulnerability has been resolved:
ima_fs: Correctly create securityfs files for unsupported hash algos
imatpmchip->allocatedbanks[i].cryptoid is initialized to HASH_ALGO__LAST if the TPM algorithm is not supported. However there are places relying on the algorithm to be valid because it is accessed by hashalgoname[].
On 6.12.40 I observe the following read out-of-bounds in hashalgoname: ================================================================== BUG: KASAN: global-out-of-bounds in createsecurityfsmeasurement_lists+0x396/0x440 Read of size 8 at addr ffffffff83e18138 by task swapper/0/1
CPU: 4 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.12.40 #3 Call Trace: <TASK> dumpstacklvl+0x61/0x90 printreport+0xc4/0x580 ? kasanaddrtoslab+0x26/0x80 ? createsecurityfsmeasurementlists+0x396/0x440 kasanreport+0xc2/0x100 ? createsecurityfsmeasurementlists+0x396/0x440 createsecurityfsmeasurementlists+0x396/0x440 imafsinit+0xa3/0x300 imainit+0x7d/0xd0 initima+0x28/0x100 dooneinitcall+0xa6/0x3e0 kernelinitfreeable+0x455/0x740 kernelinit+0x24/0x1d0 retfromfork+0x38/0x80 retfromforkasm+0x11/0x20 </TASK>
The buggy address belongs to the variable: hashalgoname+0xb8/0x420
Memory state around the buggy address: ffffffff83e18000: 00 01 f9 f9 f9 f9 f9 f9 00 01 f9 f9 f9 f9 f9 f9 ffffffff83e18080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ffffffff83e18100: 00 00 00 00 00 00 00 f9 f9 f9 f9 f9 00 05 f9 f9 ^ ffffffff83e18180: f9 f9 f9 f9 00 00 00 00 00 00 00 04 f9 f9 f9 f9 ffffffff83e18200: 00 00 00 00 00 00 00 00 04 f9 f9 f9 f9 f9 f9 f9 ==================================================================
Seems like the TPM chip supports sha3256, which isn't yet in tpmalgorithms: tpm tpm0: TPM with unsupported bank algorithm 0x0027
That's TPMALGSHA3_256 == 0x0027 from "Trusted Platform Module 2.0 Library Part 2: Structures", page 51 [1]. See also the related U-Boot algorithms update [2].
Thus solve the problem by creating a file name with "tpmalg_<ID>" postfix if the crypto algorithm isn't initialized.
This is how it looks on the test machine (patch ported to v6.12 release): # ls -1 /sys/kernel/security/ima/ asciiruntimemeasurements asciiruntimemeasurementstpmalg27 asciiruntimemeasurementssha1 asciiruntimemeasurementssha256 binaryruntimemeasurements binaryruntimemeasurementstpmalg27 binaryruntimemeasurementssha1 binaryruntimemeasurementssha256 policy runtimemeasurementscount violations
{
"cna_assigner": "Linux",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/53xxx/CVE-2026-53038.json"
}