---
id: CVE-2026-93709
title: >-
  Dancer2 versions before 2.2.0 for Perl serve a layout as a page when an
  equivalent spelling of its path misses the guard in the AutoPage handler.


  The handler compares the request path against the layout directory name as
  text, while the…
summary: >-
  Dancer2 versions before 2.2.0 for Perl serve a layout as a page when an
  equivalent spelling of its path misses the guard in the AutoPage handler.


  The handler compares the request path against the layout directory name as
  text, while the…
severity: medium
cvss: 5.3
cvssVector: 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N'
cwe:
  - CWE-41
product: Dancer2
affected:
  - Dancer2 < 2.2.0
published: '2026-09-22'
updated: '2026-09-23'
sourceUpdated: '2026-09-23T20:17:23.067'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-93709'
references:
  - url: >-
      https://github.com/PerlDancer/Dancer2/commit/293fce08812b0928f34ab2d7b9357450707c3630.patch
    label: 9b29abf9-4ab0-4765-b253-1875cd9b441e
  - url: >-
      https://github.com/PerlDancer/Dancer2/commit/753b385350a54acb8d4b686723890205268634a8.patch
    label: 9b29abf9-4ab0-4765-b253-1875cd9b441e
  - url: 'https://github.com/PerlDancer/Dancer2/issues/1823'
    label: 9b29abf9-4ab0-4765-b253-1875cd9b441e
  - url: 'https://metacpan.org/release/CROMEDOME/Dancer2-2.2.0/changes'
    label: 9b29abf9-4ab0-4765-b253-1875cd9b441e
  - url: 'http://www.openwall.com/lists/oss-security/2026/09/22/1'
    label: af854a3a-2127-422b-91ae-364da2661108
tags:
  - nvd
  - cve.org
ssvc:
  exploitation: none
  automatable: 'yes'
  technicalImpact: partial
  timestamp: '2026-09-23T18:32:48.906597Z'
epss: 0.00186
epssPercentile: 0.08498
ingestedAt: '2026-09-22T00:55:54.015Z'
---

## Overview

Dancer2 versions before 2.2.0 for Perl serve a layout as a page when an equivalent spelling of its path misses the guard in the AutoPage handler.

The handler compares the request path against the layout directory name as text, while the lookup that follows canonicalises it. A doubled slash, a dot segment, a percent-encoded slash, or a different capitalisation on a case-insensitive filesystem therefore misses the guard.

The handler is off by default, enabled with auto_page. The layout wrapping every page is already public, so this discloses one of the application's other layouts.

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
