Algernon: Host header path traversal in --domain mode reads files and runs Lua from parent dir
Algernon is a small self-contained pure-Go web server. Prior to 1.17.8, when algernon is started with --domain (or --letsencrypt, which silently turns on --domain at engine/flags.go:372), the request handler resolves the served directory by joining the configured --dir with the value of the client-supplied Host header. The join is performed by filepath.Join with no validation, so a Host: .. header walks one level above the document root. Subsequent file resolution then exposes everything in that parent directory — arbitrary file read, full directory listing, and, if any .lua file is present, server-side Lua execution. This vulnerability is fixed in 1.17.8.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2026-48126
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 2 Nov 2026, 16:36 UTC · Revision 1
Source evidence
Algernon: Host header path traversal in --domain mode reads files and runs Lua from parent dir
core-osv · Original sourcePublished 26 May 2026, 16:44 UTC
Algernon is a small self-contained pure-Go web server. Prior to 1.17.8, when algernon is started with --domain (or --letsencrypt, which silently turns on --domain at engine/flags.go:372), the request handler resolves the served directory by joining the configured --dir with the value of the client-supplied Host header. The join is performed by filepath.Join with no validation, so a Host: .. header walks one level above the document root. Subsequent file resolution then exposes everything in that parent directory — arbitrary file read, full directory listing, and, if any .lua file is present, server-side Lua execution. This vulnerability is fixed in 1.17.8.
osv:CVE-2026-48126
Complete source record
{
"id": "20371365b96a75aafe5c04d90c5219668b526f4e5e8bc05b763a96bd40219de7",
"url": "https://osv.dev/vulnerability/CVE-2026-48126",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "Algernon: Host header path traversal in --domain mode reads files and runs Lua from parent dir",
"summary": "Algernon is a small self-contained pure-Go web server. Prior to 1.17.8, when algernon is started with --domain (or --letsencrypt, which silently turns on --domain at engine/flags.go:372), the request handler resolves the served directory by joining the configured --dir with the value of the client-supplied Host header. The join is performed by filepath.Join with no validation, so a Host: .. header walks one level above the document root. Subsequent file resolution then exposes everything in that parent directory — arbitrary file read, full directory listing, and, if any .lua file is present, server-side Lua execution. This vulnerability is fixed in 1.17.8.",
"evidence": "osv:CVE-2026-48126",
"products": [],
"severity": "high",
"structured": {
"id": "CVE-2026-48126",
"aliases": [
"CVE-2026-48126",
"GHSA-jc3j-x6pg-4hmv",
"GO-2026-5460"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:N"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/xyproto/algernon",
"type": "GIT",
"events": [
{
"introduced": "0"
},
{
"fixed": "f7162c178fdcbe4b2a51efcbb07888e499ce3e95"
}
],
"database_specific": {
"extracted_events": [
{
"range": [
{
"introduced": "0"
},
{
"fixed": "1.17.8"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StringRangeExpression"
},
{
"range": [
{
"introduced": "0"
},
{
"fixed": "1.17.8"
}
],
"source": "DESCRIPTION"
}
]
}
}
],
"versions": [
"v1.17.7",
"v1.17.6",
"v1.17.5",
"v1.17.4",
"v1.17.3",
"v1.17.2",
"v1.17.1",
"v1.17.0",
"v1.16.0",
"v1.15.5",
"v1.15.4",
"v1.15.3",
"v1.15.2",
"v1.15.1",
"v1.15.0",
"v1.14.0",
"v1.13.0",
"1.12.14",
"1.12.12",
"1.12.11",
"1.12.10",
"1.12.9",
"1.12.8",
"1.12.7",
"1.12.6",
"1.12.5",
"1.12.4",
"1.12.3",
"1.12.2",
"1.12.1",
"1.12.0-TLS-1.3",
"1.12.0",
"1.11.0",
"1.10.1",
"v1",
"1.10",
"1.9",
"1.8",
"1.7",
"1.6",
"1.5.1-static-linux64",
"v1.5",
"1.5.1",
"1.5",
"v1.4.5-win8-64",
"1.4.5",
"1.4.4",
"1.4.3",
"1.4.2",
"v1.4.1-win8-64",
"v1.4.1-rpi3",
"1.4.1",
"1.4",
"1.3.2",
"1.3.1",
"1.3",
"v1.2.1-win8-64",
"1.2.1",
"1.2",
"1.1",
"v1.0-win8-64",
"1.0",
"0.92",
"0.91",
"0.9",
"0.89",
"0.88",
"0.87",
"0.86",
"v0.85-win8-64",
"0.85",
"0.84",
"v0.84-win8-64",
"0.83",
"0.82",
"0.81",
"0.8",
"0.75",
"0.74",
"0.73",
"0.72",
"0.71",
"0.7",
"0.68",
"0.67",
"0.66",
"0.65",
"0.64",
"0.63",
"0.62",
"v0.62-win8-64",
"0.61",
"0.59",
"0.58",
"0.57",
"0.56",
"0.55",
"0.54",
"0.53",
"v0.52-win8-64",
"0.52",
"0.51",
"0.50",
"0.49",
"0.48",
"v0.47-win8-64",
"0.47",
"0.46",
"0.45",
"0.44",
"0.43",
"0.42",
"0.41",
"0.4",
"0.3",
"0.2"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-48126.json"
}
}
],
"modified": "2026-10-28T02:30:20.921539400Z",
"provider": "osv",
"references": [
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/48xxx/CVE-2026-48126.json",
"https://github.com/xyproto/algernon/security/advisories/GHSA-jc3j-x6pg-4hmv",
"https://nvd.nist.gov/vuln/detail/CVE-2026-48126"
],
"provider_metadata": {
"cwe_ids": [
"CWE-22",
"CWE-23",
"CWE-644"
],
"cna_assigner": "GitHub_M",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/48xxx/CVE-2026-48126.json"
}
},
"related_cves": [
{
"value": "CVE-2026-48126",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 487222,
"published_at": "2026-05-26T16:44:09.104+00:00"
}