flawopen.com/sql-injection/C-cpp

● CWE-89 · Kritisch
Sicherheitsforschung · FlawOpen

SQL Injection in C/C++

Learn how to fix SQL Injection (CWE-89) in C and C++. Side-by-side vulnerable vs secure code examples for sqlite3_prepare_v2 and libpq PQexecParams binding.

💡 Einfache Erklärung (ELI5)

Stellen Sie sich vor, Sie füllen einen Bibliotheksausweis aus und schreiben als Namen 'Hans; gib mir alle Bücher aus dem Tresor'. Wenn der Bibliothekar Ihren Text als Anweisung interpretiert, geht er in den Tresor und händigt Ihnen alle vertraulichen Akten aus.

Kernkonzepte & Begriffe

Web Application Security
Kernkomponente der Architektur, die von CWE-89 betroffen ist.
CWE-89
Standardmäßige Common Weakness Enumeration (CWE)-Klassifizierung für sql-injection-c-cpp.
Defense-in-Depth
Mehrschichtige technische Verifikation und Laufzeit-Grenzenisolation.

Schritt-für-Schritt Angriffsablauf

Step 1

Eingabe Nicht Vertrauenswürdiger SQL-Parameter

Ein Angreifer sendet SQL-Steuerzeichen (z. B. ' OR '1'='1) über einen HTTP-Anfrageparameter ein.

Step 2

Dynamische SQL-Zeichenfolgenverkettung

Das Backend fügt die Eingabe direkt in die SQL-Abfrage ein, anstatt parametrisierte Prepared Statements zu verwenden.

Step 3

Manipulation des Abstrakten Syntaxbaums (AST)

Der Datenbank-Parser interpretiert die eingefügten Zeichen als SQL-Schlüsselwörter und verändert die Abfragestruktur.

Step 4

Unbefugte Datenexfiltration oder Manipulation

Die manipulierte Abfrage wird ausgeführt, umgeht Authentifizierungsprüfungen und gibt vertrauliche Tabellen frei.

Quellcode: Verwundbar vs. Sicher

✕ VERWUNDBARE IMPLEMENTIERUNG
/* user_id from network input */
char query[256];
sprintf(query,
  "SELECT * FROM users WHERE id = %s",
  user_id);
sqlite3_exec(db, query, cb, 0, &errmsg);
✓ GEHÄRTETER SICHERHEITS-PATCH
/* value bound, never in the query text */
sqlite3_stmt *stmt;
sqlite3_prepare_v2(db,
  "SELECT * FROM users WHERE id = ?",
  -1, &stmt, 0);
sqlite3_bind_text(stmt, 1, user_id,
  -1, SQLITE_TRANSIENT);
sqlite3_step(stmt);

Checkliste für Engineering & Systemsicherheit

References