Skip to main content

Linux Kernel CVE-2025-68774

HIGH
2026-01-13 416baaa9-dc9f-4396-8d5f-8c081fb06d67
7.5
CVSS 3.1 · Vendor: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
Share

Severity by source

Vendor (416baaa9-dc9f-4396-8d5f-8c081fb06d67) PRIMARY
7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
vuln.today AI
4.7 MEDIUM

Local filesystem access needed (AV:L), win a timing race (AC:H), local user privileges (PR:L); impact is kernel panic so A:H with no confidentiality or integrity loss.

3.1 AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H
4.0 AV:L/AC:H/AT:P/PR:L/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
SUSE
4.7 MEDIUM
AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H
Red Hat
5.5 MEDIUM
qualitative

Primary rating from Vendor (416baaa9-dc9f-4396-8d5f-8c081fb06d67).

CVSS VectorVendor: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

Lifecycle Timeline

8
Analysis Updated
Jul 30, 2026 - 07:30 vuln.today
v4 (cvss_changed)
Analysis Updated
Jul 30, 2026 - 07:29 vuln.today
v3 (cvss_changed)
Analysis Updated
Jul 30, 2026 - 07:28 vuln.today
v2 (cvss_changed)
Re-analysis Queued
Jul 30, 2026 - 06:37 vuln.today
cvss_changed
CVSS changed
Jul 30, 2026 - 06:37 NVD
7.5 (HIGH)
Patch released
Mar 16, 2026 - 15:00 nvd
Patch available
Analysis Generated
Mar 12, 2026 - 21:54 vuln.today
CVE Published
Jan 13, 2026 - 16:15 nvd
N/A

DescriptionCVE.org

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

hfsplus: fix missing hfs_bnode_get() in __hfs_bnode_create

When sync() and link() are called concurrently, both threads may enter hfs_bnode_find() without finding the node in the hash table and proceed to create it.

Thread A: hfsplus_write_inode() -> hfsplus_write_system_inode() -> hfs_btree_write() -> hfs_bnode_find(tree, 0) -> __hfs_bnode_create(tree, 0)

Thread B: hfsplus_create_cat() -> hfs_brec_insert() -> hfs_bnode_split() -> hfs_bmap_alloc() -> hfs_bnode_find(tree, 0) -> __hfs_bnode_create(tree, 0)

In this case, thread A creates the bnode, sets refcnt=1, and hashes it. Thread B also tries to create the same bnode, notices it has already been inserted, drops its own instance, and uses the hashed one without getting the node.


	node2 = hfs_bnode_findhash(tree, cnid);
	if (!node2) {                                 <- Thread A
		hash = hfs_bnode_hash(cnid);
		node->next_hash = tree->node_hash[hash];
		tree->node_hash[hash] = node;
		tree->node_hash_cnt++;
	} else {                                      <- Thread B
		spin_unlock(&tree->hash_lock);
		kfree(node);
		wait_event(node2->lock_wq,
			!test_bit(HFS_BNODE_NEW, &node2->flags));
		return node2;
	}

However, hfs_bnode_find() requires each call to take a reference. Here both threads end up setting refcnt=1. When they later put the node, this triggers:

BUG_ON(!atomic_read(&node->refcnt))

In this scenario, Thread B in fact finds the node in the hash table rather than creating a new one, and thus must take a reference.

Fix this by calling hfs_bnode_get() when reusing a bnode newly created by another thread to ensure the refcount is updated correctly.

A similar bug was fixed in HFS long ago in commit a9dc087fd3c4 ("fix missing hfs_bnode_get() in __hfs_bnode_create") but the same issue remained in HFS+ until now.

AnalysisAI

Denial of service in the Linux kernel's HFS+ (hfsplus) filesystem driver allows a local user with access to a mounted HFS+ volume to crash the kernel via a reference-counting race in __hfs_bnode_create(). When sync() and link() operations run concurrently, two threads can both attempt to create the same B-tree node; the thread that loses the race reuses the already-hashed node without incrementing its refcount, so a later put trips BUG_ON(!atomic_read(&node->refcnt)) and panics the system. No public exploit has been identified at time of analysis, EPSS risk is very low (0.05%), and the issue is not in CISA KEV.

Technical ContextAI

HFS+ (hfsplus) is the legacy Apple filesystem, supported in Linux mainly for interoperability with macOS media. Internally it uses B-trees whose nodes (bnodes) are cached in a per-tree hash table (tree->node_hash) protected by tree->hash_lock. Each successful hfs_bnode_find() is contractually required to hold one reference on the returned node. The root cause is a missing reference acquisition on a specific code path: in __hfs_bnode_create() a thread that finds an already-hashed node created by a racing thread (via hfs_bnode_findhash) frees its own allocation and returns the existing node, but historically failed to call hfs_bnode_get() on it. Both racing threads therefore believe they hold the single refcnt=1, and the second put drives the counter below zero, hitting the BUG_ON. This is a classic reference-count mismanagement / concurrency defect (conceptually CWE-911 improper reference count update, arising from a CWE-362 race condition); the NVD record lists CWE as N/A. The identical bug was fixed years ago in the older HFS driver (commit a9dc087fd3c4) but persisted in HFS+ until this patch.

Affected ProductsAI

The affected product is the mainline Linux kernel's hfsplus filesystem driver; the flaw exists in all versions prior to the fix and mirrors an issue long resolved in the older HFS driver. NVD references seven git.kernel.org stable-tree commits representing the fix backported across supported stable branches (e.g., https://git.kernel.org/stable/c/b9d1c6bb5f19460074ce9862cb80be86b5fb0a50 and https://git.kernel.org/stable/c/152af114287851583cf7e0abc10129941f19466a). Distribution exposure is confirmed for Ubuntu via advisory USN-8096-1 (https://ubuntu.com/security/notices/USN-8096-1). Exact vulnerable-to-fixed version boundaries per branch are not enumerated in the provided data and should be confirmed against each distribution's kernel package and the specific stable commit that landed in that branch.

RemediationAI

Patch available per vendor advisory: apply the upstream stable-tree fix that adds the missing hfs_bnode_get() call in __hfs_bnode_create() (see the git.kernel.org commits, e.g. https://git.kernel.org/stable/c/b9d1c6bb5f19460074ce9862cb80be86b5fb0a50). Ubuntu users should update to the fixed kernel per USN-8096-1 (https://ubuntu.com/security/notices/USN-8096-1); other distributions should upgrade to their kernel build that incorporates these commits - exact patched package versions must be taken from the distribution advisory rather than invented. Until the kernel is updated, the most effective compensating control is to avoid mounting HFS+ volumes: blacklist or unload the hfsplus module (e.g., add hfsplus to modprobe blacklist), and disable automounting of removable media so untrusted HFS+ disks cannot be mounted; the trade-off is loss of the ability to read/write Apple-formatted media on that host. On multi-user systems, restrict which users can mount filesystems and avoid exposing HFS+ mounts to untrusted local users. Reboot is required for the kernel update to take effect.

Vendor StatusVendor

SUSE

Severity: Moderate
Product Status
Image SLES12-SP5-Azure-BYOS Image SLES12-SP5-Azure-HPC-BYOS Image SLES12-SP5-EC2-BYOS Image SLES12-SP5-EC2-ECS-On-Demand Image SLES12-SP5-EC2-On-Demand Image SLES12-SP5-GCE-BYOS Image SLES12-SP5-GCE-On-Demand Affected
Image SLES12-SP5-Azure-SAP-BYOS Image SLES12-SP5-Azure-SAP-On-Demand Image SLES12-SP5-EC2-SAP-BYOS Image SLES12-SP5-EC2-SAP-On-Demand Image SLES12-SP5-GCE-SAP-BYOS Image SLES12-SP5-GCE-SAP-On-Demand Image SLES12-SP5-SAP-Azure-LI-BYOS-Production Image SLES12-SP5-SAP-Azure-VLI-BYOS-Production Affected
SUSE Linux Enterprise Server 12 SP5-LTSS Fixed
SUSE Linux Enterprise Server LTSS Extended Security 12 SP5 Fixed
SUSE Linux Enterprise Desktop 15 SP7 Not-Affected

Share

CVE-2025-68774 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy