0.0
NA
CVE-2026-78655
Punk::Plugin::TOTP versions before 0.05 for Perl allow the second-factor attempt limit to be reset by replaying an earlier session cookie because the challenge route counts failures in the session
Description

Punk::Plugin::TOTP versions before 0.05 for Perl allow the second-factor attempt limit to be reset by replaying an earlier session cookie because the challenge route counts failures in the session. The POST handler on challenge_path keeps the failure count as tries inside the totp_pending record in the session, raising it on each rejected code and deleting the pending record once it reaches attempts, five by default. Punk::Session carries the session in a signed cookie unless the application declares a store, and keeps no server-side record, so an earlier value of the same session stays valid until the expiry stamped inside it. A client that saves the cookie before its failed attempts and presents it again gets the pending record back with its counter, and the limit never fires. The replayed record is accepted while its own expiry, pending_ttl seconds from the challenge and 300 by default, has not passed. Sessions declared with a store are not affected: the pending record and its counter then live server-side. The attempt limit does not bound guessing of the second factor, which is left to the per-address rate limit the plugin registers on the same path, 30 requests per 60 seconds.

INFO

Published Date :

Aug. 25, 2026, 10:17 p.m.

Last Modified :

Aug. 25, 2026, 10:17 p.m.

Remotely Exploit :

No

Source :

9b29abf9-4ab0-4765-b253-1875cd9b441e
Affected Products

The following products are affected by CVE-2026-78655 vulnerability. Even if cvefeed.io is aware of the exact versions of the products that are affected, the information is not represented in the table below.

No affected product recoded yet

Solution
Update Punk::Plugin::TOTP to version 0.05 or later to fix session replay.
  • Update Punk::Plugin::TOTP to version 0.05 or later.
  • Ensure sessions use a server-side store.
  • Implement stricter session cookie validation.
  • Monitor session activity for anomalies.
References to Advisories, Solutions, and Tools
CWE - Common Weakness Enumeration

While CVE identifies specific instances of vulnerabilities, CWE categorizes the common flaws or weaknesses that can lead to vulnerabilities. CVE-2026-78655 is associated with the following CWEs:

We scan GitHub repositories to detect new proof-of-concept exploits. Following list is a collection of public exploits and proof-of-concepts, which have been published on GitHub (sorted by the most recently updated).

Results are limited to the first 15 repositories due to potential performance issues.

The following list is the news that have been mention CVE-2026-78655 vulnerability anywhere in the article.

The following table lists the changes that have been made to the CVE-2026-78655 vulnerability over time.

Vulnerability history details can be useful for understanding the evolution of a vulnerability, and for identifying the most recent changes that may impact the vulnerability's severity, exploitability, or other characteristics.

  • New CVE Received by 9b29abf9-4ab0-4765-b253-1875cd9b441e

    Aug. 25, 2026

    Action Type Old Value New Value
    Added Affected [{'modules': ['Punk::Plugin::TOTP'], 'versions': [{'status': 'affected', 'version': '0', 'lessThan': '0.05', 'versionType': 'custom'}], 'packageURL': 'pkg:cpan/Punk-TOTP', 'packageName': 'Punk-TOTP', 'programFiles': ['include/ptotp/ptotp_plugin.h'], 'collectionURL': 'https://cpan.org/modules', 'defaultStatus': 'unaffected', 'programRoutines': [{'name': 'pp_r_post'}, {'name': 'pp_set_pending'}]}]
    Added Description Punk::Plugin::TOTP versions before 0.05 for Perl allow the second-factor attempt limit to be reset by replaying an earlier session cookie because the challenge route counts failures in the session. The POST handler on challenge_path keeps the failure count as tries inside the totp_pending record in the session, raising it on each rejected code and deleting the pending record once it reaches attempts, five by default. Punk::Session carries the session in a signed cookie unless the application declares a store, and keeps no server-side record, so an earlier value of the same session stays valid until the expiry stamped inside it. A client that saves the cookie before its failed attempts and presents it again gets the pending record back with its counter, and the limit never fires. The replayed record is accepted while its own expiry, pending_ttl seconds from the challenge and 300 by default, has not passed. Sessions declared with a store are not affected: the pending record and its counter then live server-side. The attempt limit does not bound guessing of the second factor, which is left to the per-address rate limit the plugin registers on the same path, 30 requests per 60 seconds.
    Added CWE CWE-642
    Added CWE CWE-307
    Added Reference https://metacpan.org/release/LNATION/Punk-0.32/view/lib/Punk/Session.pm
    Added Reference https://metacpan.org/release/LNATION/Punk-TOTP-0.04/source/include/ptotp/ptotp_plugin.h
    Added Reference https://metacpan.org/release/LNATION/Punk-TOTP-0.04/view/lib/Punk/Plugin/TOTP.pm
    Added Reference https://metacpan.org/release/LNATION/Punk-TOTP-0.05/source/Changes
EPSS is a daily estimate of the probability of exploitation activity being observed over the next 30 days. Following chart shows the EPSS score history of the vulnerability.