Algernon: Race Condition in handle() shared LState
Key facts
- Attack vector
- Network
- Privileges required
- None
- User interaction
- None
- Attack complexity
- High
- Attack requirements
- None
- Impact type
- —
- Confidentiality · integrity · availability
- None · None · High
- Fix status
- Fixed
Attack profile from CVSS 4.0 · CNA. Fix status from CNA.
Summary
Algernon is a small self-contained pure-Go web server. Prior to 1.17.6, in engine/luahandler.go, the sync.RWMutex protecting LoadCommonFunctions is released before L.Push() and L.PCall() execute. Since gopher-lua's LState is explicitly not goroutine-safe, concurrent requests race on the shared state causing Lua VM corruption. The Go race detector confirms this immediately under modest concurrency (ab -n 1000 -c 100). This vulnerability is fixed in 1.17.6.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- None
- Automatable
- No
- Technical impact
- Total
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
Remediation
- Fix · CNA algernon (xyproto) Fixed in 1.17.6
Timeline
- 2026-10-02 Threatist record created from CVE-2026-43981
References
More xyproto vulnerabilities
- TI-2026-37902 Algernon: Server-side script source disclosure on Windows via NTFS filename CVSS 4.0HIGH 8.7
- TI-2026-35564 Algernon: Host header path traversal in --domain mode reads files and runs Lua from parent dir CVSS 3.1HIGH 8.2
- TI-2026-33460 Algernon: handler.lua discovery walks parent directories above the server root CVSS 3.1CRITICAL 9.0
- TI-2026-33466 Algernon: Single-file mode unconditionally enables debug mode CVSS 3.1HIGH 7.5
- TI-2026-34142 Algernon: Auto-refresh SSE event server sets Access-Control-Allow-Origin: * CVSS 3.1MEDIUM 4.3
- TI-2026-34141 Algernon: Auto-refresh SSE event server binds to all interfaces by default on Linux/macOS CVSS 3.1MEDIUM 4.3
Sources
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences