---
id: CVE-2026-120639
title: >-
  CGI versions before 5.00 for Perl allow HTTP header injection via entity
  decoding after the newline check in header and unchecked values in
  multipart_start and do_push
summary: >-
  CGI versions before 5.00 for Perl allow HTTP header injection via entity
  decoding after the newline check in header and unchecked values in
  multipart_start and do_push.


  With autoEscape off, header decodes HTML entities in extra header v…
severity: none
cwe:
  - CWE-113
product: CGI
affected:
  - CGI < 5.00
published: '2026-11-03'
updated: '2026-11-03'
sourceUpdated: '2026-11-03T23:40:30.552Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-120639'
references:
  - url: 'https://metacpan.org/release/LEEJO/CGI-4.72/source/lib/CGI.pm'
  - url: 'https://metacpan.org/release/LEEJO/CGI-5.00/changes'
  - url: >-
      https://github.com/leejo/CGI.pm/commit/69955309d371c8093d11cf12e3ddef491537ffad.patch
  - url: >-
      https://github.com/leejo/CGI.pm/commit/7733c2753f4f240012097507cda2b6e87ae46db4.patch
tags:
  - cve.org
epss: 0.00227
epssPercentile: 0.13505
ingestedAt: '2026-11-05T20:33:06.620Z'
---

## Overview

CGI versions before 5.00 for Perl allow HTTP header injection via entity decoding after the newline check in header and unchecked values in multipart_start and do_push.

With autoEscape off, header decodes HTML entities in extra header values after its newline check, so an encoded CR or LF reaches the response. multipart_start does not check header values for newlines, and do_push does not check the type it prints in each part.

An application that passes request data into these header values can be made to add headers or split the response.

## Affected

- `CGI < 5.00`

## Remediation

Upgrade to CGI 5.00 or later.
