„`html
Zusammenfassung
CVE-2026-76848 ist eine kritische SQL-Injection-Sicherheitslücke in TypeORM, die über die SelectQueryBuilder.distinctOn-Methode ausgenutzt werden kann. Die Schwachstelle ermöglicht es Angreifern, beliebige SQL-Expressions einzuschleusen und sensible Datenbankdaten auszulesen. Der Schweregrad wird mit High (CVSS 7.5) bewertet.
Betroffene Systeme
Die Sicherheitslücke betrifft TypeORM-Instanzen mit PostgreSQL-kompatiblen Datenbanktreibern. Besonders gefährdet sind Anwendungen, die:
- Die distinctOn-Methode mit benutzerkontrollierten Eingaben nutzen
- Client-seitig gewählte Deduplicationspalten akzeptieren
- Keine Input-Validierung für distinctOn-Parameter implementieren
Technische Details
Die Anfälligkeit liegt in der createSelectDistinctExpression-Funktion in src/query-builder/SelectQueryBuilder.ts. Diese verarbeitet das übergebene String-Array ohne Validierung und interpoliert die Werte direkt in die SQL-Statement ein.
Kritische Sicherheitsmängel:
- Fehlende Input-Escaping und Quoting
- Keine Identifier-Validierung oder Allowlist-Checks
- Keine Filterung durch replacePropertyNames oder driver-spezifische Escape-Helper
- validateOrderByCondition (Standard-Schutz bei orderBy) wird nicht angewendet
Ein Angreifer kann korrelierte Subqueries in den distinctOn-Parameter einschleusen, um via Boolean-basierte oder Zeit-basierte Inference auf beliebige Daten zuzugreifen, die die Datenbankrolle erreichen kann – unabhängig vom abgefragten Entity.
Empfohlene Massnahmen
- Sofortige Validierung aller benutzerkontrollierten Eingaben für distinctOn-Parameter implementieren
- Whitelist-basierte Filterung der erlaubten Spaltennamen einführen
- Identifier-Quoting und Escaping erzwingen
- TypeORM-Updates überwachen und einspielen sobald verfügbar
- SelectQueryBuilder-Aufrufe mit externen Eingaben einer Code-Review unterziehen
Bewertung
Schweregrad: High (CVSS 7.5)
Angriffsvektor: Network
Verfügbarer Patch: Nein
Bis zur Verfügbarkeit eines offiziellen Patches sollten Workarounds implementiert und externe Eingaben streng validiert werden.
„`