Aikido

Erkennen potenzieller Injektionsschwachstellen

Sicherheit

Einführung

Injection-Fehler gehören zu den gefährlichsten und ältesten Software-Sicherheitsproblemen. Sie treten auf, wenn nicht vertrauenswürdige Eingaben ohne ordnungsgemäße Validierung oder Escaping direkt in Abfragen, Befehle oder Code-Interpreter geleitet werden. Dies kann zu unbefugtem Zugriff, zur Beschädigung von Daten oder zur vollständigen Kompromittierung des Systems führen.

Während sich herkömmliche SAST-Tools auf gängige Sprachen wie JavaScript, Python oder Java konzentrieren, erkennt die KI-gestützte Code-Qualitäts-Engine von Aikido jetzt auch Injektionsschwachstellen in Sprachen, die von SAST-Tools normalerweise übersehen werden, wie Perl, Haskell, Groovy, Erlang, Zig, Delphi, PowerShell, COBOL, ABAP, Visual Basic, Pascal und ColdFusion.

Diese Regel stellt sicher, dass unabhängig von der Sprache, die Ihr Team verwendet, unsichere Abfragen oder Befehlskonstruktionen abgefangen werden, bevor sie die Produktion erreichen.

Warum das wichtig ist

Injection-Fehler bleiben eine der OWASP Top 10 Sicherheitsrisiken.

Sie lassen sich leicht einführen, aber oft nur schwer durch eine manuelle Überprüfung aufspüren, insbesondere in älteren oder weniger verbreiteten Sprachen.

Ohne Sicherheitsvorkehrungen:

  • Angreifer können SQL- oder Betriebssystembefehle in dynamisch erstellte Zeichenketten einfügen.
  • Sensible Daten können exfiltriert oder zerstört werden.
  • Ganze Systeme können übernommen werden, wenn die Ausführung von Code möglich ist.

Durch die Durchsetzung dieser Regel muss jeder Teil des Codes, der Abfragen oder Befehle erstellt, parametrisierte APIs, sichere Bibliotheken oder Escape-Funktionen verwenden, wodurch die Angriffsfläche drastisch reduziert wird.

❌ Nicht-konformes Beispiel

Im Folgenden finden Sie ein Beispiel in PowerShell, aber das gleiche Problem tritt in vielen Sprachen auf.

# Unsicher: Benutzereingabe direkt in einen Systembefehl verkettet
$BenutzerEingabe = Read-Host "Benutzernamen eingeben"
Invoke-Ausdruck ("net user " + $BenutzerEingabe)

Warum dies unsicher ist: Invoke-Expression führt einen dynamisch konstruierten Befehl aus.

Ein Angreifer könnte john && del C:\* /Q eingeben und destruktives Verhalten auslösen.

✅ Konformes Beispiel

# Safe: use parameterized or validated command execution
$userInput = Read-Host "Enter username"

if ($userInput -match '^[a-zA-Z0-9_-]+$') {
    Start-Process "net" -ArgumentList "user", $userInput
} else {
    Write-Host "Invalid input"
}

Warum dies sicher ist:

  • Befehlsargumente werden als Liste übergeben, nicht als verkettete Zeichenfolge.
  • Die Eingabe wird anhand einer Whitelist-Regex validiert.
  • Keine nicht vertrauenswürdigen Daten erreichen die Shell unverschlüsselt.

Versuchen Sie es in Aikido Security

Sie können diese Regel direkt in Aikidos Code Quality Tool aktivieren.

Sobald es aktiviert ist, sucht es automatisch nach Injektionsmustern in allen unterstützten Sprachen, auch in solchen ohne native SAST-Abdeckung.

Jedes Mal, wenn ein Entwickler eine Pull-Anfrage öffnet:

  • Das System überprüft neuen und geänderten Code.
  • Es kennzeichnet jede Verwendung von String-Verkettung oder Interpolation innerhalb von Befehls-, Abfrage- oder Interpreter-Aufrufen.
  • Der Bericht hebt die genaue Zeile hervor und gibt einen kurzen Lösungsvorschlag (z. B. "Verwenden Sie parametrisierte APIs oder validierte Eingaben").

Diese Regel gilt für jeden PR, so dass ein konsistenter Schutz auch in gemischtsprachigen Repositories gewährleistet ist.

Schlussfolgerung

Der dynamische Aufbau von Zeichenketten ist einer der einfachsten Fehler, der zu kritischen Sicherheitslücken führen kann.

Durch die Erkennung unsicherer Verkettungen und die Erzwingung sicherer Abfrageverfahren verhindert diese Regel ganze Klassen von Injektionsangriffen, bevor sie die Produktion erreichen.

Unabhängig von der Sprache vereint die intelligente Analyse von Aikido statischen und KI-gestützten Schutz und deckt damit mehr Bereiche ab, als es herkömmliche Tools je könnten.

FAQs

Haben Sie Fragen?

Welche Arten von Injektionen werden von dieser Regel erfasst?

Es erkennt SQL-, Befehls-, LDAP- und Code-Injection-Patterns, also alle Stellen, an denen benutzergesteuerte Daten in ausführbare Zeichenfolgen eingefügt werden.

Funktioniert es nur für unterstützte SAST-Sprachen?

Nein. Diese Regel dehnt die Abdeckung auf Sprachen aus, für die es keine SAST gibt oder denen es an Tiefe fehlt, z. B. PowerShell, COBOL oder Haskell.

Wie streng ist der Nachweis?

Sie kennzeichnet risikoreiche Konstrukte wie String-Verkettung oder Interpolation in Datenbank-, Shell- oder Interpreter-Aufrufen. Falsch-positive Ergebnisse sind selten, da die Regel sprachabhängig ist.

Wie geht Aikido mit der Wiedergutmachung um?

Wenn ein Verstoß festgestellt wird, schlägt das Tool sicherere Alternativen vor, wie z. B. die Verwendung von vorbereiteten Anweisungen, parametrisierten APIs oder die Validierung auf der Grundlage einer Whitelist.

Warum sollte man sich nicht nur auf die Eingabevalidierung verlassen?

Validierung allein kann keine Sicherheit garantieren. Eine ordnungsgemäße Parametrisierung stellt sicher, dass nicht vertrauenswürdige Eingaben die Struktur von Abfragen oder Befehlen nicht verändern.

Starten Sie kostenlos

Sichern Sie Ihren Code, Cloud und die Laufzeit in einem zentralen System.
Finden und beheben Sie Schwachstellen schnell  automatisch.

Keine Kreditkarte erforderlich | Scanergebnisse in 32 Sekunden.