Summary
CVE-2026-57577 is a Regular Expression Denial of Service (ReDoS) vulnerability in DotVVM, an open-source MVVM framework for building web applications on .NET. Applications that define routes with multiple unconstrained parameters in a single path segment are vulnerable to catastrophic regex backtracking in the route-matching engine, allowing a remote, unauthenticated attacker to exhaust server CPU resources. The issue has a CVSS score of 8.2 (High).
Technical details
- Root cause:
DotvvmRouteParser.RouteRegex, used internally byDotvvmRoute.IsMatch, previously had no matching timeout, so pathological input could drive the .NET regex engine into excessive backtracking. - Trigger conditions: the application must define a route containing multiple unconstrained parameters within a single path segment without a literal separator (e.g. a pattern like
edit/{a}-{b}-{c}/done). - Attack vector: network — an attacker sends a specially crafted, long, "near-match" URL path (e.g. thousands of dash characters) to the vulnerable route.
- Impact: excessive CPU consumption during route matching, leading to service degradation or denial of service; no confidentiality or integrity impact.
Affected software
- DotVVM versions prior to 4.2.11
- DotVVM 4.3.0 up to (but not including) 4.3.15
- DotVVM 5.0.0-preview01 up to (but not including) 5.0.0-preview09-final
Severity
CVSS score: 8.2 (High)
Vector: CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
Mitigation and recommended actions
- Immediate: upgrade to DotVVM 4.2.11, 4.3.15, or 5.0.0-preview09-final (or later), which apply a one-second timeout to route-matching regex operations and fall back to the .NET non-backtracking regex engine (on .NET 8.0+) or return HTTP 503 when the timeout is exceeded.
- If immediate patching is not possible:
- Add explicit constraints to route parameters (e.g.
{param:alpha}) to eliminate character-type ambiguity. - Use regex constraints such as
{param:regex([^-]*)}to exclude problematic separator characters from matching. - Separate multiple route parameters with literal path separators (
/) rather than placing them adjacently in a single segment.
- Add explicit constraints to route parameters (e.g.

