---
id: "CVE-2026-118992"
kind: "vulnerability"
aliases: ["CVE-2026-118992"]
title: "CallBackery for Perl: restored backup runs arbitrary OS commands"
severity: "high"
cvss: null
epss: null
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["callbackery", "package", "perl", "self-hosted"]
not_affected_if: ["auth-required", "no-backup-restore"]
published_at: "2026-10-30T13:18:31+00:00"
first_seen_at: "2026-10-30T13:30:27+00:00"
updated_at: "2026-10-30T13:32:27+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-118992", "first_seen_at": "2026-10-30T13:30:27+00:00"}]
---

# CallBackery for Perl: restored backup runs arbitrary OS commands

CallBackery versions before 0.62.0 pass the database dump in a configuration backup to the sqlite3 command-line shell during restore. A dump line starting with a dot, such as .shell or .system, runs an operating system command, and .load loads native code.

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

## How to check

- Check the installed CallBackery version; it is affected below `0.62.0`.
- Look for a restore feature that accepts backup files (restoreConfigBlob) in the deployed application.

## Fix

- CallBackery for Perl: `0.62.0`

## Timeline

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

## From the sources

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.

---

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