CVE-2026-47269
Deferred Deferred - Pending Action
pam_usb Remote Authentication Bypass via IPv4-mapped IPv6

Publication date: 2026-05-27

Last updated on: 2026-05-27

Assigner: GitHub, Inc.

Description
pam_usb provides hardware authentication for Linux using ordinary removable media. Prior to 0.9.0, pam_usb's deny_remote feature checks utmpx ut_addr_v6 to detect whether an authentication request originates from a remote session. The outer guard was if (utent->ut_addr_v6[0] != 0), which only tests the first 32-bit word of the 128-bit address field. IPv4-mapped IPv6 addresses (::ffff:x.x.x.x) store the IPv4 address in ut_addr_v6[3] with ut_addr_v6[0] == 0. On systems where the SSH daemon listens on :: (IPv6 wildcard) with AddressFamily any -- common on Ubuntu and Debian -- incoming IPv4 connections are recorded in utmpx as IPv4-mapped IPv6 addresses. The outer check evaluates to false, the remote-detection block is skipped entirely, and the session is treated as local. deny_remote=true does not block the authentication. An attacker with physical access to a registered USB device can authenticate over SSH on an affected system as if they were sitting at a local terminal, bypassing the deny_remote restriction. This vulnerability is fixed in 0.9.0.
CVSS Scores
EPSS Scores
Probability:
Percentile:
Meta Information
Published
2026-05-27
Last Modified
2026-05-27
Generated
2026-06-17
AI Q&A
2026-05-28
EPSS Evaluated
2026-06-15
NVD
Affected Vendors & Products
Showing 2 associated CPEs
Vendor Product Version / Range
mcdope pam_usb to 0.9.0 (exc)
mcdope pam_usb 0.9.0
Helpful Resources
Exploitability
CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-284 The product does not restrict or incorrectly restricts access to a resource from an unauthorized actor.
Attack-Flow Graph
AI Quick Actions
Instant insights powered by AI
Executive Summary

The vulnerability exists in pam_usb versions prior to 0.9.0, which provides hardware authentication for Linux using removable media. The issue is in the deny_remote feature that attempts to detect if an authentication request is from a remote session by checking only the first 32-bit word of a 128-bit IPv6 address field (ut_addr_v6[0]). However, IPv4-mapped IPv6 addresses store the IPv4 address in a different part of this field (ut_addr_v6[3]) with ut_addr_v6[0] equal to zero. On systems where SSH listens on all interfaces (IPv6 wildcard) and records incoming IPv4 connections as IPv4-mapped IPv6 addresses, the check incorrectly treats remote SSH sessions as local. This allows an attacker with physical access to a registered USB device to authenticate over SSH as if they were local, bypassing the deny_remote restriction.

Impact Analysis

This vulnerability can allow an attacker who has physical access to a registered USB authentication device to remotely authenticate over SSH on an affected system as if they were physically present at the local terminal. This bypasses the intended deny_remote restriction, potentially giving unauthorized remote access with high confidentiality and integrity impact, as indicated by the CVSS score.

Mitigation Strategies

To mitigate this vulnerability, upgrade pam_usb to version 0.9.0 or later, where the issue with the deny_remote feature is fixed.

Compliance Impact

The vulnerability in pam_usb allows an attacker with physical access to a registered USB device to bypass the deny_remote restriction and authenticate over SSH as if they were at a local terminal. This improper access control flaw (CWE-284) impacts confidentiality and integrity by allowing unauthorized remote access.

Such unauthorized access could lead to violations of compliance requirements in standards and regulations like GDPR and HIPAA, which mandate strict controls over access to sensitive data and systems to protect confidentiality and integrity.

Therefore, exploitation of this vulnerability could result in non-compliance with these regulations due to failure to adequately restrict remote access and protect sensitive information.

Detection Guidance

This vulnerability arises because pam_usb versions prior to 0.9.0 incorrectly classify IPv4-mapped IPv6 remote SSH sessions as local, bypassing the deny_remote restriction. Detection involves identifying if your system is running a vulnerable pam_usb version (0.8.6 or earlier) and if SSH is configured to listen on the IPv6 wildcard (::) with AddressFamily set to any.

To detect the vulnerability on your system, you can:

  • Check the installed pam_usb version: `pam_usb --version` or check package manager info to confirm if it is older than 0.9.0.
  • Inspect your SSH daemon configuration file (usually `/etc/ssh/sshd_config`) for the `AddressFamily` setting. If it is set to `any` or includes IPv6 wildcard (::), your system may be affected.
  • Monitor active SSH sessions and their recorded addresses in the utmpx database to see if IPv4-mapped IPv6 addresses (::ffff:x.x.x.x) are present, which could indicate the bypass scenario.

Example commands:

  • Check pam_usb version: `pam_usb --version` or `dpkg -l | grep pam_usb` (Debian/Ubuntu) or `rpm -qi pam_usb` (RedHat/CentOS).
  • Check SSH AddressFamily setting: `grep -i AddressFamily /etc/ssh/sshd_config`
  • List current SSH sessions and their IP addresses: `who` or `w` commands, then cross-check if IPv4-mapped IPv6 addresses appear.
  • Examine utmpx entries directly (requires programming or specialized tools) to verify if ut_addr_v6 fields contain IPv4-mapped IPv6 addresses.
Chat Assistant
Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-47269. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70
EPSS Chart