{"id":"CVE-2026-120648","kind":"vulnerability","aliases":["CVE-2026-120648"],"related":[],"title":"Perl CGI: unescaped comment text lets attackers inject HTML","description":"CGI versions before 5.00 for Perl allow HTML injection via text containing --> in comment.\n\nArguments are placed between <!-- and --> without escaping, so text containing --> closes the comment early.\n\nAn application that passes request data to comment can be made to inject HTML into the page.","summary":"CGI.pm versions before 5.00 for Perl place arguments inside HTML comments without escaping, so text containing --> closes the comment early. An application that passes request data into the comment helper can have HTML injected into its pages.","severity":"low","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["cgi","package","perl","web-apps"],"not_affected_if":["no-request-data-in-comments","version-5.00-or-later"],"how_to_check":"- Find the Perl CGI module version with `perl -MCGI -e 'print $CGI::VERSION'`\n- Search application code for calls to the CGI comment helper that receive request data","fix":"- CGI for Perl: `5.00` or later (per the NVD description; confirm against the patch link)","status":"open","published_at":"2026-11-04T00:17:26+00:00","first_seen_at":"2026-11-04T00:46:17+00:00","triaged_at":"2026-11-04T00:48:06+00:00","updated_at":"2026-11-04T00:48:06+00:00","category":"package","confidence":0.6,"triage":{"at":"2026-11-04T00:48:06Z","model":"claude-haiku-5-5","output":{"fix":"- CGI for Perl: `5.00` or later (per the NVD description; confirm against the patch link)","reach":"internet","title":"Perl CGI: unescaped comment text lets attackers inject HTML","impact":"low","summary":"CGI.pm versions before 5.00 for Perl place arguments inside HTML comments without escaping, so text containing --> closes the comment early. An application that passes request data into the comment helper can have HTML injected into its pages.","audience":"developers","category":"package","nicknames":[],"who_cares":["perl","cgi","web-apps"],"confidence":0.6,"fix_status":"available","needs_auth":"unknown","worst_case":"HTML injected into pages served to other users","analyst_note":"","how_to_check":"- Find the Perl CGI module version with `perl -MCGI -e 'print $CGI::VERSION'`\n- Search application code for calls to the CGI comment helper that receive request data","plain_action":"","needs_analyst":false,"not_affected_if":["version-5.00-or-later","no-request-data-in-comments"],"who_is_affected":"Applications that use the Perl CGI module and pass user-supplied request data into its comment output are exposed. Sites that do not pass request data to the comment helper, or that run a newer CGI release, can skip it.","user_interaction":"unknown","needs_special_setup":"unknown","severity_if_unknown":"low"},"cost_usd":0.000653,"input_tokens":4111,"output_tokens":483,"severity_before":"unknown"},"analyst_status":null,"analyst_note":null,"search":"'-120648':12A,15A '-2026':11A,14A '5.00':25B,62C 'allow':65C 'app':21B 'applic':43B,87C 'argument':29B,73C 'attack':7A 'cgi':2A,16B,59C 'cgi.pm':22B 'close':38B,82C 'comment':4A,32B,40B,50B,72C,84C,93C 'contain':37B,70C,81C 'cve':10A,13A 'data':47B,91C 'earli':41B,85C 'escap':34B,78C 'helper':51B 'html':9A,31B,54B,66C,99C 'inject':8A,55B,67C,98C 'insid':30B 'let':6A 'made':96C 'packag':17B 'page':58B,102C 'pass':45B,89C 'perl':1A,18B,27B,64C 'place':28B,75C 'request':46B,90C 'text':5A,36B,69C,80C 'unescap':3A 'version':23B,60C 'via':68C 'web':20B 'web-app':19B 'without':33B,77C","nicknames":[],"mitigations":[],"who_affected":"Applications that use the Perl CGI module and pass user-supplied request data into its comment output are exposed. Sites that do not pass request data to the comment helper, or that run a newer CGI release, can skip it.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"developers","plain_action":null,"pkeys":[],"ptokens":[],"labels":["cgi","low","package","perl","webapps"],"campaign_type":null,"first_public_at":"2026-11-04T00:17:26+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-120648","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-120648","severity":null,"published_at":"2026-11-04T00:17:26+00:00","modified_at":"2026-11-04T00:17:26+00:00","first_seen_at":"2026-11-04T00:46:17+00:00","fetched_at":"2026-11-04T00:46:17+00:00","note":null}],"documents":[{"id":62128,"url":"https://github.com/leejo/CGI.pm/commit/6a17eb84703d84bca86b0079f5870ca9c921ffd4.patch","title":"Patch: github.com","kind":"other","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"}],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}