Security Advisories (1)
CVE-2025-40918 (2025-07-16)

Authen::SASL::Perl::DIGEST_MD5 versions 2.04 through 2.1800 for Perl generates the cnonce insecurely. The cnonce (client nonce) is generated from an MD5 hash of the PID, the epoch time and the built-in rand function. The PID will come from a small set of numbers, and the epoch time may be guessed, if it is not leaked from the HTTP Date header. The built-in rand function is unsuitable for cryptographic usage. According to RFC 2831, The cnonce-value is an opaque quoted string value provided by the client and used by both client and server to avoid chosen plaintext attacks, and to provide mutual authentication. The security of the implementation depends on a good choice. It is RECOMMENDED that it contain at least 64 bits of entropy.

NAME

Authen::SASL::Perl::DIGEST_MD5 - Digest MD5 Authentication class

VERSION

version 2.1700

SYNOPSIS

use Authen::SASL qw(Perl);

$sasl = Authen::SASL->new(
  mechanism => 'DIGEST-MD5',
  callback  => {
    user => $user, 
    pass => $pass,
    serv => $serv
  },
);

DESCRIPTION

This method implements the client and server parts of the DIGEST-MD5 SASL algorithm, as described in RFC 2831.

CALLBACK

The callbacks used are:

client

authname

The authorization id to use after successful authentication

user

The username to be used in the response

pass

The password to be used to compute the response.

serv

The service name when authenticating to a replicated service

realm

The authentication realm when overriding the server-provided default. If not given the server-provided value is used.

The callback will be passed the list of realms that the server provided in the initial response.

server

realm

The default realm to provide to the client

getsecret(username, realm, authzid)

returns the password associated with username and realm

PROPERTIES

The properties used are:

maxbuf

The maximum buffer size for receiving cipher text

minssf

The minimum SSF value that should be provided by the SASL security layer. The default is 0

maxssf

The maximum SSF value that should be provided by the SASL security layer. The default is 2**31

externalssf

The SSF value provided by an underlying external security layer. The default is 0

ssf

The actual SSF value provided by the SASL security layer after the SASL authentication phase has been completed. This value is read-only and set by the implementation after the SASL authentication phase has been completed.

maxout

The maximum plaintext buffer size for sending data to the peer. This value is set by the implementation after the SASL authentication phase has been completed and a SASL security layer is in effect.

SEE ALSO

Authen::SASL, Authen::SASL::Perl

AUTHORS

Graham Barr, Djamel Boudjerda (NEXOR), Paul Connolly, Julian Onions (NEXOR), Yann Kerherve.

Please report any bugs, or post any suggestions, to the perl-ldap mailing list <perl-ldap@perl.org>

COPYRIGHT

Copyright (c) 2003-2009 Graham Barr, Djamel Boudjerda, Paul Connolly, Julian Onions, Nexor, Peter Marschall and Yann Kerherve. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.