GCVE Workshop - 22 September 2026 (14:00-18:00), Luxembourg Before The Vulnopticon Conference - Registration

GHSA-H68Q-3G2M-9W2F

Vulnerability from github – Published: 2026-06-24 18:32 – Updated: 2026-07-14 21:31
VLAI
Details

In the Linux kernel, the following vulnerability has been resolved:

ima_fs: Correctly create securityfs files for unsupported hash algos

ima_tpm_chip->allocated_banks[i].crypto_id 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 hash_algo_name[].

On 6.12.40 I observe the following read out-of-bounds in hash_algo_name: ================================================================== BUG: KASAN: global-out-of-bounds in create_securityfs_measurement_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: dump_stack_lvl+0x61/0x90 print_report+0xc4/0x580 ? kasan_addr_to_slab+0x26/0x80 ? create_securityfs_measurement_lists+0x396/0x440 kasan_report+0xc2/0x100 ? create_securityfs_measurement_lists+0x396/0x440 create_securityfs_measurement_lists+0x396/0x440 ima_fs_init+0xa3/0x300 ima_init+0x7d/0xd0 init_ima+0x28/0x100 do_one_initcall+0xa6/0x3e0 kernel_init_freeable+0x455/0x740 kernel_init+0x24/0x1d0 ret_from_fork+0x38/0x80 ret_from_fork_asm+0x11/0x20

The buggy address belongs to the variable: hash_algo_name+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 sha3_256, which isn't yet in tpm_algorithms: tpm tpm0: TPM with unsupported bank algorithm 0x0027

That's TPM_ALG_SHA3_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 "tpm_alg" 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/ ascii_runtime_measurements ascii_runtime_measurements_tpm_alg_27 ascii_runtime_measurements_sha1 ascii_runtime_measurements_sha256 binary_runtime_measurements binary_runtime_measurements_tpm_alg_27 binary_runtime_measurements_sha1 binary_runtime_measurements_sha256 policy runtime_measurements_count violations

Show details on source website

{
  "affected": [],
  "aliases": [
    "CVE-2026-53038"
  ],
  "database_specific": {
    "cwe_ids": [
      "CWE-125"
    ],
    "github_reviewed": false,
    "github_reviewed_at": null,
    "nvd_published_at": "2026-06-24T17:17:15Z",
    "severity": "MODERATE"
  },
  "details": "In the Linux kernel, the following vulnerability has been resolved:\n\nima_fs: Correctly create securityfs files for unsupported hash algos\n\nima_tpm_chip-\u003eallocated_banks[i].crypto_id is initialized to\nHASH_ALGO__LAST if the TPM algorithm is not supported. However there\nare places relying on the algorithm to be valid because it is accessed\nby hash_algo_name[].\n\nOn 6.12.40 I observe the following read out-of-bounds in hash_algo_name:\n  ==================================================================\n  BUG: KASAN: global-out-of-bounds in create_securityfs_measurement_lists+0x396/0x440\n  Read of size 8 at addr ffffffff83e18138 by task swapper/0/1\n\n  CPU: 4 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.12.40 #3\n  Call Trace:\n   \u003cTASK\u003e\n   dump_stack_lvl+0x61/0x90\n   print_report+0xc4/0x580\n   ? kasan_addr_to_slab+0x26/0x80\n   ? create_securityfs_measurement_lists+0x396/0x440\n   kasan_report+0xc2/0x100\n   ? create_securityfs_measurement_lists+0x396/0x440\n   create_securityfs_measurement_lists+0x396/0x440\n   ima_fs_init+0xa3/0x300\n   ima_init+0x7d/0xd0\n   init_ima+0x28/0x100\n   do_one_initcall+0xa6/0x3e0\n   kernel_init_freeable+0x455/0x740\n   kernel_init+0x24/0x1d0\n   ret_from_fork+0x38/0x80\n   ret_from_fork_asm+0x11/0x20\n   \u003c/TASK\u003e\n\n  The buggy address belongs to the variable:\n   hash_algo_name+0xb8/0x420\n\n  Memory state around the buggy address:\n   ffffffff83e18000: 00 01 f9 f9 f9 f9 f9 f9 00 01 f9 f9 f9 f9 f9 f9\n   ffffffff83e18080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00\n  \u003effffffff83e18100: 00 00 00 00 00 00 00 f9 f9 f9 f9 f9 00 05 f9 f9\n                                          ^\n   ffffffff83e18180: f9 f9 f9 f9 00 00 00 00 00 00 00 04 f9 f9 f9 f9\n   ffffffff83e18200: 00 00 00 00 00 00 00 00 04 f9 f9 f9 f9 f9 f9 f9\n  ==================================================================\n\nSeems like the TPM chip supports sha3_256, which isn\u0027t yet in\ntpm_algorithms:\n  tpm tpm0: TPM with unsupported bank algorithm 0x0027\n\nThat\u0027s TPM_ALG_SHA3_256 == 0x0027 from \"Trusted Platform Module 2.0\nLibrary Part 2: Structures\", page 51 [1].\nSee also the related U-Boot algorithms update [2].\n\nThus solve the problem by creating a file name with \"_tpm_alg_\u003cID\u003e\"\npostfix if the crypto algorithm isn\u0027t initialized.\n\nThis is how it looks on the test machine (patch ported to v6.12 release):\n  # ls -1 /sys/kernel/security/ima/\n  ascii_runtime_measurements\n  ascii_runtime_measurements_tpm_alg_27\n  ascii_runtime_measurements_sha1\n  ascii_runtime_measurements_sha256\n  binary_runtime_measurements\n  binary_runtime_measurements_tpm_alg_27\n  binary_runtime_measurements_sha1\n  binary_runtime_measurements_sha256\n  policy\n  runtime_measurements_count\n  violations\n\n[1]: https://trustedcomputinggroup.org/wp-content/uploads/Trusted-Platform-Module-2.0-Library-Part-2-Version-184_pub.pdf\n[2]: https://lists.denx.de/pipermail/u-boot/2024-July/558835.html",
  "id": "GHSA-h68q-3g2m-9w2f",
  "modified": "2026-07-14T21:31:29Z",
  "published": "2026-06-24T18:32:44Z",
  "references": [
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-53038"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/081b557cb56e1cfa8d1619b2601b01c53e3f418c"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/88d4e89a39f0de07798ca3fd93bd1a9ea212a82e"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/b6766b171a5c4c33b26ff6fec530cb798db1f75e"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/d7bd8cf0b348d3edae7bee33e74a32b21668b181"
    }
  ],
  "schema_version": "1.4.0",
  "severity": [
    {
      "score": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H",
      "type": "CVSS_V3"
    }
  ]
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…

Related by attack behaviour

Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.


Loading…