---
id: "CVE-2026-115866"
kind: "vulnerability"
aliases: ["CVE-2026-115866"]
title: "Starlet: chunked request parsing lets one request exhaust server CPU"
severity: "medium"
cvss: null
epss: null
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["package", "perl", "plack", "self-hosted", "starlet"]
not_affected_if: ["no-chunked-input", "version-0.33-or-later"]
published_at: "2026-10-30T13:18:31+00:00"
first_seen_at: "2026-10-30T13:30:27+00:00"
updated_at: "2026-10-30T13:32:33+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-115866", "first_seen_at": "2026-10-30T13:30:27+00:00"}]
---

# Starlet: chunked request parsing lets one request exhaust server CPU

Starlet, a Perl web server, uses a regular expression to parse chunk-size lines in chunked request bodies. A crafted request with a long run of hex digits makes the matcher backtrack heavily, so an attacker can tie up a worker for about a minute of CPU time with one 128 KiB request.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Check the installed Starlet version with `perl -MStarlet -e 'print $Starlet::VERSION'` or `cpanm --info Starlet`
- Look in cpanfile, cpanfile.snapshot or Makefile.PL for a Starlet entry
- Confirm whether the app is served by Starlet and accepts chunked request bodies from untrusted clients

## Fix

- Starlet: move to `0.33` or later (the affected range is `0.20` before `0.33`)

## Timeline

- 2026-10-30T13:30:27+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-115866

## From the sources

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.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
