← Back to search

CVE-2026-93712

7.5 HIGHpublic exploit available

Published 2026-09-22 · Updated 2026-09-22

AI risk analysis

Summary
Dancer2 web framework allows directory traversal through File route handler that doesn't properly collapse relative path segments, enabling access to files outside the designated public directory. This affects applications using static_handler=0 and explicitly naming File in route_handlers.
Exploitability
Exploitation is straightforward for applications with File route handler enabled and static_handler=0, requiring only a single HTTP request with relative path traversal segments like '/../outside.txt' or encoded dots.
Blast radius
Impact could be severe as attackers can read any file the web worker process can access, including sensitive configuration files like config.yml that may contain database credentials, API keys, and application secrets.
Detection
Monitor for HTTP requests with path traversal patterns like '/../', '/./', or encoded dots (%2E%2E) in the URI path, particularly against endpoints using File route handler. Look for unusual file access patterns in web server logs or application logs that reference files outside the expected public directory structure.
Prioritized remediation
Upgrade to Dancer2 version 2.2.0 or later to fix the directory traversal vulnerability in the File route handler.
directory-traversalwebperlconfig-exfiltration

Analysis generated locally by garnet-coder (no data left the box). AI-assisted — verify against primary sources before acting.

NVD description

Dancer2 versions from 2.1.0 before 2.2.0 for Perl serve files from outside public_dir via relative path segments in the File route handler. The handler joins the request path onto public_dir without collapsing relative segments, and checks only that the result is a readable regular file. A request for `/../outside.txt` escapes public_dir, and percent-encoding the dots reaches the same file. The handler is off by default. An application is affected once it names File in route_handlers and sets static_handler to 0, which otherwise refuses a dot segment before the route runs. Any file the worker process can read is served to an unauthenticated request, including the application's config.yml above public_dir.

CVSS vector

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N

Weaknesses

CWE-22

Public exploit & PoC references

References

Data: NVD (public domain). Analysis: local $0 model. Defensive use only.