CVE-2026-9733: Mojolicious::Plugin::Web::Auth::OAuth2 versions through 0.17 for Perl have an insecure default state parameter
Robert Rothenberg 23 Jun 2026 07:05 UTC
========================================================================
CVE-2026-9733 CPAN Security Group
========================================================================
CVE ID: CVE-2026-9733
Distribution: Mojolicious-Plugin-Web-Auth
Versions: through 0.17
MetaCPAN: https://metacpan.org/dist/Mojolicious-Plugin-Web-Auth
VCS Repo: https://github.com/hayajo/Mojolicious-Plugin-Web-Auth
Mojolicious::Plugin::Web::Auth::OAuth2 versions through 0.17 for Perl
have an insecure default state parameter
Description
-----------
Mojolicious::Plugin::Web::Auth::OAuth2 versions through 0.17 for Perl
have an insecure default state parameter.
When no state generator is specified in the constructor, the module
defaults to using a SHA-1 hash of predictable and low-entropy sources,
including the epoch time (which is leaked via the HTTP Date header) and
a call to Perl's built-in rand function.
A predictable state allows an attacker to hijack another user's session
through cross site request forgery (CSRF).
Problem types
-------------
- CWE-340 Generation of Predictable Numbers or Identifiers
- CWE-338 Use of Cryptographically Weak Pseudo-Random Number Generator
Workarounds
-----------
Users should specify a state_generator function in the plugin
configuration that uses a secure CSPRNG such as Crypt::PRNG or (for
Mojolicious 9.46 or later) the Mojo::Util::random_bytes function. For
example,
plugin 'Web::Auth',
module => 'OAuth2',
...
state_generator => sub {
unpack("H*", Mojo::Util::random_bytes(20))
};
References
----------
https://metacpan.org/release/HAYAJO/Mojolicious-Plugin-Web-Auth-0.17/source/lib/Mojolicious/Plugin/Web/Auth/OAuth2.pm#L129-131
https://datatracker.ietf.org/doc/html/rfc6749#section-10.12
https://security.metacpan.org/patches/M/Mojolicious-Plugin-Web-Auth/0.17/CVE-2026-9733-r2.patch