---
id: CVE-2026-48859
title: >-
  Observable Timing Discrepancy vulnerability in Erlang/OTP ssh (ssh_auth,
  ssh_options modules) allows unauthenticated remote username enumeration via
  timing side-channel in password authentication.


  When the SSH daemon is configured with …
summary: >-
  Observable Timing Discrepancy vulnerability in Erlang/OTP ssh (ssh_auth,
  ssh_options modules) allows unauthenticated remote username enumeration via
  timing side-channel in password authentication.


  When the SSH daemon is configured with …
severity: medium
cvss: 5.3
cvssVector: 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N'
cwe:
  - CWE-208
vendor: erlang
product: erlang/otp
affected:
  - 'erlang/otp >= 29.0, < 29.0.2'
  - 'erlang/ssh >= 6.0, < 6.0.1'
patched:
  - erlang/otp 29.0.2
  - erlang/ssh 6.0.1
published: '2026-06-10'
updated: '2026-09-08'
sourceUpdated: '2026-09-08T01:17:31.137'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-48859'
references:
  - url: 'https://cna.erlef.org/cves/CVE-2026-48859.html'
    label: 6b3ad84c-e1a6-4bf7-a703-f496b71e49db
  - url: >-
      https://github.com/erlang/otp/commit/c342092ef4b369bb409d5b71ac8fd83bab74aedf
    label: 6b3ad84c-e1a6-4bf7-a703-f496b71e49db
  - url: 'https://github.com/erlang/otp/security/advisories/GHSA-3w6p-vwhf-wvp4'
    label: 6b3ad84c-e1a6-4bf7-a703-f496b71e49db
  - url: 'https://osv.dev/vulnerability/EEF-CVE-2026-48859'
    label: 6b3ad84c-e1a6-4bf7-a703-f496b71e49db
  - url: 'https://www.erlang.org/doc/system/versions.html#order-of-versions'
    label: 6b3ad84c-e1a6-4bf7-a703-f496b71e49db
tags:
  - nvd
  - cve.org
ssvc:
  exploitation: none
  automatable: 'yes'
  technicalImpact: partial
  timestamp: '2026-06-10T16:19:16.914933Z'
epss: 0.00354
epssPercentile: 0.29218
ingestedAt: '2026-09-08T13:33:24.957Z'
---

## Overview

Observable Timing Discrepancy vulnerability in Erlang/OTP ssh (ssh_auth, ssh_options modules) allows unauthenticated remote username enumeration via timing side-channel in password authentication.

When the SSH daemon is configured with the user_passwords or password option, ssh_auth:check_password/3 performs a PBKDF2-SHA256 computation with 600,000 iterations (~300ms) for valid usernames, but returns immediately (~0ms) for invalid usernames via the ssh_options:get_password_option/2 path. This timing difference is detectable in a single authentication attempt and allows an unauthenticated attacker to distinguish valid from invalid usernames.

The user_passwords and password options are documented as intended for test purposes; the recommended alternative is pwdfun, which is not affected by this vulnerability.

This vulnerability is associated with program files lib/ssh/src/ssh_auth.erl and lib/ssh/src/ssh_options.erl.

This issue affects OTP from OTP 29.0 before OTP 29.0.2, corresponding to ssh from 6.0 before 6.0.1.

## Affected

- `erlang/otp >= 29.0, < 29.0.2`
- `erlang/ssh >= 6.0, < 6.0.1`

## Remediation

Upgrade past the affected range:

- `erlang/otp 29.0.2`
- `erlang/ssh 6.0.1`
