---
id: CVE-2026-78497
title: >-
  JQ::Lite versions before 2.51 for Perl execute Perl code embedded in a query's
  regular expression by compiling it with string eval
summary: >-
  JQ::Lite versions before 2.51 for Perl execute Perl code embedded in a query's
  regular expression by compiling it with string eval.


  The pattern given to test(), match(), or the match and =~ conditions of
  select() is placed in a `qr'...'…
severity: high
cvss: 8.4
cvssVector: 'CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H'
cvssSource: adp
cwe:
  - CWE-95
product: JQ-Lite
affected:
  - JQ-Lite < 2.51
ssvc:
  exploitation: none
  automatable: 'no'
  technicalImpact: total
  timestamp: '2026-10-20T18:22:07.986736Z'
published: '2026-10-18'
updated: '2026-10-20'
sourceUpdated: '2026-10-20T18:22:12.298Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-78497'
references:
  - url: >-
      https://github.com/kawamurashingo/JQ-Lite/commit/c461721ae3d5a90d6d94dbb234c1b8dfee5c1769.patch
  - url: 'https://metacpan.org/release/SHINGO/JQ-Lite-2.51/changes'
tags:
  - cve.org
epss: 0.00196
epssPercentile: 0.0925
ingestedAt: '2026-10-18T11:40:26.627Z'
---

## Overview

JQ::Lite versions before 2.51 for Perl execute Perl code embedded in a query's regular expression by compiling it with string eval.

The pattern given to test(), match(), or the match and =~ conditions of select() is placed in a `qr'...'` literal and compiled as source text, so a `(?{ ... })` code block in it runs without `use re 'eval'`. Single quotes in the pattern are escaped, but a code block runs in place and needs none.

An attacker who supplies a query, or text that an application inserts into the pattern of one, can execute arbitrary Perl code in the calling process.

## Affected

- `JQ-Lite < 2.51`

## Remediation

Upgrade to JQ-Lite 2.51 or later.
