---
id: CVE-2026-86219
title: >-
  Authen::SASL::Perl::DIGEST_MD5 versions before 2.2100 for Perl accept replayed
  authentication responses via unverified nonce in server_step.


  server_start generates a fresh nonce and sends it in the challenge, and
  nothing later compares …
summary: >-
  Authen::SASL::Perl::DIGEST_MD5 versions before 2.2100 for Perl accept replayed
  authentication responses via unverified nonce in server_step.


  server_start generates a fresh nonce and sends it in the challenge, and
  nothing later compares …
severity: critical
cvss: 9.8
cvssVector: 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H'
cwe:
  - CWE-294
product: Authen-SASL
affected:
  - Authen-SASL < 2.2100
published: '2026-09-06'
updated: '2026-09-08'
sourceUpdated: '2026-09-08T19:20:10.770'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-86219'
references:
  - url: 'https://datatracker.ietf.org/doc/html/rfc2831#section-2.1.2'
    label: 9b29abf9-4ab0-4765-b253-1875cd9b441e
  - url: >-
      https://github.com/perl-authen-sasl/perl-authen-sasl/commit/94337367030612842924f697cead29964a96448d.patch
    label: 9b29abf9-4ab0-4765-b253-1875cd9b441e
  - url: >-
      https://metacpan.org/release/EHUELS/Authen-SASL-2.2000/source/lib/Authen/SASL/Perl/DIGEST_MD5.pm#L203-222
    label: 9b29abf9-4ab0-4765-b253-1875cd9b441e
  - url: >-
      https://metacpan.org/release/EHUELS/Authen-SASL-2.2000/source/lib/Authen/SASL/Perl/DIGEST_MD5.pm#L410-414
    label: 9b29abf9-4ab0-4765-b253-1875cd9b441e
  - url: 'https://metacpan.org/release/EHUELS/Authen-SASL-2.2100/changes'
    label: 9b29abf9-4ab0-4765-b253-1875cd9b441e
  - url: 'https://www.cve.org/CVERecord?id=CVE-2025-40918'
    label: 9b29abf9-4ab0-4765-b253-1875cd9b441e
tags:
  - nvd
  - cve.org
ssvc:
  exploitation: none
  automatable: 'yes'
  technicalImpact: total
  timestamp: '2026-09-08T18:54:38.530817Z'
epss: 0.00468
epssPercentile: 0.37868
ingestedAt: '2026-09-07T12:10:14.067Z'
---

## Overview

Authen::SASL::Perl::DIGEST_MD5 versions before 2.2100 for Perl accept replayed authentication responses via unverified nonce in server_step.

server_start generates a fresh nonce and sends it in the challenge, and nothing later compares that value against the nonce the client returns. server_step derives the expected digest from the client's own parameters, so a response verifies whenever its digest matches the nonce it carries. The count table it also checks is keyed on the client-supplied nonce and starts empty in each new server object, so a captured first response, carrying `nc=00000001`, passes that too. RFC 2831 defines the nonce in the response as the value the server sent in the preceding challenge.

An attacker who observes one successful `qop=auth` exchange can replay the captured response against a later session for the same service, host, realm and user, and authenticate as that user without knowing the password.

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
