{"api_version":"1","generated_at":"2026-10-31T07:24:13+00:00","cve":"CVE-2026-118991","urls":{"html":"https://cve.report/CVE-2026-118991","api":"https://cve.report/api/cve/CVE-2026-118991.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-118991","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-118991"},"summary":{"title":"CallBackery versions before 0.62.0 for Perl encrypt configuration backups with the padded password as the AES key","description":"CallBackery versions before 0.62.0 for Perl encrypt configuration backups with the padded password as the AES key.\n\ngetCrypt() pads the backup password with \"x\" characters and cuts it to 32 bytes to form the AES key, with no salt and no key derivation. The first block of a backup holds a 16 hex digit length field, so decrypting one block confirms a password guess at raw AES speed.\n\nAn attacker who obtains a backup can recover its password by fast offline guessing, and with it every credential the backup holds.","state":"PUBLISHED","assigner":"CPANSec","published_at":"2026-10-30 13:18:31","updated_at":"2026-10-30 17:08:54"},"problem_types":["CWE-916","CWE-916 CWE-916 Use of Password Hash With Insufficient Computational Effort"],"metrics":[],"references":[{"url":"https://metacpan.org/release/OETIKER/CallBackery-0.62.0/changes","name":"https://metacpan.org/release/OETIKER/CallBackery-0.62.0/changes","refsource":"9b29abf9-4ab0-4765-b253-1875cd9b441e","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-118991","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-118991","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[],"timeline":[],"solutions":[{"source":"CNA","title":"","value":"Upgrade to CallBackery 0.62.0 or later.","time":"","lang":"en"}],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":null,"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"cna":{"affected":[{"collectionURL":"https://cpan.org/modules","defaultStatus":"unaffected","modules":["CallBackery"],"packageName":"CallBackery","packageURL":"pkg:cpan/CallBackery","programFiles":["lib/CallBackery/Config.pm"],"programRoutines":[{"name":"CallBackery::Config::getCrypt"},{"name":"CallBackery::Config::getConfigBlob"},{"name":"CallBackery::Config::restoreConfigBlob"}],"repo":"https://github.com/oetiker/callbackery","versions":[{"lessThan":"0.62.0","status":"affected","version":"0","versionType":"custom"}]}],"descriptions":[{"lang":"en","value":"CallBackery versions before 0.62.0 for Perl encrypt configuration backups with the padded password as the AES key.\n\ngetCrypt() pads the backup password with \"x\" characters and cuts it to 32 bytes to form the AES key, with no salt and no key derivation. The first block of a backup holds a 16 hex digit length field, so decrypting one block confirms a password guess at raw AES speed.\n\nAn attacker who obtains a backup can recover its password by fast offline guessing, and with it every credential the backup holds."}],"problemTypes":[{"descriptions":[{"cweId":"CWE-916","description":"CWE-916 Use of Password Hash With Insufficient Computational Effort","lang":"en","type":"CWE"}]}],"providerMetadata":{"dateUpdated":"2026-10-30T13:12:13.128Z","orgId":"9b29abf9-4ab0-4765-b253-1875cd9b441e","shortName":"CPANSec"},"references":[{"tags":["release-notes"],"url":"https://metacpan.org/release/OETIKER/CallBackery-0.62.0/changes"}],"solutions":[{"lang":"en","value":"Upgrade to CallBackery 0.62.0 or later."}],"source":{"discovery":"UNKNOWN"},"title":"CallBackery versions before 0.62.0 for Perl encrypt configuration backups with the padded password as the AES key","x_generator":{"engine":"cpansec-cna-tool 0.1"}}},"cveMetadata":{"assignerOrgId":"9b29abf9-4ab0-4765-b253-1875cd9b441e","assignerShortName":"CPANSec","cveId":"CVE-2026-118991","datePublished":"2026-10-30T13:12:13.128Z","dateReserved":"2026-10-29T10:58:47.285Z","dateUpdated":"2026-10-30T13:12:13.128Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-10-30 13:18:31","lastModifiedDate":"2026-10-30 17:08:54","problem_types":["CWE-916","CWE-916 CWE-916 Use of Password Hash With Insufficient Computational Effort"],"metrics":[],"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"118991","Ordinal":"1","Title":"CallBackery versions before 0.62.0 for Perl encrypt configuratio","CVE":"CVE-2026-118991","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"118991","Ordinal":"1","NoteData":"CallBackery versions before 0.62.0 for Perl encrypt configuration backups with the padded password as the AES key.\n\ngetCrypt() pads the backup password with \"x\" characters and cuts it to 32 bytes to form the AES key, with no salt and no key derivation. The first block of a backup holds a 16 hex digit length field, so decrypting one block confirms a password guess at raw AES speed.\n\nAn attacker who obtains a backup can recover its password by fast offline guessing, and with it every credential the backup holds.","Type":"Description","Title":"CallBackery versions before 0.62.0 for Perl encrypt configuratio"}]}}}