Read the docs
TI-2026-34851 Aliases CVE-2026-47271

pam_usb: OOM guards removed by -DNDEBUG cause NULL dereference and authentication process crash

Priority LOW 22CWE-476Published · Updated

Key facts

Attack vector
Local
Privileges required
None
User interaction
None
Attack complexity
High
Impact type
Denial of service
Confidentiality · integrity · availability
None · None · High
Fix status
Fixed

Attack profile from CVSS 3.1 · CNA. Fix status from CNA. Impact type from CWE-476.

Summary

pam_usb provides hardware authentication for Linux using ordinary removable media. Prior to 0.9.0, src/mem.c implemented out-of-memory guards for xmalloc(), xrealloc(), and xstrdup() using assert(data != NULL). The C standard specifies that all assert() expressions are compiled out when NDEBUG is defined at build time. NDEBUG is commonly defined in release and packaging builds (Debian, Fedora, Arch package flags all define it via -DNDEBUG in CFLAGS). With the guard removed, xmalloc/xrealloc/xstrdup silently return NULL on allocation failure. Every caller in the codebase dereferences the return value without a NULL check -- this is the intended design, as the guard was supposed to abort before the dereference. With the guard gone, any allocation failure causes a NULL pointer dereference, crashing the PAM module. A crash in a PAM module loaded by sudo or login causes authentication to fail for the duration of the crash, creating a local denial-of-service condition. An attacker who can induce memory pressure at authentication time can lock all users out of sudo and login. This vulnerability is fixed in 0.9.0.

Why it matters now

Exploitation None reported CISA SSVC · not in CISA KEV
EPSS 0.00122 2nd percentileScored 2026-11-07
Fix Fixed pam_usb (mcdope): 0.9.0

SSVC decision points

CISA ADP · SSVC 2.0.3

Exploitation
None
Automatable
No
Technical impact
Partial

The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.

Affected products

VendorProductAffected versionsFixed inStatusSource
mcdopepam_usbbefore 0.9.00.9.0Patch availableCNA
  • pam_usb Vendormcdope Affected before 0.9.0 Fixed in 0.9.0 Patch available CNA

Remediation

  • Fix · CNA pam_usb (mcdope) Fixed in 0.9.0

Timeline

  1. 2026-10-02 Threatist record created from CVE-2026-47271

References

  • TI-2026-35505 pam_usb: PAM_RHOST check skipped when deny_remote=false allows XDMCP authentication bypass CVSS 3.1HIGH 8.1
  • TI-2026-32598 pam_usb: Symlink attacks on pad directory and pad files enable authentication bypass and root file corruption CVSS 3.1HIGH 7.9
  • TI-2026-32596 pam_usb: PINENTRY_FALLBACK_APP environment variable allows arbitrary command execution CVSS 3.1HIGH 7.8
  • TI-2026-32600 pam_usb: Command injection via $TMUX environment variable leads to RCE as root CVSS 3.1HIGH 8.8
  • TI-2026-32599 pam_usb: Shell injection via device UUID and username in pamusb-conf and pamusb-agent CVSS 3.1HIGH 8.2
  • TI-2026-34849 pam_usb: deny_remote feature incorrectly classifies IPv4-mapped IPv6 remote connections as local CVSS 3.1HIGH 7.4
See all 21 →

Sources

This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences