Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-47134

CVE-2026-47134: ClearanceKit Privilege Escalation Flaw

CVE-2026-47134 is a privilege escalation vulnerability in ClearanceKit for macOS that allows root processes to forge policy signatures. This article covers technical details, affected versions, impact, and mitigation.

Published:

CVE-2026-47134 Overview

ClearanceKit is a macOS system extension that intercepts file-system access events and enforces per-process access policies. CVE-2026-47134 is an insecure permissions flaw [CWE-732] affecting the Elliptic Curve Digital Signature Algorithm (ECDSA) private key that signs the on-disk policy database at /Library/Application Support/clearancekit/store.db. The key resides in the macOS System Keychain without the intended Access Control List (ACL). Any process running as root can use the key to sign arbitrary policy content, bypassing the integrity guarantees the signature is meant to provide. Version 5.0.10 corrects the keychain persistence logic.

Critical Impact

A local attacker with root privileges on a macOS host can forge valid signatures over attacker-controlled ClearanceKit policy data, disabling or altering per-process file-system access enforcement.

Affected Products

  • ClearanceKit for macOS versions prior to 5.0.10
  • Systems relying on ClearanceKit policy enforcement via the System Keychain-persisted ECDSA signing key
  • macOS legacy System Keychain storage for kSecClassKey items created by ClearanceKit

Discovery Timeline

  • 2026-07-20 - CVE-2026-47134 published to the National Vulnerability Database (NVD)
  • 2026-07-23 - Last updated in NVD database

Technical Details for CVE-2026-47134

Vulnerability Analysis

ClearanceKit signs its policy database with an ECDSA private key stored in the macOS System Keychain. The signature ensures that only ClearanceKit itself can produce a policy that the system extension will honor. The key is generated in memory with SecKeyCreateRandomKey and then persisted with a separate SecItemAdd call that supplies both kSecValueRef and kSecAttrAccess. The kSecAttrAccess parameter is intended to bind an ACL that restricts which processes can use the key.

This two-step create-then-persist pattern fails for kSecClassKey items in the legacy System Keychain. macOS silently ignores the kSecAttrAccess argument for this item class, so the persisted key carries no ACL restriction. The same builder logic applied to kSecClassGenericPassword items correctly binds the ACL, which is why the defect is specific to the EC signing key. As a result, the trust boundary that the signature is designed to enforce collapses whenever an attacker holds root.

Root Cause

The root cause is an incorrect assumption that SecItemAdd will apply kSecAttrAccess uniformly across keychain item classes. For legacy System Keychain kSecClassKey entries, the attribute is discarded, leaving the private key readable and usable by any root-context caller. This is a classic incorrect permission assignment for a critical resource [CWE-732].

Attack Vector

Exploitation requires local access and root privileges on the affected macOS host. An attacker queries the System Keychain for the item labelled clearancekit policy signing key, obtains a usable reference to the ECDSA private key, and signs an attacker-crafted policy blob. Writing the forged blob and its valid signature to /Library/Application Support/clearancekit/store.db causes the system extension to accept the policy, allowing the attacker to grant or revoke per-process file-system access as they choose.

No verified proof-of-concept code is published. Refer to the GitHub Security Advisory GHSA-w254-hxm5-3hgh for vendor technical detail.

Detection Methods for CVE-2026-47134

Indicators of Compromise

  • Unexpected modifications to /Library/Application Support/clearancekit/store.db with a valid signature but content that diverges from the administrator-issued policy.
  • Processes other than the ClearanceKit installer or system extension invoking SecItemCopyMatching or SecKeyCreateSignature against the keychain item labelled clearancekit policy signing key.
  • ClearanceKit policy decisions that permit file-system access previously denied without a corresponding administrative change.

Detection Strategies

  • Baseline the SHA-256 hash of store.db after every legitimate policy deployment and alert on out-of-band changes.
  • Audit macOS Endpoint Security events for ES_EVENT_TYPE_NOTIFY_OPEN and write activity targeting the ClearanceKit policy path by non-ClearanceKit binaries.
  • Correlate root-privilege process launches with subsequent Keychain API calls that reference the ClearanceKit signing key label.

Monitoring Recommendations

  • Forward Unified Log entries from the com.apple.securityd and ClearanceKit subsystems to a centralized log platform for retention and query.
  • Monitor installations of the ClearanceKit package and confirm the deployed build reports version 5.0.10 or later.
  • Track changes to System Keychain items with the security dump-keychain /Library/Keychains/System.keychain output on a scheduled cadence.

How to Mitigate CVE-2026-47134

Immediate Actions Required

  • Upgrade every macOS host running ClearanceKit to version 5.0.10 or later, which persists the signing key with the intended ACL.
  • Rotate the ECDSA signing key after upgrade so any previously exposed key material can no longer produce accepted signatures.
  • Review recent policy database changes and revert any store.db content that cannot be attributed to an authorized administrator.

Patch Information

ClearanceKit 5.0.10 fixes the issue by ensuring the ECDSA private key is stored with an ACL that restricts use to the ClearanceKit system extension. Details are published in the GitHub Security Advisory GHSA-w254-hxm5-3hgh.

Workarounds

  • No supported workaround preserves policy enforcement. Disabling the ClearanceKit system extension and manually removing the System Keychain item labelled clearancekit policy signing key prevents forged signatures but also disables the product's access controls.
  • Restrict interactive and remote root access on affected hosts until the patched build is deployed, since exploitation requires root context.
bash
# Remove the vulnerable signing key from the System Keychain
# (also disables ClearanceKit policy enforcement)
sudo security delete-generic-password -l "clearancekit policy signing key" /Library/Keychains/System.keychain

# Verify the ClearanceKit build is 5.0.10 or later before re-enabling
pkgutil --pkg-info-plist com.clearancekit.pkg | grep -A1 pkg-version

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.