{"id":11818,"date":"2026-09-04T18:53:53","date_gmt":"2026-09-04T10:53:53","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-78619"},"modified":"2026-09-04T18:53:53","modified_gmt":"2026-09-04T10:53:53","slug":"cve-2026-78619","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-78619","title":{"rendered":"CVE-2026-78619 [CRITICAL] &#8211; Punk::Plugin::TOTP versions before 0.05 for Perl accept another account&#8217;s recovery code at"},"content":{"rendered":"<p>Punk::Plugin::TOTP versions before 0.05 for Perl accept another account&#8217;s recovery code at the two-factor challenge because totp_use_recovery compares user identifiers numerically.<\/p>\n<p>The helper searches the recovery model for the submitted code&#8217;s digest alone, across every user&#8217;s rows, so the ownership test that follows is the only thing binding a code to the account it was issued to. That test compares the row&#8217;s user_id with the challenged user&#8217;s id through Perl&#8217;s integer coercion, and an identifier with no leading digits coerces to zero, so any two of them compare equal. User models keyed on a username, an email address or a UUID hit that case, and a numeric key compares as intended.<\/p>\n<p>The challenge route feeds a submitted value to the helper once TOTP verification fails, so an attacker who knows a victim&#8217;s password and holds a recovery code of their own passes the victim&#8217;s second factor.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Punk::Plugin::TOTP versions before 0.05 for Perl accept another account&#8217;s recovery code at the two-factor challenge because totp_use_recovery compares user identifiers numerically.<\/p>\n<p>The helper searche<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-11818","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/11818","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=11818"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=11818"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=11818"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}