Description
Pistache is a high-performance REST toolkit written in C++. From 0.0.5 through 0.4.26, `SegmentTreeNode::sanitizeResource()` in `src/server/router.cc` uses `std::regex_replace()` with the `//+` expression to collapse consecutive slashes. With libstdc++, a path containing tens of thousands of consecutive slash characters can recurse deeply enough to exhaust the stack and crash the process. `Router::route()`, `Router::addRoute()` and `Router::removeRoute()` reach this normalization. Unauthenticated remote exploitation is conditional on a deployment allowing sufficiently long request paths, such as by increasing `Endpoint::Options::maxRequestSize()` above the default 4096-byte limit or forwarding long paths through a front end. Direct router API use is also affected when attacker-controlled route or resource strings reach the normalizer. Native builds reproduced a crash around 24,000 consecutive slashes, although the exact threshold depends on the stack and standard library; the demonstrated failure is stack exhaustion rather than uninitialized-memory use. A source fix replaces recursive regular-expression normalization with an iterative pass, but no containing repository release was verified as of time of publication.
Published: 2026-10-30
Score: 5.9 Medium
EPSS: n/a
KEV: No
Impact: Denial of Service through stack exhaustion
Action: Patch
AI Analysis

Impact

Pistache uses a standard regular‑expression replace to collapse consecutive slashes during path normalization. In libstdc++, the regular‑expression engine recurses deeply when confronted with a path containing thousands of consecutive slash characters, eventually exhausting the thread stack and crashing the process. This flaw is a form of uncontrolled resource consumption (CWE‑400) compounded by a recursion that can lead to infinite stack growth (CWE‑674). The result is an unauthenticated denial‑of‑service, as the server or any component that processes the path will terminate when the stack limit is reached.

Affected Systems

The issue affects Pistache IO’s REST toolkit in versions 0.0.5 through 0.4.26. Any deployment that uses SegmentTreeNode::sanitizeResource() in the router, either through HTTP request handling or direct router API use, is vulnerable. The vulnerability is driven by the depth of the stack used by the standard library’s regex engine and is only triggered by sufficiently long request paths, which can be controlled by the client if the server allows a max request size larger than 4096 bytes or if a front‑end forwards long paths.

Risk and Exploitability

The CVSS score of 5.9 indicates a moderate severity. The EPSS score is currently unavailable, and the flaw is not listed in CISA’s KEV catalog, but the exploitability remains realistic on systems that allow long paths. An attacker can trigger the crash by sending a hostile HTTP request with an excessively long sequence of slashes, potentially via a public endpoint or through a reverse proxy that strips or forwards long paths. The crash comes from stack exhaustion rather than memory corruption, so the risk is confined to service availability and does not directly lead to code execution or data disclosure.

Generated by OpenCVE AI on October 30, 2026 at 20:38 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Apply the source patch that replaces the recursive regular‑expression normalization with an iterative implementation (available in commit 935461352403696f3ca0dbb9a7de7d2609e7ce91).
  • Update to the latest Pistache release once the fix is incorporated and verified.
  • Configure `Endpoint::Options::maxRequestSize()` or a reverse proxy to limit request path lengths to well below the stack exhaustion threshold, preferably using the default 4096‑byte limit.

Generated by OpenCVE AI on October 30, 2026 at 20:38 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 30 Oct 2026 19:15:00 +0000

Type Values Removed Values Added
Description Pistache is a high-performance REST toolkit written in C++. From 0.0.5 through 0.4.26, `SegmentTreeNode::sanitizeResource()` in `src/server/router.cc` uses `std::regex_replace()` with the `//+` expression to collapse consecutive slashes. With libstdc++, a path containing tens of thousands of consecutive slash characters can recurse deeply enough to exhaust the stack and crash the process. `Router::route()`, `Router::addRoute()` and `Router::removeRoute()` reach this normalization. Unauthenticated remote exploitation is conditional on a deployment allowing sufficiently long request paths, such as by increasing `Endpoint::Options::maxRequestSize()` above the default 4096-byte limit or forwarding long paths through a front end. Direct router API use is also affected when attacker-controlled route or resource strings reach the normalizer. Native builds reproduced a crash around 24,000 consecutive slashes, although the exact threshold depends on the stack and standard library; the demonstrated failure is stack exhaustion rather than uninitialized-memory use. A source fix replaces recursive regular-expression normalization with an iterative pass, but no containing repository release was verified as of time of publication.
Title Pistache: DoS via stack exhaustion in REST router path normalization (regex_replace on long slash runs)
Weaknesses CWE-400
CWE-674
References
Metrics cvssV3_1

{'score': 5.9, 'vector': 'CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H'}


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-10-30T18:58:10.308Z

Reserved: 2026-07-13T19:27:58.313Z

Link: CVE-2026-62303

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Deferred

Published: 2026-10-30T19:18:33.217

Modified: 2026-10-30T19:39:14.897

Link: CVE-2026-62303

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-30T20:45:15Z

Weaknesses
  • CWE-400

    Uncontrolled Resource Consumption

  • CWE-674

    Uncontrolled Recursion