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.
{
"cna_assigner": "CPANSec",
"cwe_ids": [
"CWE-95"
],
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/78xxx/CVE-2026-78497.json"
}{
"extracted_events": [
{
"range": [
{
"introduced": "0"
},
{
"fixed": "2.51"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StandardRange"
},
{
"range": [
{
"fixed": "c461721ae3d5a90d6d94dbb234c1b8dfee5c1769"
}
],
"source": "REFERENCES_COMMIT"
}
]
}