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.
.avif)
