{"id":"CVE-2026-126673","kind":"vulnerability","aliases":["CVE-2026-126673"],"related":[],"title":"Perl Data::Dump::Streamer: crafted regex patterns run code on restore","description":"Data::Dump::Streamer versions before 3.00 for Perl allow code injection via unescaped Regexp patterns in _dump_qr.\n\nA Regexp's pattern is written into a qr literal without escaping \"$\" or \"@\", so \"@{[ ... ]}\" and \"${\\ ... }\" in the pattern run as code when the dump is evaluated. An already escaped delimiter gets a second backslash, which leaves the delimiter bare and ends the qr literal early.\n\nAn attacker who supplies a pattern that an application compiles, dumps and later restores with eval or do can run arbitrary Perl code.","summary":"Data::Dump::Streamer before 3.00 writes Regexp patterns into a qr literal without escaping \"$\" and \"@\", so embedded expressions run as Perl code. An attacker who controls a pattern that an application dumps and later restores with eval or do can execute arbitrary Perl code.","severity":"high","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["cpan","data-dump-streamer","package","perl"],"not_affected_if":["dump-output-never-evaluated","no-untrusted-regexp-input"],"how_to_check":"- Look for `Data::Dump::Streamer` in your Perl dependencies, for example with `cpanm --info Data::Dump::Streamer` or `perl -MData::Dump::Streamer -e 'print $Data::Dump::Streamer::VERSION'`\n- Search your code for calls that dump Regexp objects and then pass the output to `eval` or `do`","fix":"- Data::Dump::Streamer: move to `3.00` or later (from the NVD description: versions before 3.00 are affected)","status":"open","published_at":"2026-11-12T01:17:11+00:00","first_seen_at":"2026-11-12T01:39:26+00:00","triaged_at":"2026-11-12T01:40:15+00:00","updated_at":"2026-11-12T01:40:15+00:00","category":"package","confidence":0.6,"triage":{"at":"2026-11-12T01:40:15Z","model":"claude-haiku-5-5","output":{"fix":"- Data::Dump::Streamer: move to `3.00` or later (from the NVD description: versions before 3.00 are affected)","reach":"unknown","title":"Perl Data::Dump::Streamer: crafted regex patterns run code on restore","impact":"high","summary":"Data::Dump::Streamer before 3.00 writes Regexp patterns into a qr literal without escaping \"$\" and \"@\", so embedded expressions run as Perl code. An attacker who controls a pattern that an application dumps and later restores with eval or do can execute arbitrary Perl code.","audience":"developers","category":"package","nicknames":[],"who_cares":["perl","cpan","data-dump-streamer"],"confidence":0.6,"fix_status":"unknown","needs_auth":"unknown","worst_case":"Attacker runs arbitrary Perl code in the application process","analyst_note":"Check the NVD and CPAN entries for Data::Dump::Streamer to confirm the fixed version and whether a specific setting or usage pattern is required.","how_to_check":"- Look for `Data::Dump::Streamer` in your Perl dependencies, for example with `cpanm --info Data::Dump::Streamer` or `perl -MData::Dump::Streamer -e 'print $Data::Dump::Streamer::VERSION'`\n- Search your code for calls that dump Regexp objects and then pass the output to `eval` or `do`","plain_action":"","product_name":"","needs_analyst":true,"not_affected_if":["no-untrusted-regexp-input","dump-output-never-evaluated"],"who_is_affected":"Only applications that use Data::Dump::Streamer to serialize Regexp objects built from untrusted input, and then restore that output with eval or do. Applications that only dump trusted patterns, or never evaluate the dump, are less exposed. The sources do not say whether a patched release beyond 3.00 is listed as the fix.","user_interaction":"no","product_ecosystem":"","needs_special_setup":"unknown","severity_if_unknown":"high"},"cost_usd":0.000811,"input_tokens":4653,"output_tokens":692,"severity_before":"unknown"},"analyst_status":null,"analyst_note":null,"search":"'-126673':14A,17A '-2026':13A,16A '3.00':29B,74C 'allow':77C 'alreadi':114C 'applic':55B,140C 'arbitrari':66B,152C 'attack':48B,133C 'backslash':120C 'bare':125C 'code':9A,46B,68B,78C,107C,154C 'compil':141C 'control':50B 'cpan':18B 'craft':5A 'cve':12A,15A 'data':2A,20B,25B,69C 'data-dump-stream':19B 'delimit':116C,124C 'dump':3A,21B,26B,56B,70C,85C,110C,142C 'earli':131C 'embed':41B 'end':127C 'escap':38B,98C,115C 'eval':61B,147C 'evalu':112C 'execut':65B 'express':42B 'get':117C 'inject':79C 'later':58B,144C 'leav':122C 'liter':36B,96C,130C 'packag':23B 'pattern':7A,32B,52B,83C,90C,104C,137C 'perl':1A,24B,45B,67B,76C,153C 'qr':35B,86C,95C,129C 'regex':6A 'regexp':31B,82C,88C 'restor':11A,59B,145C 'run':8A,43B,105C,151C 'second':119C 'streamer':4A,22B,27B,71C 'suppli':135C 'unescap':81C 'version':72C 'via':80C 'without':37B,97C 'write':30B 'written':92C","nicknames":[],"mitigations":[],"who_affected":"Only applications that use Data::Dump::Streamer to serialize Regexp objects built from untrusted input, and then restore that output with eval or do. Applications that only dump trusted patterns, or never evaluate the dump, are less exposed. The sources do not say whether a patched release beyond 3.00 is listed as the fix.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"unknown","audience":"developers","plain_action":null,"pkeys":[],"ptokens":[],"labels":["cpan","datadumpstreamer","high","package","perl"],"campaign_type":null,"search_a":"'-126673':14A,17A '-2026':13A,16A 'code':9A 'craft':5A 'cve':12A,15A 'data':2A 'dump':3A 'pattern':7A 'perl':1A 'regex':6A 'restor':11A 'run':8A 'streamer':4A","search_b":"'3.00':29B 'applic':55B 'arbitrari':66B 'attack':48B 'code':46B,68B 'control':50B 'cpan':18B 'data':20B,25B 'data-dump-stream':19B 'dump':21B,26B,56B 'embed':41B 'escap':38B 'eval':61B 'execut':65B 'express':42B 'later':58B 'liter':36B 'packag':23B 'pattern':32B,52B 'perl':24B,45B,67B 'qr':35B 'regexp':31B 'restor':59B 'run':43B 'streamer':22B,27B 'without':37B 'write':30B","search_c":"'3.00':74C 'allow':77C 'alreadi':114C 'applic':140C 'arbitrari':152C 'attack':133C 'backslash':120C 'bare':125C 'code':78C,107C,154C 'compil':141C 'data':69C 'delimit':116C,124C 'dump':70C,85C,110C,142C 'earli':131C 'end':127C 'escap':98C,115C 'eval':147C 'evalu':112C 'get':117C 'inject':79C 'later':144C 'leav':122C 'liter':96C,130C 'pattern':83C,90C,104C,137C 'perl':76C,153C 'qr':86C,95C,129C 'regexp':82C,88C 'restor':145C 'run':105C,151C 'second':119C 'streamer':71C 'suppli':135C 'unescap':81C 'version':72C 'via':80C 'without':97C 'written':92C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-11-12T01:17:11+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-126673","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-126673","severity":null,"published_at":"2026-11-12T01:17:11+00:00","modified_at":"2026-11-12T01:17:11+00:00","first_seen_at":"2026-11-12T01:39:26+00:00","fetched_at":"2026-11-12T01:39:26+00:00","note":null}],"documents":[],"disclosures":[],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}