Debian Package Tracker
Register | Log in
Subscribe

starlet

simple, high-performance PSGI/Plack HTTP server

Choose email to subscribe with

general
  • source: starlet (main)
  • version: 0.33-1
  • maintainer: Debian Perl Group (archive) (DMD) (LowNMU)
  • uploaders: Dominic Hargreaves [DMD]
  • arch: all
  • std-ver: 4.7.4
  • VCS: Git (Browse, QA)
versions [more versions can be listed by madison] [old versions available from snapshot.debian.org]
[pool directory]
  • o-o-stable: 0.31-1.1
  • oldstable: 0.31-2
  • stable: 0.31-2+deb13u1
  • testing: 0.32-1
  • unstable: 0.33-1
versioned links
  • 0.31-1.1: [.dsc, use dget on this link to retrieve source package] [changelog] [copyright] [rules] [control]
  • 0.31-2: [.dsc, use dget on this link to retrieve source package] [changelog] [copyright] [rules] [control]
  • 0.31-2+deb13u1: [.dsc, use dget on this link to retrieve source package] [changelog] [copyright] [rules] [control]
  • 0.32-1: [.dsc, use dget on this link to retrieve source package] [changelog] [copyright] [rules] [control]
  • 0.33-1: [.dsc, use dget on this link to retrieve source package] [changelog] [copyright] [rules] [control]
binaries
  • starlet
action needed
4 security issues in trixie high

There are 4 open security issues in trixie.

4 important issues:
  • CVE-2026-115865: Starlet versions before 0.33 for Perl allow a request declaring a large Content-Length to kill a worker by exhausting memory. The request body is read in a loop that asks sysread for all of the remaining declared length at once. Perl grows the read buffer to that size before any data arrives, so a length larger than available memory makes the worker exit with an uncatchable out of memory error before the application is called. A remote attacker can force a worker restart with each request of a few bytes.
  • CVE-2026-115866: 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.
  • CVE-2026-116127: Starlet versions before 0.33 for Perl send a body in responses to HEAD requests, corrupting the next response on a persistent or pipelined connection. The request method is not passed to the response writer, so whatever body the application returns for a HEAD request is sent. With Plack::Middleware::Head the body is empty, but an HTTP/1.1 response without a Content-Length header still gets the chunked encoding terminator. Responses with status 204 or 304 are also sent with their body. Pipelined GET and HEAD requests keep the connection open even when keep-alive is disabled, which is the default. A client or proxy reading the connection takes the extra bytes as the start of the next response, which may desynchronize a proxy that shares the connection across clients.
  • CVE-2026-116128: Starlet versions from 0.20 before 0.33 for Perl allow memory exhaustion via unbounded buffering when decoding chunked request bodies. The decoder adds each read to one buffer of unconsumed input. Nothing limits the length of a chunk-size line, so a line without a CRLF grows the buffer for as long as the client keeps sending, and the read timeout restarts after every read. The data of a large chunk is also held in the buffer until the whole chunk has arrived. A remote attacker can exhaust a worker's memory with a single request.
Created: 2026-10-31 Last update: 2026-10-31 08:02
4 security issues in forky high

There are 4 open security issues in forky.

4 important issues:
  • CVE-2026-115865: Starlet versions before 0.33 for Perl allow a request declaring a large Content-Length to kill a worker by exhausting memory. The request body is read in a loop that asks sysread for all of the remaining declared length at once. Perl grows the read buffer to that size before any data arrives, so a length larger than available memory makes the worker exit with an uncatchable out of memory error before the application is called. A remote attacker can force a worker restart with each request of a few bytes.
  • CVE-2026-115866: 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.
  • CVE-2026-116127: Starlet versions before 0.33 for Perl send a body in responses to HEAD requests, corrupting the next response on a persistent or pipelined connection. The request method is not passed to the response writer, so whatever body the application returns for a HEAD request is sent. With Plack::Middleware::Head the body is empty, but an HTTP/1.1 response without a Content-Length header still gets the chunked encoding terminator. Responses with status 204 or 304 are also sent with their body. Pipelined GET and HEAD requests keep the connection open even when keep-alive is disabled, which is the default. A client or proxy reading the connection takes the extra bytes as the start of the next response, which may desynchronize a proxy that shares the connection across clients.
  • CVE-2026-116128: Starlet versions from 0.20 before 0.33 for Perl allow memory exhaustion via unbounded buffering when decoding chunked request bodies. The decoder adds each read to one buffer of unconsumed input. Nothing limits the length of a chunk-size line, so a line without a CRLF grows the buffer for as long as the client keeps sending, and the read timeout restarts after every read. The data of a large chunk is also held in the buffer until the whole chunk has arrived. A remote attacker can exhaust a worker's memory with a single request.
Created: 2026-10-31 Last update: 2026-10-31 08:02
5 security issues in bookworm high

There are 5 open security issues in bookworm.

4 important issues:
  • CVE-2026-115865: Starlet versions before 0.33 for Perl allow a request declaring a large Content-Length to kill a worker by exhausting memory. The request body is read in a loop that asks sysread for all of the remaining declared length at once. Perl grows the read buffer to that size before any data arrives, so a length larger than available memory makes the worker exit with an uncatchable out of memory error before the application is called. A remote attacker can force a worker restart with each request of a few bytes.
  • CVE-2026-115866: 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.
  • CVE-2026-116127: Starlet versions before 0.33 for Perl send a body in responses to HEAD requests, corrupting the next response on a persistent or pipelined connection. The request method is not passed to the response writer, so whatever body the application returns for a HEAD request is sent. With Plack::Middleware::Head the body is empty, but an HTTP/1.1 response without a Content-Length header still gets the chunked encoding terminator. Responses with status 204 or 304 are also sent with their body. Pipelined GET and HEAD requests keep the connection open even when keep-alive is disabled, which is the default. A client or proxy reading the connection takes the extra bytes as the start of the next response, which may desynchronize a proxy that shares the connection across clients.
  • CVE-2026-116128: Starlet versions from 0.20 before 0.33 for Perl allow memory exhaustion via unbounded buffering when decoding chunked request bodies. The decoder adds each read to one buffer of unconsumed input. Nothing limits the length of a chunk-size line, so a line without a CRLF grows the buffer for as long as the client keeps sending, and the read timeout restarts after every read. The data of a large chunk is also held in the buffer until the whole chunk has arrived. A remote attacker can exhaust a worker's memory with a single request.
1 issue postponed or untriaged:
  • CVE-2026-40561: (needs triaging) Starlet versions through 0.31 for Perl allows HTTP Request Smuggling via Improper Header Precedence. Starlet incorrectly prioritizes "Content-Length" over "Transfer-Encoding: chunked" when both headers are present in an HTTP request. Per RFC 7230 3.3.3, Transfer-Encoding must take precedence. An attacker could exploit this to smuggle malicious HTTP requests via a front-end reverse proxy.
Created: 2026-10-31 Last update: 2026-10-31 08:02
testing migrations
  • excuses:
    • Migration status for starlet (0.32-1 to 0.33-1): Waiting for test results or another package, or too young (no action required now - check later)
    • Issues preventing migration:
    • ∙ ∙ Autopkgtest for libfurl-perl/3.15-1: amd64: Pass, arm64: Pass, armhf: Pass, i386: Pass, loong64: Test triggered, ppc64el: Pass, riscv64: Pass, s390x: Pass
    • ∙ ∙ Autopkgtest for request-tracker5/5.0.10+dfsg-3: amd64: No tests, superficial or marked flaky ♻, arm64: No tests, superficial or marked flaky ♻, armhf: No tests, superficial or marked flaky ♻ (reference ♻), i386: No tests, superficial or marked flaky ♻, loong64: Test triggered, ppc64el: No tests, superficial or marked flaky ♻, riscv64: No tests, superficial or marked flaky ♻, s390x: No tests, superficial or marked flaky ♻ (reference ♻)
    • ∙ ∙ Autopkgtest for starlet/0.33-1: amd64: Pass, arm64: Pass, armhf: Pass, i386: Pass, loong64: Test triggered, ppc64el: Pass, riscv64: Pass, s390x: Pass
    • ∙ ∙ Too young, only 2 of 5 days old
    • Additional info (not blocking):
    • ∙ ∙ Piuparts tested OK - https://piuparts.debian.org/sid/source/s/starlet.html
    • ∙ ∙ Reproduced on amd64 - info
    • ∙ ∙ Reproduced on arm64 - info
    • ∙ ∙ Reproduced on armhf - info
    • ∙ ∙ Reproduced on i386 - info
    • Not considered
news
[rss feed]
  • [2026-10-30] Accepted starlet 0.33-1 (source) into unstable (gregor herrmann)
  • [2026-06-16] starlet 0.32-1 MIGRATED to testing (Debian testing watch)
  • [2026-06-13] Accepted starlet 0.32-1 (source) into unstable (gregor herrmann)
  • [2026-05-15] starlet 0.31-3 MIGRATED to testing (Debian testing watch)
  • [2026-05-07] Accepted starlet 0.31-2+deb13u1 (source) into proposed-updates (Debian FTP Masters) (signed by: gregor herrmann)
  • [2026-05-05] Accepted starlet 0.31-3 (source) into unstable (gregor herrmann)
  • [2022-07-01] starlet 0.31-2 MIGRATED to testing (Debian testing watch)
  • [2022-06-28] Accepted starlet 0.31-2 (source) into unstable (Jelmer Vernooij) (signed by: Jelmer Vernooij)
  • [2021-01-07] starlet 0.31-1.1 MIGRATED to testing (Debian testing watch)
  • [2021-01-04] Accepted starlet 0.31-1.1 (source) into unstable (Holger Levsen)
  • [2017-01-02] starlet 0.31-1 MIGRATED to testing (Debian testing watch)
  • [2016-12-22] Accepted starlet 0.31-1 (source all) into unstable (Lucas Kanashiro)
  • [2016-07-03] starlet 0.30-1 MIGRATED to testing (Debian testing watch)
  • [2016-06-27] Accepted starlet 0.30-1 (source all) into unstable (Lucas Kanashiro)
  • [2016-03-05] starlet 0.29-1 MIGRATED to testing (Debian testing watch)
  • [2016-02-28] Accepted starlet 0.29-1 (source) into unstable (Lucas Kanashiro) (signed by: gregor herrmann)
  • [2015-11-15] starlet 0.28-1 MIGRATED to testing (Britney)
  • [2015-11-09] Accepted starlet 0.28-1 (source) into unstable (Lucas Kanashiro) (signed by: gregor herrmann)
  • [2015-10-29] starlet 0.26-1 MIGRATED to testing (Britney)
  • [2015-10-23] Accepted starlet 0.26-1 (source) into unstable (Lucas Kanashiro) (signed by: gregor herrmann)
  • [2015-08-21] starlet 0.25-1 MIGRATED to testing (Britney)
  • [2015-08-15] Accepted starlet 0.25-1 (source) into unstable (Lucas Kanashiro) (signed by: gregor herrmann)
  • [2015-07-01] starlet 0.24-3 MIGRATED to testing (Britney)
  • [2015-06-25] Accepted starlet 0.24-3 (source all) into unstable (gregor herrmann)
  • [2015-06-23] Accepted starlet 0.24-2 (source all) into unstable (gregor herrmann)
  • [2014-06-01] starlet 0.24-1 MIGRATED to testing (Debian testing watch)
  • [2014-05-26] Accepted starlet 0.24-1 (source all) (gregor herrmann)
  • [2014-05-16] starlet 0.23-1 MIGRATED to testing (Debian testing watch)
  • [2014-05-10] Accepted starlet 0.23-1 (source all) (gregor herrmann)
  • [2014-01-05] starlet 0.21-1 MIGRATED to testing (Debian testing watch)
  • 1
  • 2
bugs [bug history graph]
  • all: 1
  • RC: 0
  • I&N: 1
  • M&W: 0
  • F&P: 0
  • patch: 0
links
  • homepage
  • lintian
  • buildd: logs, reproducibility
  • popcon
  • browse source code
  • other distros
  • security tracker
  • screenshots
  • debian patches
  • debci
ubuntu Ubuntu logo [Information about Ubuntu for Debian Developers]
  • version: 0.32-1

Debian Package Tracker — Copyright 2013-2025 The Distro Tracker Developers
Report problems to the tracker.debian.org pseudo-package in the Debian BTS.
Documentation — Bugs — Git Repository — Contributing