CVE-2026-13576 CallBackery versions before 0.62.0 for Perl store user passwords as unsalted HMAC-SHA1 hashes
CVE-2026-118986 CallBackery versions before 0.62.0 for Perl allow session cookie forgery via a signing secret generated with rand() CVE-2026-118987 CallBackery versions before 0.62.0 for Perl accept session cookies of any age sent in the X-Session-Cookie header CVE-2026-118990 CallBackery versions before 0.62.0 for Perl leave a world-readable dump of the configuration database in /tmp when taking a configuration backup CVE-2026-118991 CallBackery versions before 0.62.0 for Perl encrypt configuration backups with the padded password as the AES key CVE-2026-118992 CallBackery versions before 0.62.0 for Perl allow OS command execution via sqlite3 shell commands in a restored configuration backup CVE-2026-118993 CallBackery versions before 0.62.0 for Perl allow denial of service via the request path interpolated as a regular expression under CGI, FastCGI and PSGI CVE-2026-118994 CallBackery versions before 0.62.0 for Perl allow log injection via newlines in the login name CVE-2026-118995 CallBackery versions before 0.62.0 for Perl accept unintended values in form fields checked by createRxValidator CVE-2026-118996 CallBackery versions before 0.62.0 for Perl send users their own password hash and the admin-only user note via getUserConfig ======================================================================== CVE-2026-13576 CPAN Security Group ======================================================================== CVE ID: CVE-2026-13576 Distribution: CallBackery Versions: before 0.62.0 MetaCPAN: https://metacpan.org/dist/CallBackery VCS Repo: https://github.com/oetiker/callbackery CallBackery versions before 0.62.0 for Perl store user passwords as unsalted HMAC-SHA1 hashes 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. Problem types ------------- - CWE-916 Use of Password Hash With Insufficient Computational Effort - CWE-759 Use of a One-Way Hash without a Salt Solutions --------- Upgrade to CallBackery 0.62.0 or later. References ---------- https://metacpan.org/release/OETIKER/CallBackery-0.62.0/changes ======================================================================== CVE-2026-118986 CPAN Security Group ======================================================================== CVE ID: CVE-2026-118986 Distribution: CallBackery Versions: before 0.62.0 MetaCPAN: https://metacpan.org/dist/CallBackery VCS Repo: https://github.com/oetiker/callbackery CallBackery versions before 0.62.0 for Perl allow session cookie forgery via a signing secret generated with rand() Description ----------- CallBackery versions before 0.62.0 for Perl allow session cookie forgery via a signing secret generated with rand(). The secret that signs session cookies is built from two calls to the built-in rand(), which is seeded with 32 bits. The secret therefore has at most 2**32 possible values, and one signed cookie is enough to test each candidate offline. An attacker who obtains a single session cookie can recover the secret and sign cookies for any user, including an administrator. Problem types ------------- - CWE-338 Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG) Solutions --------- Upgrade to CallBackery 0.62.0 or later. References ---------- https://metacpan.org/release/OETIKER/CallBackery-0.62.0/changes ======================================================================== CVE-2026-118987 CPAN Security Group ======================================================================== CVE ID: CVE-2026-118987 Distribution: CallBackery Versions: before 0.62.0 MetaCPAN: https://metacpan.org/dist/CallBackery VCS Repo: https://github.com/oetiker/callbackery CallBackery versions before 0.62.0 for Perl accept session cookies of any age sent in the X-Session-Cookie header Description ----------- CallBackery versions before 0.62.0 for Perl accept session cookies of any age sent in the X-Session-Cookie header. cookieConf() rejects a cookie older than 300 seconds only when it arrives in the xsc query parameter. The same cookie sent in the X-Session-Cookie header is accepted however old it is. A session cookie that leaks through a log, a Referer header or browser history authenticates as its user indefinitely. Problem types ------------- - CWE-1463 Insufficient Session Timeout Value Solutions --------- Upgrade to CallBackery 0.62.0 or later and set max_session_age in the BACKEND section. References ---------- https://metacpan.org/release/OETIKER/CallBackery-0.62.0/changes ======================================================================== CVE-2026-118990 CPAN Security Group ======================================================================== CVE ID: CVE-2026-118990 Distribution: CallBackery Versions: before 0.62.0 MetaCPAN: https://metacpan.org/dist/CallBackery VCS Repo: https://github.com/oetiker/callbackery CallBackery versions before 0.62.0 for Perl leave a world-readable dump of the configuration database in /tmp when taking a configuration backup Description ----------- CallBackery versions before 0.62.0 for Perl leave a world-readable dump of the configuration database in /tmp when taking a configuration backup. getConfigBlob() has the sqlite3 shell write the dump to /tmp/cbdump<pid> and never removes it. The file takes the process umask, and a symlink planted at that predictable name is followed. The dump holds every user's password hash and every value saved by the application's forms. A local user can read these after any backup, and may redirect the dump to a file of their choosing. Problem types ------------- - CWE-379 Creation of Temporary File in Directory with Insecure Permissions - CWE-59 Improper Link Resolution Before File Access Solutions --------- Upgrade to CallBackery 0.62.0 or later, and delete any leftover /tmp/cbdump* files. References ---------- https://metacpan.org/release/OETIKER/CallBackery-0.62.0/changes ======================================================================== CVE-2026-118991 CPAN Security Group ======================================================================== CVE ID: CVE-2026-118991 Distribution: CallBackery Versions: before 0.62.0 MetaCPAN: https://metacpan.org/dist/CallBackery VCS Repo: https://github.com/oetiker/callbackery 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. getCrypt() 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. An attacker who obtains a backup can recover its password by fast offline guessing, and with it every credential the backup holds. Problem types ------------- - CWE-916 Use of Password Hash With Insufficient Computational Effort Solutions --------- Upgrade to CallBackery 0.62.0 or later. References ---------- https://metacpan.org/release/OETIKER/CallBackery-0.62.0/changes ======================================================================== CVE-2026-118992 CPAN Security Group ======================================================================== CVE ID: CVE-2026-118992 Distribution: CallBackery Versions: before 0.62.0 MetaCPAN: https://metacpan.org/dist/CallBackery VCS Repo: https://github.com/oetiker/callbackery CallBackery versions before 0.62.0 for Perl allow OS command execution via sqlite3 shell commands in a restored configuration backup Description ----------- CallBackery versions before 0.62.0 for Perl allow OS command execution via sqlite3 shell commands in a restored configuration backup. restoreConfigBlob() feeds the database dump in a backup to the sqlite3 command-line shell. The shell runs lines starting with a dot as its own commands, so .shell or .system in the dump runs an OS command and .load loads native code. Anyone who can supply a backup to be restored can run arbitrary commands as the application user. Problem types ------------- - CWE-78 Improper Neutralization of Special Elements used in an OS Command Solutions --------- Upgrade to CallBackery 0.62.0 or later. References ---------- https://metacpan.org/release/OETIKER/CallBackery-0.62.0/changes ======================================================================== CVE-2026-118993 CPAN Security Group ======================================================================== CVE ID: CVE-2026-118993 Distribution: CallBackery Versions: before 0.62.0 MetaCPAN: https://metacpan.org/dist/CallBackery VCS Repo: https://github.com/oetiker/callbackery CallBackery versions before 0.62.0 for Perl allow denial of service via the request path interpolated as a regular expression under CGI, FastCGI and PSGI Description ----------- CallBackery versions before 0.62.0 for Perl allow denial of service via the request path interpolated as a regular expression under CGI, FastCGI and PSGI. The before_dispatch hook installed by startup() removes PATH_INFO from the end of the request URI with a substitution that interpolates PATH_INFO unquoted. Under CGI, FastCGI and PSGI both values come from the request, so the client chooses both the pattern and the string it is matched against. A short unauthenticated request with a backreference in the path backtracks exponentially and can keep a worker process busy for minutes. Problem types ------------- - CWE-1333 Inefficient Regular Expression Complexity Solutions --------- Upgrade to CallBackery 0.62.0 or later. References ---------- https://metacpan.org/release/OETIKER/CallBackery-0.62.0/changes ======================================================================== CVE-2026-118994 CPAN Security Group ======================================================================== CVE ID: CVE-2026-118994 Distribution: CallBackery Versions: before 0.62.0 MetaCPAN: https://metacpan.org/dist/CallBackery VCS Repo: https://github.com/oetiker/callbackery CallBackery versions before 0.62.0 for Perl allow log injection via newlines in the login name Description ----------- CallBackery versions before 0.62.0 for Perl allow log injection via newlines in the login name. login() writes the login name to the application log without escaping control characters. The login RPC method needs no authentication, so a name containing a newline followed by text in the log record format adds a forged record. An unauthenticated attacker can forge log records, such as a successful administrator login from an address of their choosing. Problem types ------------- - CWE-117 Improper Output Neutralization for Logs Solutions --------- Upgrade to CallBackery 0.62.0 or later. References ---------- https://metacpan.org/release/OETIKER/CallBackery-0.62.0/changes ======================================================================== CVE-2026-118995 CPAN Security Group ======================================================================== CVE ID: CVE-2026-118995 Distribution: CallBackery Versions: before 0.62.0 MetaCPAN: https://metacpan.org/dist/CallBackery VCS Repo: https://github.com/oetiker/callbackery CallBackery versions before 0.62.0 for Perl accept unintended values in form fields checked by createRxValidator Description ----------- CallBackery versions before 0.62.0 for Perl accept unintended values in form fields checked by createRxValidator. createRxValidator() is documented to anchor the supplied pattern at both ends, but builds /^${rx}$/ without grouping the pattern. An alternation such as yes|no then accepts any value starting with yes or ending with no, and $ also accepts a value with one trailing newline. An authenticated user can submit values the pattern was meant to reject, which an application may then write into generated configuration files. Problem types ------------- - CWE-625 Permissive Regular Expression Solutions --------- Upgrade to CallBackery 0.62.0 or later. References ---------- https://metacpan.org/release/OETIKER/CallBackery-0.62.0/changes ======================================================================== CVE-2026-118996 CPAN Security Group ======================================================================== CVE ID: CVE-2026-118996 Distribution: CallBackery Versions: before 0.62.0 MetaCPAN: https://metacpan.org/dist/CallBackery VCS Repo: https://github.com/oetiker/callbackery CallBackery versions before 0.62.0 for Perl send users their own password hash and the admin-only user note via getUserConfig Description ----------- CallBackery versions before 0.62.0 for Perl send users their own password hash and the admin-only user note via getUserConfig. getUserConfig() returns the caller's whole cbuser row, including the stored password hash and the note field that the user interface shows only to administrators. getTableData() and getAllFieldValues() in the user management plugins also return the note to users without the admin right. A non-administrator can read the notes administrators keep about them, and an attacker who obtains a session token can get that user's password hash and crack it offline. Problem types ------------- - CWE-212 Improper Removal of Sensitive Information Before Storage or Transfer Solutions --------- Upgrade to CallBackery 0.62.0 or later. References ---------- https://metacpan.org/release/OETIKER/CallBackery-0.62.0/changes
