Skipper's Sinking Ship: Arbitrary Code Execution via Lua Filters
Jan 17, 2026·5 min read·4 visits
Executive Summary (TL;DR)
In versions prior to 0.23.0, Skipper enabled its Lua scripting engine by default and permitted 'inline' code sources. Attackers with the ability to configure routes (e.g., via Kubernetes Ingress) could inject malicious Lua scripts to read sensitive files—such as Kubernetes Service Account tokens—or execute system commands, leading to potential cluster compromise.
Zalando Skipper, a popular HTTP router and reverse proxy, suffered from a critical 'insecure by default' configuration that allowed arbitrary Lua code execution. By enabling inline script sources without adequate sandboxing, the tool essentially handed a loaded gun to anyone with the ability to define routing filters.
Official Patches
Fix Analysis (1)
Technical Appendix
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:HAffected Systems
Affected Versions Detail
| Product | Affected Versions | Fixed Version |
|---|---|---|
Skipper Zalando | < 0.23.0 | 0.23.0 |
| Attribute | Detail |
|---|---|
| CWE ID | CWE-94 (Code Injection) |
| CVSS v3.1 | 8.8 (High) |
| Attack Vector | Network (via Config/Ingress) |
| Privileges Required | Low (Ingress Creation) |
| Impact | Arbitrary Code Execution / Information Disclosure |
| Exploit Status | PoC Available |
MITRE ATT&CK Mapping
Improper Control of Generation of Code ('Code Injection')
Known Exploits & Detection
Vulnerability Timeline
Subscribe to updates
Get the latest CVE analysis reports delivered to your inbox.