---
id: CVE-2026-115866
title: >-
  Starlet versions from 0.20 before 0.33 for Perl allow CPU exhaustion via
  regular expression backtracking when decoding chunked request bodies
summary: >-
  Starlet versions from 0.20 before 0.33 for Perl allow CPU exhaustion via
  regular expression backtracking when decoding chunked request bodies.


  A chunk-size line is matched as a run of hex digits, then .* and a CRLF. A run
  followed by a …
severity: high
cvss: 7.5
cvssVector: 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H'
cvssSource: adp
cwe:
  - CWE-1333
product: Starlet
affected:
  - Starlet >= 0.20 < 0.33
ssvc:
  exploitation: none
  automatable: 'yes'
  technicalImpact: partial
  timestamp: '2026-11-06T16:43:18.883792Z'
published: '2026-10-30'
updated: '2026-11-06'
sourceUpdated: '2026-11-06T16:44:02.533Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-115866'
references:
  - url: >-
      https://github.com/kazuho/Starlet/commit/229ea56b3b50028e2a644156317e8d0e7cf68a1f.patch
  - url: 'https://metacpan.org/release/KAZUHO/Starlet-0.33/changes'
tags:
  - cve.org
epss: 0.00384
epssPercentile: 0.3272
ingestedAt: '2026-11-05T16:07:30.206Z'
---

## Overview

Starlet versions from 0.20 before 0.33 for Perl allow CPU exhaustion via regular expression backtracking when decoding chunked request bodies.

A chunk-size line is matched as a run of hex digits, then .* and a CRLF. A run followed by a bare LF and then a CRLF can never match, and the engine retries the match once for each digit, so the time taken grows with the square of the run length. Nothing limits the length of the run, which can span several reads.

A remote attacker can occupy a worker for about a minute of CPU time with one 128 KiB request, before the application is called.

## Affected

- `Starlet >= 0.20 < 0.33`

## Remediation

Upgrade to Starlet 0.33 or later.
