← Back to CVE Explorer

CVE-2026-13576

Full vulnerability record from the local CVENow database.

Description

CallBackery versions before 0.62.0 for Perl store user passwords as unsalted HMAC-SHA1 hashes. Passwords are hashed with hmac_sha1_sum() from Mojo::Util with no key, a single fast SHA-1 HMAC. There is no salt, so equal passwords give equal hashes, and no work factor slows down guessing. An attacker who obtains the user table can recover passwords by fast offline guessing.

Severity
Not scored
CVSS score
Not available
Vulnerability status
Received
Source identifier
9b29abf9-4ab0-4765-b253-1875cd9b441e
Published
2026-10-30 13:18:32.900000
Last modified
2026-10-30 13:18:32.900000
View original CVE JSON
{
  "id": "CVE-2026-13576",
  "sourceIdentifier": "9b29abf9-4ab0-4765-b253-1875cd9b441e",
  "published": "2026-10-30T13:18:32.900",
  "lastModified": "2026-10-30T13:18:32.900",
  "vulnStatus": "Received",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "CallBackery versions before 0.62.0 for Perl store user passwords as unsalted HMAC-SHA1 hashes.\n\nPasswords are hashed with hmac_sha1_sum() from Mojo::Util with no key, a single fast SHA-1 HMAC. There is no salt, so equal passwords give equal hashes, and no work factor slows down guessing.\n\nAn attacker who obtains the user table can recover passwords by fast offline guessing."
    }
  ],
  "affected": [
    {
      "source": "9b29abf9-4ab0-4765-b253-1875cd9b441e",
      "affectedData": [
        {
          "defaultStatus": "unaffected",
          "collectionURL": "https://cpan.org/modules",
          "packageName": "CallBackery",
          "modules": [
            "CallBackery"
          ],
          "programFiles": [
            "lib/CallBackery/User.pm",
            "lib/CallBackery/GuiPlugin/UserForm.pm"
          ],
          "programRoutines": [
            {
              "name": "CallBackery::User::login"
            },
            {
              "name": "CallBackery::GuiPlugin::UserForm::actionCfg"
            }
          ],
          "repo": "https://github.com/oetiker/callbackery",
          "packageURL": "pkg:cpan/CallBackery",
          "versions": [
            {
              "version": "0",
              "lessThan": "0.62.0",
              "versionType": "custom",
              "status": "affected"
            }
          ]
        }
      ]
    }
  ],
  "metrics": {},
  "weaknesses": [
    {
      "source": "9b29abf9-4ab0-4765-b253-1875cd9b441e",
      "type": "Secondary",
      "description": [
        {
          "lang": "en",
          "value": "CWE-759"
        },
        {
          "lang": "en",
          "value": "CWE-916"
        }
      ]
    }
  ],
  "references": [
    {
      "url": "https://metacpan.org/release/OETIKER/CallBackery-0.62.0/changes",
      "source": "9b29abf9-4ab0-4765-b253-1875cd9b441e"
    }
  ]
}