
Vom Lötkolben zur Shell: Volle Hardware-Ausnutzung des Linksys WRT54GL Routers (CVE-2022-43973)
Eine 10-Phasen-Reise in die eingebettete Sicherheitsforschung – von der JTAG-Pin-Erkennung bis zur Remote-Code-Ausführung auf einem MIPS-basierten Consumer-Router.
| Autor | Umberto Della Monica |
| Rolle | MSc Cybersecurity-Student – Forscher für eingebettete Sicherheit |
| Datum | Mai 2026 |
| Repository | Linksys-WRT54GL-Exploitation |
Haftungsausschluss: Diese Forschung wurde nur für Bildungs- und Forschungszwecke an Hardware durchgeführt, die mir persönlich gehört. Es wurden keine unbefugten Systeme angegriffen. Alle hier beschriebenen Techniken sollten nur an Geräten reproduziert werden, die Ihnen gehören oder für die Sie eine ausdrückliche schriftliche Genehmigung zum Testen haben. Der Autor übernimmt keine Haftung für Missbrauch der dargestellten Informationen. Halten Sie sich stets an geltende Gesetze, Vorschriften und Praktiken der verantwortungsvollen Offenlegung.
Der Linksys WRT54GL ist einer der ikonischsten Consumer-Router, die je produziert wurden. Seine Open-Source-Firmware-Unterstützung machte ihn zu einem Favoriten unter Enthusiasten und Forschern. Trotz seines Alters ist er weltweit noch im aktiven Einsatz, was ihn zu einem relevanten Ziel für die Sicherheitsforschung eingebetteter Systeme macht.
| Spezifikation | Wert |
|---|---|
| Chipsatz | Broadcom BCM5352 |
| CPU-Takt | 200 MHz |
| Architektur | MIPS 32-Bit (Little Endian) |
| Flash-Speicher | 4 MB NOR (speicherabbildbar bei 0xbfc00000) |
| RAM | 16 MB |
| WLAN | IEEE 802.11b/g, 54 Mbps |
| Netzwerk | 4x LAN + 1x WAN, NAT-Firewall mit SPI |
| Betriebssystem | Linux-basiert (BusyBox) |
| Bootloader | CFE (Common Firmware Environment) |
Der erste Schritt bei jeder Hardware-Sicherheitsbewertung ist die physische Inspektion. Nach dem Öffnen des Gerätegehäuses identifizierte ich zwei Debug-Schnittstellen auf der Platine:
Da der JTAG-Header nicht bestückt war, habe ich einen temporären Stiftstecker eingelötet, um auf die Debug-Schnittstelle zuzugreifen. Mit einem Multimeter identifizierte ich Masse- und Vcc-Leitungen und bestätigte, dass das Ziel mit 3,3V Logikpegeln arbeitet – entscheidend, um eine Beschädigung des Chipsatzes zu vermeiden.
Um die JTAG-Signale abzubilden, verwendete ich einen JTAGulator von Grand Idea Studio – ein Hardware-Tool, das Debug-Schnittstellen automatisch durch Testen aller möglichen Pin-Kombinationen identifiziert.
Der JTAGulator identifizierte erfolgreich die folgende JTAG-Pinbelegung:
board: wrt54gl_v1.1
device: Linksys WRT54GL v1.1
pins:
TCK: PA3
TMS: PA4
TDI: PA1
TDO: PA2
TRST: NC
SRST: PB0
notes: "Header JP3 — verified 3.3V logic."
Nachdem die JTAG-Pins identifiziert waren, verband ich ein Attify Badge – ein Open-Source-Hardware-Sicherheitsbewertungswerkzeug (GNU GPL v3.0) mit einem FTDI FT2232H-Chip – mit dem JTAG-Header des Routers.
Ich startete OpenOCD (Open On-Chip Debugger) mit einer benutzerdefinierten Konfiguration, die auf das BCM5352-Ziel zugeschnitten war, da die offiziellen Konfigurationen mit dieser spezifischen Hardware-Revision inkompatibel waren.
Die benutzerdefinierte OpenOCD-Konfiguration definiert das Partitionslayout des Router-Flashs:
| Partition | Beschreibung | Startadresse | Größe |
|---|---|---|---|
| CFE | Bootloader | 0xbfc00000 | 256 KB |
| Firmware | Kernel + Root FS | 0xbfc40000 | ~3,7 MB |
| NVRAM | Konfiguration | 0xbfff0000 | 64 KB |
Nachdem ich die CPU angehalten hatte, führte ich einen vollständigen 4 MB Dump des speicherabbildbaren NOR-Flashs durch:
> target halt
> dump_image ./dumps/wrt54gl.bin 0xbfc00000 0x00400000
Mit binwalk analysierte ich den Firmware-Dump, um eingebettete Dateisysteme, komprimierte Segmente und das Kernel-Image zu identifizieren:
binwalk ./dumps/wrt54gl.bin
binwalk -E ./dumps/wrt54gl.bin # Entropieanalyse
sha256sum ./dumps/wrt54gl.bin # Integritätsprüfung