CVE-2026-19980
This vulnerability in GL.iNet routers isn't a one-off coding mistake — it's a systems architecture failure that was years in the making. The language update function should handle locale strings and nothing else. Instead, it accepts hour, minute, and week parameters, routing user-controlled strings directly into command execution contexts where they have no business being. That these scheduling parameters ended up in a localization function tells you exactly how this happened: developers bundled preference configuration into whatever function was nearby, and the boundary between user input and system commands never got enforced. This is the same vulnerability pattern that's haunted SOHO routers since at least 2009, and GL.iNet just shipped it across 15 models in 2026. The 7.4 CVSS score captures exploitability but badly understates the real risk. A code injection in the admin web panel gives attackers a foothold on the router's OS — from there, lateral movement to LAN clients, DNS poisoning, and persistence in the firmware update mechanism are textbook moves. These devices sit at the network perimeter for homes and small businesses. The blast radius isn't 15 models; it's every device behind them. What you should watch: whether GL.iNet's patch is surgical or structural. A one-line input validation fix at the injection point means the architectural entanglement survives — other convenience bridges between user input and command context almost certainly exist in that codebase and haven't been audited. A structural fix would refactor the language update component to have no access to command-context functions at all. If you manage these devices, treat this CVE as evidence that an architectural audit of the entire web panel is warranted, not just a patch to apply and forget. The question isn't whether similar injection points exist elsewhere — it's whether anyone has looked for them.
Reviewed through automated stages and approved by a human before publication.