---
title: "CVE-2026-45721: Algernon: handler.lua discovery walks parent directories above the server root"
url: https://erroneo.us/security/cve/CVE-2026-45721/
description: "CVE-2026-45721 (github.com/xyproto/algernon (Go)): Algernon is a small self-contained pure-Go web server. Prior to 1.17.7, when Algernon is asked for any…"
type: vulnerability-record
section: "Security Digest"
date_published: 2026-05-26
date_modified: 2026-05-26
publisher: erroneo.us
author: erroneo.us Security Desk
cve: "CVE-2026-45721"
kev: false
cvss: 9
epss: 0.00744
license: All rights reserved. Quote with attribution and a link.
---

# CVE-2026-45721: Algernon: handler.lua discovery walks parent directories above the server root

**Signal:** Critical and remotely reachable. No known exploitation yet, but it is network-reachable without credentials. (Computed from CISA KEV, EPSS and CVSS; not an editorial verdict.)

## Should you act?

- Not in CISA KEV , but CISA’s SSVC assessment records a public proof-of-concept, so attack code exists.
- EPSS 0.7% , percentile 54: FIRST’s model estimates a 0.7% chance of exploitation activity in the next 30 days, higher than 54% of all scored CVEs (moderate). EPSS is a probability, not a verdict.
- Remotely reachable with no login and no user interaction. If the vulnerable service is exposed to the internet, prioritize it.
- Only applies if your dependency tree includes github.com/xyproto/algernon (Go) <= 1.17.6, fixed in 1.17.7 . Check your lockfile, including transitive dependencies.

## What it is

Algernon is a small self-contained pure-Go web server. Prior to 1.17.7, when Algernon is asked for any URL path that resolves to a directory without an index file, DirPage walks upward through parent directories — past the configured server root — looking for a file named handler.lua to execute as the request handler. The loop terminates only after 100 ancestor steps or when filepath.Dir returns ., so on any absolute server-root path the search reaches the filesystem root (/ on Unix, drive letter on Windows). The first handler.lua it finds is loaded into the Lua interpreter with the full Algernon API exposed — including run3(), httpclient, os.execute, io.popen, PQ, MSSQL, raw filesystem access, and the userstate database. Any process that can write handler.lua anywhere in a parent directory of the server root obtains pre-authenticated remote code execution on the next HTTP request. This is reachable without authentication — the lookup happens before the permission check returns a hit (the perm system only gates URL prefixes, not the handler-resolution step), and any URL pointing at a directory without an index triggers the walk. On a fresh stock Algernon install the request GET / is enough. This vulnerability is fixed in 1.17.7.

## Affected packages

- Go `github.com/xyproto/algernon` <= 1.17.6 → fixed: 1.17.7

## Affected products (CVE record)

- xyproto algernon: < 1.17.7

## Severity

- GitHub_M CVSS 3.1: 9 `CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:H`
- GitHub CVSS 3.1: 9.0 `CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:H`

## Exploitation

- CISA KEV: not listed (no confirmed in-the-wild exploitation known to CISA).
- CISA SSVC assessment: exploitation poc , automatable no , technical impact total .
- FIRST EPSS (model of 2026-10-21): 0.74% probability of exploitation activity in the next 30 days; percentile 54.

## Sources

- [GitHub Advisory GHSA-xwcr-wm99-g9jc](https://github.com/advisories/GHSA-xwcr-wm99-g9jc)
- [CVE.org record CVE-2026-45721](https://www.cve.org/CVERecord?id=CVE-2026-45721)
- [NVD entry CVE-2026-45721](https://nvd.nist.gov/vuln/detail/CVE-2026-45721)
- [github.com](https://github.com/xyproto/algernon/security/advisories/GHSA-xwcr-wm99-g9jc)

---
Source page: https://erroneo.us/security/cve/CVE-2026-45721/ · Security Digest: https://erroneo.us/security/ · More: https://erroneo.us/llms.txt
