Unlock of a Resource that is not Locked Affecting kernel-livepatch-6.12.103-127.188 package, versions <1:1.0-0.amzn2023


Severity

Recommended
high

Based on Amazon Linux security rating.

Threat Intelligence

EPSS
0.18% (8th percentile)

Do your applications use this vulnerable package?

In a few clicks we can analyze your entire application and see what components are vulnerable in your application, and suggest you quick fixes.

Test your applications
  • Snyk IDSNYK-AMZN2023-KERNELLIVEPATCH612103127188-19475985
  • published1 Sept 2026
  • disclosed10 Aug 2026

Introduced: 10 Aug 2026

CVE-2026-68179  (opens in a new tab)
CWE-832  (opens in a new tab)

How to fix?

Upgrade Amazon-Linux:2023 kernel-livepatch-6.12.103-127.188 to version 1:1.0-0.amzn2023 or higher.
This issue was patched in ALAS2023-2026-2110.

NVD Description

Note: Versions mentioned in the description apply only to the upstream kernel-livepatch-6.12.103-127.188 package and not the kernel-livepatch-6.12.103-127.188 package as distributed by Amazon-Linux. See How to fix? for Amazon-Linux:2023 relevant fixed versions and status.

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

misc: nsm: only unlock nsm_dev on post-lock error paths

nsm_dev_ioctl() jumps to the common out label even when the initial copy_from_user() fails before nsm->lock has been taken. The error path then blindly unlocks a mutex that was never acquired.

This issue was found by our static analysis tool and then manually reviewed against the current tree.

The grounded PoC kept the miscdevice ioctl entry and the pre-lock copy_from_user(&raw, argp, _IOC_SIZE(cmd)) failure path by issuing NSM_IOCTL_RAW with an invalid user pointer. That failure reaches the shared out label before mutex_lock(&nsm->lock). Lockdep reported:

WARNING: bad unlock balance detected! exploit/193 is trying to release lock (&global_nsm.lock) at: nsm_dev_ioctl+0x5f/0xcf [vuln_msv] but there are no more locks to release! no locks held by exploit/193.

Return immediately on the pre-lock copy_from_user() failure and keep the common unlock label for the post-lock paths only.