Wie man Ausführungsrechte für Code bei Millionen von Nutzern und Hunderten populären Apps erlangt
(kibty.town)„Natürlich war Firebase (teilweise) schuld“
- Beim Herunterladen der Installationsdatei des KI-Editors Cursor wurde über die Lulu-Firewall festgestellt, dass eine Verbindung zu ToDesktop versucht wird
- ToDesktop ist ein Dienst für Electron-App-Paketierung, SDKs, Updates usw.
- Es wurde bestätigt, dass die App Firestore verwendet, und über die Entwicklertools wurde eine erste Untersuchung von Firebase gestartet
- Firebase: eine von Google angebotene Backend-Plattform für Apps, die über die NoSQL-Datenbank Firestore clientseitige Datenspeicherung und -verarbeitung unterstützt
- Mithilfe von Entwicklertools (DevTools) und Sourcemaps wurden die in Firestore verwendeten Collections untersucht
- Dabei wurde eine Collection namens
temporaryApplicationsgefunden, sie enthielt jedoch nur eine alte Liste und keine sensiblen Informationen (seit 2022 nicht mehr aktualisiert) - Es wurde festgestellt, dass die meisten zentralen Logiken und Deployment-Abläufe über das npm-Paket
@todesktop/clilaufen - Auch
@todesktop/clihatte Sourcemaps, sodass mit sourcemapper die Struktur des Original-Quellcodes nachvollzogen werden konnte
Ein Blick in die ToDesktop CLI
- ToDesktop CLI: übernimmt zentrale Funktionen wie App-Deployment, Upload des Quellcodes usw.
- Bei der Analyse der CLI-Sourcemaps wurde eine Schwachstelle entdeckt, mit der sich über die Firebase Cloud Function
getSignedURLbeliebige S3-Uploads missbrauchen ließen, allerdings schien es schwierig, tatsächlich sinnvolle Dateipfade zu finden
Hijacking der Deployment-Pipeline über ein Postinstall-Skript
- Ziel: Ausführungsrechte für Code in dem Container (Server) zu erlangen, in dem der Build läuft
- In das
postinstall-Skript derpackage.jsonwurde eine Reverse-Shell-Payload eingefügt, um im Build-Container eine Verbindung zu empfangen - Der Zugriff auf das Innere des Containers gelang erfolgreich, und die Struktur der Build-Umgebung sowie wichtige Dateien wurden untersucht
- Die Datei
config.json.encryptedwurde gefunden, außerdem wurde die Entschlüsselungsmethode ermittelt und die echten Geheimnisse (config.json) extrahiert - Zusätzlich wurde intern auch ein Firebase-Admin-Key (mit weitreichenden Rechten) gefunden
Post-Exploitation
- Über diese Schwachstelle konnten beliebige App-Updates verteilt werden, sodass beim Neustart der App auf Nutzerseite sofort schädlicher Code ausgeführt werden konnte
- Tatsächlich wurde nach dem Verteilen eines Updates an eine Test-App clientseitig RCE (Remote Code Execution) reproduziert
Auswirkungen
- Da sich bösartige Updates an alle Apps verteilen ließen, die ToDesktop verwenden, könnte das Problem potenziell mehr als Millionen von Nutzern betreffen
- Als Beispiele genannte Apps:
- ClickUp (https://clickup.com)
- Cursor (https://cursor.com) (mittlerweile auf ein eigenes Build-System umgestellt)
- Linear (https://linear.app)
- Notion Calendar (https://calendar.notion.so)
- Besonders kritisch ist, dass viele dieser Nutzer in der IT- und Tech-Branche arbeiten, wodurch ein Angriff besonders großen Schaden anrichten könnte
The fix
- Nach der Meldung wurde sofort Kontakt mit ToDesktop aufgenommen und die Behebung eingeleitet
- ToDesktop behob das Problem schnell und gewährte zusätzlich eine weitere Belohnung
- Die Architektur wurde so geändert, dass Signierung, Upload und andere kritische Aufgaben in einem Sidecar-Container mit getrennten Rechten vom Build-Container ausgeführt werden
- Den offiziellen Security-Incident-Report von ToDesktop gibt es hier
- Sicherheitsvorfälle können bei jedem Unternehmen auftreten, entscheidend ist jedoch der Umgang damit, und ToDesktop hinterließ mit seiner schnellen und kooperativen Reaktion einen positiven Eindruck
Noch keine Kommentare.