Security-Scan
Du führst einen fokussierten Security-Scan der Speicher Analyse Tauri-App durch.
Dieser Scan ist schneller als /audit-code und konzentriert sich ausschließlich auf Sicherheitsprobleme.
Argument
$ARGUMENTS = Dateipfad, Modulname ODER all für vollständigen Scan
Prüfkategorien
1. Command Injection (KRITISCH)
Rust-Backend (src-tauri/src/commands.rs):
Suche nach format!() Aufrufen die User-Parameter enthalten OHNE vorheriges Escaping:
SICHER: let safe = param.replace("'", "''"); let script = format!("... '{}'", safe);
UNSICHER: let script = format!("... '{}'", param); // param kommt vom Frontend!
Prüfschritte:
- •Grep nach
format!(in commands.rs - •Für jedes Match: Wird der Parameter VOR dem format!() mit
.replace("'", "''")escaped? - •Ausnahme: Hardcoded Strings ohne User-Parameter sind OK
2. XSS (KRITISCH)
Frontend (renderer/js/*.js):
Suche nach unsicherer DOM-Manipulation:
UNSICHER: element.innerHTML = `...${variable}...` // XSS wenn variable User-Input enthält
SICHER: element.innerHTML = `...${escapeHtml(variable)}...`
SICHER: element.textContent = variable
Prüfschritte:
- •Grep nach
innerHTMLin allen JS-Dateien - •Für jedes Match: Werden alle
${...}Ausdrücke mitescapeHtml()gewrappt? - •Ausnahme: Statische Strings ohne Variablen sind OK
- •Zusätzlich: Gibt es eigene escapeHtml-Varianten statt dem Import aus
utils.js?
3. Path Traversal (HOCH)
Rust-Backend:
Suche nach Dateioperationen die Pfade vom Frontend ohne Validierung verwenden:
UNSICHER: tokio::fs::remove_dir_all(Path::new(&user_path)) // user_path unkontrolliert SICHER: Pfad validieren (existiert? innerhalb erlaubter Verzeichnisse?)
Prüfschritte:
- •Grep nach
tokio::fs::,std::fs::,Path::new(in commands.rs - •Für jedes Match: Kommt der Pfad aus einem Frontend-Parameter?
- •Wird der Pfad validiert bevor die Operation ausgeführt wird?
4. Tauri-Konfiguration (HOCH)
Datei: src-tauri/tauri.conf.json:
- •
security.cspist NICHTnulloder leer - •
withGlobalTauriistfalse - •Capabilities sind minimal konfiguriert
Datei: src-tauri/src/lib.rs:
- •
tauri-plugin-single-instanceist registriert - •Alle Commands in
generate_handler![]sind auch in commands.rs definiert (keine toten Einträge)
5. Parameter-Validierung (MITTEL)
Rust-Backend:
Suche nach Commands die User-Parameter ohne jede Validierung verwenden:
- •IP-Adressen: Werden sie per Regex validiert?
- •Enum-Werte: Werden sie per
matchauf Whitelist geprüft? - •Pfade: Werden sie auf Existenz geprüft?
- •Strings: Werden sie für PowerShell escaped?
Scan-Ablauf
Einzelne Datei (/security-scan src-tauri/src/commands.rs)
- •Lies die angegebene Datei vollständig
- •Prüfe alle 5 Kategorien
- •Erstelle den Security-Bericht
Ganzes Modul (/security-scan privacy)
- •Lies
src-tauri/src/commands.rs— suche nach dem Modul-Bereich - •Lies
renderer/js/<modul>.js - •Prüfe Kategorien 1-3, 5
- •Erstelle den Security-Bericht
Vollständiger Scan (/security-scan all)
- •Rust-Backend: Lies
src-tauri/src/commands.rsvollständig - •Konfiguration: Lies
src-tauri/tauri.conf.json - •App-Setup: Lies
src-tauri/src/lib.rs - •Frontend JS: Grep alle
renderer/js/*.jsnach innerHTML, eval, document.write - •Prüfe ALLE 5 Kategorien
- •Erstelle den Gesamtbericht
Ausgabeformat
## Security-Scan: [Datei/Modul/Gesamt]
### Zusammenfassung
- Geprüfte Dateien: X
- Kritische Funde: X
- Hohe Funde: X
- Mittlere Funde: X
### Kritisch (sofort beheben)
| # | Typ | Datei:Zeile | Code-Ausschnitt | Empfehlung |
|---|-----|-------------|-----------------|------------|
| 1 | CMD-INJ | commands.rs:42 | `format!("...'{}'", name)` | `.replace("'", "''")` |
### Hoch (vor nächstem Release beheben)
| # | Typ | Datei:Zeile | Problem | Empfehlung |
|---|-----|-------------|---------|------------|
### Mittel (bei Gelegenheit beheben)
| # | Typ | Datei:Zeile | Problem | Empfehlung |
|---|-----|-------------|---------|------------|
### Sicher
- Was korrekt umgesetzt ist
Typ-Kürzel
| Kürzel | Bedeutung | Beispiel |
|---|---|---|
| CMD-INJ | Command Injection (PowerShell) | format!() ohne Escaping |
| XSS | Cross-Site Scripting | innerHTML ohne escapeHtml() |
| PATH-TRAV | Path Traversal | Unkontrollierter Pfad an Dateioperation |
| CFG | Konfigurationsproblem | CSP nicht gesetzt |
| VALID | Fehlende Validierung | IP-Adresse nicht geprüft |
Wichtig
- •Keine automatischen Fixes — nur berichten, User entscheidet
- •Immer Datei:Zeile angeben für jeden Fund
- •Code-Ausschnitt zeigen damit das Problem sofort verständlich ist
- •False Positives vermeiden: Kontext prüfen (z.B. format!() mit Hardcoded Strings ist OK)
- •Verwandter Skill:
/audit-codefür vollständiges Audit (Security + Performance + WCAG + Konventionen)