Fleet: CSV-Injection im Export des Host-Inventars
Wer einen Host kontrolliert oder ein Enroll-Secret besitzt, schreibt Formeln in Host-Felder, die beim Öffnen des CSV-Exports in der Tabellenkalkulation des Fleet-Benutzers ausgeführt werden.
Advisory-ID: TP-2026-117
Produkt: Fleet (Geräteverwaltung und osquery-Server)
Schwachstellentyp: CSV-/Formel-Injection (CWE-1236)
CVE: beantragt (GitHub CNA), Vergabe ausstehend
CVSS 3.1: 4.4 (Mittel) · CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:C/C:L/I:L/A:N
Betroffene Versionen: < 4.92.0
Hersteller-Advisory: GHSA-jc37-mgx5-356v
Behoben in: 4.92.0
Gemeldet: 13. Juni 2026
Zusammenfassung
Fleet verwaltet Endgeräte über osquery-Agenten und bietet einen CSV-Export des Host-Inventars unter GET /api/latest/fleet/hosts/report?format=csv. Der Export schreibt Felder wie Hostname, Computername, Seriennummer, Hardwaremodell und OS-Version unverändert in die Datei, ohne Werte zu entschärfen, die Tabellenkalkulationen als Formel auswerten. Diese Felder liefert der osquery-Agent, also setzt sie jeder, der einen eingebundenen Host kontrolliert oder ein Enroll-Secret besitzt. Exportiert ein Fleet-Benutzer die Liste und öffnet sie in Excel, LibreOffice Calc oder Google Sheets, wertet die Anwendung die Werte des Angreifers als Formeln aus.
Ursache
hostsReportResponse.HijackRender serialisiert die Hosts mit gocsv.Marshal (server/service/hosts.go:2766) und schreibt die Zeilen mit csv.NewWriter(w).WriteAll (server/service/hosts.go:2819), das nur CSV-Quoting kennt und keine Zellen mit führendem =, +, - oder @ entschärft. Die exportierten Felder tragen csv-Tags direkt auf der Host-Struktur, darunter hostname, os_version, hardware_model, hardware_serial und computer_name (server/fleet/hosts.go:303, :311, :324, :326, :327). Diese Werte stammen aus dem Detailbericht des osquery-Agenten und lassen sich schon bei der Registrierung über host_details.system_info setzen. Die Route /api/_version_/fleet/hosts/report hängt am Endpointer ue für jeden angemeldeten Benutzer (server/service/handler.go:487), sodass auch die Rolle Observer den Export auslöst.
Proof of Concept
POST /api/v1/osquery/enroll (mit gültigem Enroll-Secret)
{"enroll_secret":"<secret>","host_identifier":"x",
"host_details":{"system_info":{"hostname":"=2+5+cmd|calc","computer_name":"@SUM(1+1)",
"hardware_serial":"PWN123","uuid":"csvinj-uuid-001"},"os_version":{"name":"=HYPERLINK(0)"}}}
GET /api/latest/fleet/hosts/report?format=csv (Token eines Observers)
-> ...,=2+5+cmd|calc,csvinj-uuid-001,...,=HYPERLINK(0) ,...,PWN123,@SUM(1+1),...
Die Werte des Angreifers landen ohne vorangestelltes ' oder Tabulator in der Datei. Öffnet der Benutzer sie in einer Tabellenkalkulation, gelten die Zellen als Formeln.
Auswirkung
- Abfluss von Daten aus der Tabelle über Formeln wie
HYPERLINKoderWEBSERVICE, sobald der Benutzer die Datei öffnet. - Befehlsausführung auf dem Arbeitsplatz des Benutzers bei älteren Konfigurationen mit aktiviertem DDE.
- Auslösbar durch jeden Fleet-Benutzer bis hinunter zur Rolle Observer; aktuelle Tabellenkalkulationen zeigen vorher eine Sicherheitswarnung, die der Benutzer bestätigen muss.
Referenzen
Steckt so etwas in Ihrer Software?
Diese Schwachstelle hat unser Team im Rahmen seiner Arbeit gefunden. Lassen Sie Ihre Anwendungen von denselben Spezialisten prüfen, mit einem Penetrationstest von turingpoint.
