---
id: "CVE-2026-118995"
kind: "vulnerability"
aliases: ["CVE-2026-118995"]
title: "CallBackery for Perl: form validation accepts values it should reject"
severity: "low"
cvss: null
epss: null
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["callbackery", "package", "perl"]
not_affected_if: ["no-authenticated-users", "no-createrxvalidator-usage", "version-0.62.0-or-later"]
published_at: "2026-10-30T13:18:32+00:00"
first_seen_at: "2026-10-30T13:30:27+00:00"
updated_at: "2026-10-30T13:32:23+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-118995", "first_seen_at": "2026-10-30T13:30:27+00:00"}]
---

# CallBackery for Perl: form validation accepts values it should reject

CallBackery's createRxValidator builds an unanchored-group regex, so alternation patterns like yes|no match values that merely start or end with those words, and a trailing newline is accepted. An authenticated user can submit values the form was meant to reject, which the application may write into generated configuration files.

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

## How to check

- Check the installed CallBackery version for Perl; the sources say versions before `0.62.0` are affected.
- Look for forms that use createRxValidator with alternation patterns (for example `yes|no`) whose values feed generated config files.

## Fix

- CallBackery for Perl: move to `0.62.0` or later.

## Timeline

- 2026-10-30T13:30:27+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-118995

## From the sources

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.

---

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