
Im Frappe Framework v15.72.4 wurde eine SQL-Injection-Schwachstelle über den Parameter fieldname im API-Endpunkt frappe.client.get_value entdeckt.
📌 Zusammenfassung
Eine zeitbasierte Blind-SQL-Injection-Schwachstelle wurde im API-Endpunkt frappe.client.get_value in Frappe Framework v15.72.4 entdeckt (und ist auch in der Codebasis von ERPNext v15.67.0 vorhanden). Ein authentifizierter Benutzer mit Zugriff auf die Reporting-/Client-API kann über den Parameter fieldname SQL injizieren. Durch das Einfügen von Zeitverzögerungsfunktionen (z. B. sleep(15)) in den Parameter fieldname kann ein Angreifer die Injektion über messbare Antwortverzögerungen bestätigen — was Denial of Service, Informationsoffenlegung (über Blind-Techniken) und Datenmanipulation ermöglicht.
Schwachstellentyp: SQL-Injection (zeitbasiert blind) (CWE‑89)
Betroffene Produkte: Frappe Framework / ERPNext
Betroffene Versionen (gemeldet):
Betroffene Komponente: API-Methode frappe.client.get_value (frappe/client.py)
Verwundbarer Endpunkt:
/api/method/frappe.client.get_value
Beispiel einer verwundbaren Abfrage:
/api/method/frappe.client.get_value?doctype=Report&fieldname=ref_doctype+%2F+sleep(15)+&filters=Profit+and+Loss+Statement&_=1752174156893
Verwundbarer Parameter: fieldname (nicht ordnungsgemäß bereinigt / in SQL verkettet)
Angriffsart: Remote (erfordert Authentifizierung und Zugriff auf die Reporting-API)
Schweregrad: Hoch (zeitbasierte Blind-SQLi ermöglicht Datenextraktion, DoS und Manipulation)
Geschätzter CVSS v3.1-Score: 8.0 (Hoch) — Schätzung basierend auf einer Remote-SQL-Injection mit erforderlicher Authentifizierung, die Datenoffenlegung und DoS ermöglicht; die maßgebliche Bewertung sollte von den zuweisenden Stellen vorgenommen werden.
Status: Nicht behoben (wie gemeldet)
Entdeckt von: Mohammed Aloli (GitHub: https://github.com/MoAlali)
Entdeckungsdatum: Im Bericht nicht angegeben
CVE-ID: CVE-2025-56380
Nur in autorisierten / Laborumgebungen testen. NICHT gegen Systeme ausführen, die dir nicht gehören oder für die du keine ausdrückliche Testgenehmigung hast.
PoC-Anfrage (Beispiel):

GET /api/method/frappe.client.get_value?doctype=Report&fieldname=ref_doctype+%2F+sleep(15)+&filters=Profit+and+Loss+Statement&_=1752174156893
Schritte zur Bestätigung
+%2F+sleep(15)+& und beobachte, dass die Antwort sofort zurückkommt — was bestätigt, dass die Injektion die Zeitverzögerung verursacht.Hinweise: Ersetze sleep(15) je nach Datenbank-Engine durch andere Zeitfunktionen oder Zeitwerte, die zum Backend-DBMS passen (z. B. pg_sleep(n) für PostgreSQL). Der PoC demonstriert Blind-Injection über Timing; komplexere Nutzlasten könnten verwendet werden, um Daten Bit für Bit zu extrahieren.
Angriffsvektor: Ein authentifizierter Benutzer erstellt GET-Anfragen an /api/method/frappe.client.get_value mit einem bösartigen Parameter fieldname, der SQL-Nutzlasten (Zeitverzögerungsfunktionen) enthält.
Auswirkungen:
fieldname und sämtliche benutzergelieferten Eingaben niemals direkt in SQL verkettet werden. Verwende parametrisierte Abfragen oder ORM-APIs, die Parameter ordnungsgemäß binden.sleep, pg_sleep, benchmark, /, ;).frappe.client.get_value und den Codepfad, der fieldname/Filter verarbeitet, überprüfen, unsichere Verkettung durch sichere APIs ersetzen und einen Sicherheitspatch veröffentlichen. Betreiber sollten Updates umgehend einspielen.https://github.com/MoAlali — X: https://x.com/alaliksa_ — LinkedIn: https://www.linkedin.com/in/mohammedaloli/https://github.com/frappe/frappe , https://github.com/frappe/erpnexthttps://cheatsheetseries.owasp.org/cheatsheets/SQL_Injection_Prevention_Cheat_Sheet.htmlEntdeckt von Mohammed Aloli
Diese Informationen werden ausschließlich zu Verteidigungs- und Abhilfezwecken bereitgestellt. Versuche nicht, diese Schwachstelle gegen Systeme auszunutzen, die dir nicht gehören oder für die du keine ausdrückliche Genehmigung zum Testen hast. Betreiber sollten dem Patchen Priorität einräumen, sichere Codierungsmaßnahmen anwenden und den oben genannten Empfehlungen zur Abschwächung folgen.