bugs.md #5: RouterOS-CLI-Injection über beliebige Textfelder (SSH-Transportpfad) #17

Closed
opened 2026-09-17 21:10:02 +02:00 by kay · 0 comments
Owner

Quelle: bugs.md #5 (Deep-Dive Runde 2, 2026-09-17) — schwerwiegendster Fund der ganzen Session
Confidence: sehr hoch — kein Verdacht, sondern reproduzierter Exploit gegen den echten Testrouter (hAP lite, 192.168.88.1)

RouterOSCommand.cliLine baute CLI-Zeilen für den SSH-Transport per String-Interpolation. Die alte quoteIfNeeded(_:) quotete einen Wert nur bei Leerzeichen und escapte nie eingebettete ". RouterOS' Konsole behandelt ; als Befehlstrenner — ein Wert wie test" ; :log warning "INJECTED (ein plausibler freier Kommentar/SSID/Hostname) schloss das Anführungszeichen vorzeitig und ließ den Rest als zweiten, unabhängigen RouterOS-Befehl laufen.

Exploit live bestätigt (Testartefakt danach aufgeräumt): Befehl mit comment="test" ; :log warning "INJECTED-VIA-COMMENT-FIELD" über SSH ausgeführt → Router-Log zeigte den injizierten script,warning-Eintrag als eigenständig ausgeführten zweiten Befehl.

Betroffen: jeder Text im Setup-Wizard/Experte-Tab, sobald über SSH geschrieben wird. Auf dem Testrouter war www-ssl deaktiviert (REST unerreichbar) — jede Schreiboperation lief bereits über SSH, der Bug war live aktiv, nicht nur theoretisch.

Fix: quoteIfNeeded quotet jetzt immer und escaped \\\, "\" (live verifiziert als RouterOS' eigene Escape-Syntax). Gleiche Lücke defensiv auch in SSHTransport.fetchFieldValues geschlossen.

Verifikation: Exploit-PoC nach dem Fix erneut gegen den Router gefahren — kein injizierter Log-Eintrag mehr, Kommentar korrekt als reiner Text gespeichert. Neuer Regressionstest. Build + 101 Unit-Tests grün.

**Quelle:** bugs.md #5 (Deep-Dive Runde 2, 2026-09-17) — **schwerwiegendster Fund der ganzen Session** **Confidence:** sehr hoch — kein Verdacht, sondern reproduzierter Exploit gegen den echten Testrouter (hAP lite, 192.168.88.1) `RouterOSCommand.cliLine` baute CLI-Zeilen für den SSH-Transport per String-Interpolation. Die alte `quoteIfNeeded(_:)` quotete einen Wert nur bei Leerzeichen und escapte nie eingebettete `"`. RouterOS' Konsole behandelt `;` als Befehlstrenner — ein Wert wie `test" ; :log warning "INJECTED` (ein plausibler freier Kommentar/SSID/Hostname) schloss das Anführungszeichen vorzeitig und ließ den Rest als zweiten, unabhängigen RouterOS-Befehl laufen. **Exploit live bestätigt** (Testartefakt danach aufgeräumt): Befehl mit `comment="test" ; :log warning "INJECTED-VIA-COMMENT-FIELD"` über SSH ausgeführt → Router-Log zeigte den injizierten `script,warning`-Eintrag als eigenständig ausgeführten zweiten Befehl. Betroffen: jeder Text im Setup-Wizard/Experte-Tab, sobald über SSH geschrieben wird. Auf dem Testrouter war `www-ssl` deaktiviert (REST unerreichbar) — jede Schreiboperation lief bereits über SSH, der Bug war live aktiv, nicht nur theoretisch. **Fix:** `quoteIfNeeded` quotet jetzt immer und escaped `\` → `\\`, `"` → `\"` (live verifiziert als RouterOS' eigene Escape-Syntax). Gleiche Lücke defensiv auch in `SSHTransport.fetchFieldValues` geschlossen. **Verifikation:** Exploit-PoC nach dem Fix erneut gegen den Router gefahren — kein injizierter Log-Eintrag mehr, Kommentar korrekt als reiner Text gespeichert. Neuer Regressionstest. Build + 101 Unit-Tests grün.
kay closed this issue 2026-09-17 21:10:02 +02:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: kay/RouterOS#17