CVE-2026-109971: Clevis: clevis: pkcs#11 token pin exposed on command line via pkcs11-tool

Published Oct 13, 2026
·
Updated

A flaw was found in the clevis PKCS#11 pin. The clevis-decrypt-pkcs11 script passes the PKCS#11 token PIN as a command-line argument to pkcs11-tool, making it visible to any local user through process listing or the /proc filesystem.

Other sources

The clevis-decrypt-pkcs11 script passes the PKCS#11 token PIN via the -p command-line argument to pkcs11-tool at lines 121-122:

pkcs11-tool --login --decrypt --input-file ${ENC} \ -p ${PINvalue} ${moduleopt} ${mechanismoption} ${slotopt}

This makes the PIN visible to any local user via /proc/<pid>/cmdline or ps aux for the lifetime of the pkcs11-tool process. Unlike the daemon's -k flag (which is not used in production), this code path is exercised in the default production flow on every boot.

The PIN is the authentication credential for the PKCS#11 token. An attacker who captures the PIN and has physical access to the token can perform unauthorized private key operations.

The pkcs11-tool binary supports reading the PIN from an environment variable via the env: prefix on the -p flag (e.g., -p env:CLEVISPKCS11PIN), which would prevent command-line exposure since /proc/<pid>/environ is mode 0400 (owner-only). This is supported by pkcs11-tool's utilgetpin() function in OpenSC source (src/tools/util.c).

Additionally, the variables ${ENC}, ${PINvalue}, ${moduleopt}, ${mechanismoption}, ${slotopt} are all passed unquoted to pkcs11-tool, which is a secondary correctness issue (word splitting/globbing) but not security-critical.

Affected files: src/pins/pkcs11/clevis-decrypt-pkcs11 (lines 121-122) Versions affected: >= v21 through v22 (latest)

Steps to reproduce: 1. Boot a system using Clevis PKCS#11 pin for LUKS decryption. 2. During boot, as any local user: while true; do ps aux | grep '[p]kcs11-tool.-p' && break; sleep 0.01; done 3. If the timing window is hit, the PIN appears in the pkcs11-tool command-line arguments.

— Red Hat

Affected Software

1 affected component
Clevis clevis>=v21<=v22

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Configuration

    Pass the PKCS#11 token PIN to pkcs11-tool using the -p env:CLEVIS_PKCS11_PIN form instead of passing the PIN value directly on the command line.

    clevis-decrypt-pkcs11 pkcs11-tool PIN argument = env:CLEVIS_PKCS11_PIN

Event History

Oct 13, 2026
Data Sourced
via Red Hat·11:35 AM
DescriptionSeverityAffected Software
Oct 14, 2026
CVE Published
via MITRE·10:01 AM
Data Sourced
via MITRE·10:01 AM
DescriptionSeverityWeakness

Frequently Asked Questions

1

Which systems are exposed to this issue?

Systems using the Clevis PKCS#11 pin in the default production decryption flow are exposed. The affected clevis-decrypt-pkcs11 path is exercised on every boot.

2

What does an attacker need to exploit the exposure?

An attacker needs local access sufficient to view process listings or /proc/<pid>/cmdline while pkcs11-tool is running. To use a captured PIN for unauthorized private-key operations, the attacker also needs physical access to the PKCS#11 token.

3

How can I determine whether the PIN may have been exposed?

The PIN is visible for the lifetime of the pkcs11-tool process through ps aux or /proc/<pid>/cmdline. Review whether untrusted local users could observe processes during boot or while Clevis performs PKCS#11 decryption.

4

What mitigation is described if a fix cannot be applied immediately?

Use pkcs11-tool's environment-variable PIN support, such as -p env:CLEVIS_PKCS11_PIN, instead of supplying the PIN directly on the command line. The provided data states that /proc/<pid>/environ is mode 0400 and owner-only, preventing the command-line exposure.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203