---
id: "CVE-2026-118986"
kind: "vulnerability"
aliases: ["CVE-2026-118986"]
title: "CallBackery for Perl: session cookie signing secret can be brute-forced"
severity: "high"
cvss: null
epss: null
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["callbackery", "package", "perl", "self-hosted"]
not_affected_if: ["custom-strong-secret", "version-0.62.0-or-later"]
published_at: "2026-10-30T14:16:41+00:00"
first_seen_at: "2026-10-30T14:30:53+00:00"
updated_at: "2026-10-30T14:33:07+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-118986", "first_seen_at": "2026-10-30T14:30:53+00:00"}]
---

# CallBackery for Perl: session cookie signing secret can be brute-forced

CallBackery versions before 0.62.0 sign session cookies with a secret built from Perl's rand(), which is seeded with only 32 bits. An attacker who holds one session cookie can test all candidate secrets offline and then forge cookies for any user, including an administrator.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Check the installed CallBackery version; anything below `0.62.0` is affected.
- Look for the Perl package in your dependency files or installed modules.

## Fix

- CallBackery for Perl: `0.62.0`

## Timeline

- 2026-10-30T14:30:53+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-118986

## From the sources

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.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
