Skip to main content

StaticCodeAudit — Produktübersicht

Niveau Anfänger
Lesezeit ⏱ 10 Min.
Wörter 2029
Themen overviewfeatures

StaticCodeAudit — Produktzusammenfassung

Eigenständige Binärdatei für Compliance-, Sicherheits- und Codequalitätsaudit. Keine Abhängigkeiten. 100 % offline. Berichte auf Enterprise-Niveau.

Von CodeFixture | Präfix: SCA


Hauptmerkmale

  • Eigenständige Binärdatei — eine ausführbare Datei pro Plattform, keine Laufzeitabhängigkeit
  • 100 % offline — keine API-Aufrufe, kein Netzwerkzugriff, keine Cloud-Abhängigkeit, keine Telemetrie
  • Über 465 Erkennungsregeln in 7 Auditkategorien mit Zuordnung zu OWASP/CWE/WCAG/ASVS (Python, JS/TS, Java, C#, PHP, YAML)
  • Interaktive HTML-Berichte — eigenständige Einzeldatei mit über 12 interaktiven Visualisierungen
  • Unterstützung für 4 Sprachen — Französisch, Englisch, Spanisch, Deutsch (Bericht und Konsole)
  • Historischer Vergleich — automatische Baseline-Verfolgung über 10 Audits hinweg
  • CVE-Scan — optionale Integration von pip-audit und npm audit (lokal, offline)
  • White-Label-Branding — Toolname, Firma und Logo pro Projekt konfigurierbar
  • ISO-27001-Compliance-Matrix — ordnet Findings den 93 Annex-A-Kontrollen in 4 Themen zu
  • Berichts-Aufbewahrung — konfigurierbare Bereinigung nach Anzahl, Tagen oder beiden Modi
  • Git-blame-Integration — ermittelt den Committer pro Finding für die Nachvollziehbarkeit
  • Interaktive Konfiguration — geführte init- und configure-Modi für eine einfache Einrichtung
  • Demo-Modus--demo erzeugt anonymisierte Berichte (Pfade, Code, Lösungen geschwärzt) für Interessenten und öffentliche Weitergabe
  • Wizard für eigene Regeln--create-rule einheitlicher 7-Schritte-Wizard: Erstellen oder Bearbeiten, Duplikatsprüfung (Name + Pattern), vollständiges DSL (risk/solution/benefit/fix), 4 Sprachen
  • Schweregradfilter--severity CRITICAL,HIGH filtert Regeln vor dem Scan; bernsteinfarbenes Banner im Bericht bei aktivem Filter
  • Sprach-Badge — jedes Finding zeigt seine erkannte Sprache (Python, JavaScript, YAML…) als neutrales Badge an
  • Sprache-×-Schweregrad-Diagramm — gestapeltes Balkendiagramm, das die erkannte Sprache mit dem Schweregrad kreuzt
  • Architektur für eigene Regeln — Verzeichnis custom-rules/ getrennt von der Binärdatei, wird durch Updates niemals überschrieben
  • Detaillierter Fortschritt — dynamische [n/N]-Nummerierung nach dem Laden der Regeln berechnet, Meldungen pro Sprache und pro Taint-Schritt

Was es leistet

StaticCodeAudit (SCA) ist ein Tool für statische Analyse, das den Quellcode eines Projekts auf Sicherheitslücken, Architektur-Antipatterns, UI/UX-Barrierefreiheitsprobleme und Wartungsschulden untersucht. Es erzeugt einen eigenständigen HTML-Bericht mit nach Schweregrad gruppierten Findings, interaktiven Diagrammen, Health Score und historischer Trendanalyse.

Workflow

1. ./staticcodeaudit-<plattform> /pfad/zum/projekt --init   # Projekt initialisieren (UUID + Konfiguration erzeugen)
2. ./staticcodeaudit-<plattform> /pfad/zum/projekt          # Vollständiges Audit ausführen
3. SCA-REPORT-*.html öffnen                                 # Interaktiven Bericht prüfen

Jedes Audit erzeugt:

  • HTML-Bericht (SCA-REPORT-{timestamp}.html) — eigenständig, druckbar, interaktiv
  • Demo-Bericht (SCA-REPORT-{timestamp}-demo.html) — anonymisierte Version zum Teilen (Opt-in über --demo)
  • JSON-Daten (SCA-DATA-{timestamp}.json) — maschinenlesbar, versioniert (v3.4)
  • Baseline — gespeichert für den Vergleich beim nächsten Audit (neue/gelöste/persistente Probleme)

Erkennungsregeln

Über 465 Regeln in 7 Kategorien, jede mit Risikobewertung, Lösungshinweisen und Beschreibung des Nutzens.

Security (~430 Regeln) — Gewicht: 3

Regel Schweregrad Standard
SQL-Injection (f-string, concat, ORM) HIGH OWASP A03, CWE-89
XSS (innerHTML, React, Angular, Vue, Svelte, Blade) HIGH CWE-79
JNDI-Injection (Java — Log4Shell) CRITICAL ASVS 1.3.8, CWE-917
XPath-Injection (Java, C#, PHP, Python) HIGH ASVS 1.2.7, CWE-643
SSTI — Server-Side Template Injection (Python, JS) HIGH ASVS 1.3.7, CWE-1336
SpEL-Injection (Spring) HIGH CWE-917
LDAP-Injection (C#) HIGH CWE-90
CSV-Injection (formula injection) MEDIUM ASVS 1.2.10, CWE-1236
SMTP-Injection (Python, PHP) MEDIUM ASVS 1.3.11, CWE-93
ReDoS — Regular Expression Denial of Service MEDIUM ASVS 1.3.12, CWE-1333
Format String Vulnerability MEDIUM ASVS 1.3.10, CWE-134
Hardcodierte Geheimnisse HIGH CWE-798
Standardanmeldedaten (hardcodiert) HIGH ASVS 6.3.2, CWE-798
Gefährliche Codeausführung (eval/exec) HIGH CWE-94
Debug-Modus aktiviert HIGH OWASP A05
Geheimnis geloggt (f-string, Argument, Java, C#, PHP) HIGH OWASP A09, CWE-532
Log-Injection (CRLF) MEDIUM ASVS 16.3.2, CWE-117
HTTP ohne TLS MEDIUM OWASP A02
WebSocket ohne TLS (ws:// vs wss://) MEDIUM ASVS 4.4.1, CWE-319
Unsichere Deserialisierung (Python, Java, C#, PHP) HIGH OWASP A08, CWE-502
Schwache Kryptografie (MD5/SHA-1, Java, C#, PHP) HIGH CWE-328
Unzureichende Schlüsselgröße (RSA < 2048) MEDIUM ASVS 11.2.3, CWE-326
OS-Command-Injection (Python, Java, C#, PHP) HIGH CWE-78
Verbose Exception (Python, Java, C#, PHP) MEDIUM CWE-209
Selbstgebaute Authentifizierung HIGH CWE-287
Schwache Passwortrichtlinie (min < 8) MEDIUM ASVS 6.2.1, CWE-521
Sicherheitsfragen (wissensbasierte Auth) LOW ASVS 6.4.2, CWE-640
Vorhersagbare Session-Tokens HIGH CWE-330
JWT-Algorithmus None CRITICAL ASVS 9.1.2, CWE-345
JWT-Geheimnis hardcodiert HIGH ASVS 9.1.3, CWE-798
Dynamischer Import MEDIUM CWE-502
Unsicherer Zufall (Math.random, Java, C#, PHP) MEDIUM CWE-330
Client-seitige Auth (localStorage) HIGH CWE-602
Race Condition (TOCTOU) MEDIUM CWE-367
XXE-Injection (Java, C#, PHP) HIGH CWE-611
CSRF deaktiviert (Spring) HIGH CWE-352
CORS zu freizügig (Spring, C#) MEDIUM CWE-942
SSL-Bypass (Java, C#) HIGH CWE-295
Open Redirect (Java, C#, PHP) MEDIUM CWE-601
File Inclusion (PHP) HIGH CWE-98
Datei-Upload ohne Validierung MEDIUM ASVS 5.2.2, CWE-434
PHP-spezifisch (extract, type juggling, mass assignment) MEDIUM-HIGH Diverse
PII geloggt (DSGVO, 5 Sprachen) HIGH DSGVO Art. 5
Fehlende Datenaufbewahrung (DSGVO) MEDIUM DSGVO Art. 5
Fehlendes MFA (5 Sprachen) MEDIUM CWE-308
Dockerfile (Root-Benutzer, ungepinnte Basis, COPY all) HIGH-MEDIUM CWE-250
Unsicherer lokaler Speicher (Tokens/Geheimnisse in localStorage) MEDIUM CWE-922
Fehlender CSP-Header (Flask, Django, Express) MEDIUM CWE-1021
Fehlender HSTS-Header MEDIUM ASVS 3.4.1, CWE-523
Fehlendes X-Content-Type-Options MEDIUM ASVS 3.4.4
Fehlende Referrer-Policy LOW ASVS 3.4.5
Fehlender Frame-Schutz (CSP/X-Frame-Options) MEDIUM ASVS 3.4.6, CWE-1021
PostMessage ohne Origin-Prüfung MEDIUM ASVS 3.5.5, CWE-346
Fehlendes Subresource Integrity (SRI) LOW ASVS 3.6.1
SVG mit ausführbarem Inhalt (XSS) MEDIUM ASVS 1.3.4, CWE-79
GraphQL-Introspection aktiviert MEDIUM ASVS 4.3.2
GraphQL ohne Tiefenbeschränkung MEDIUM ASVS 4.3.1, CWE-770
Hardcodierte interne IP (RFC 1918) MEDIUM CWE-798
Exponierter Test-Endpoint (ungeschütztes /test, /debug) MEDIUM CWE-489

Architecture (10 Regeln) — Gewicht: 2

Regel Schweregrad Standard
Admin-Route ungeschützt HIGH OWASP A01
DB-Logik in Routern/Controllern (Python, Java, C#, PHP) MEDIUM
Direkte Queries in Routern MEDIUM
N+1-Query-Patterns (Python, Java) MEDIUM
Dateien überschreiten den Längen-Schwellenwert LOW-MEDIUM

Interface / UI (5 Regeln) — Gewicht: 1

Regel Schweregrad
Inline-Styles in JavaScript LOW
Manuelle Verwendung von createElement LOW
Event-Listener nicht aufgeräumt LOW
DOM-Manipulation in Schleifen LOW
Inline-SVG in HTML LOW

Benutzererfahrung / Barrierefreiheit (18 Regeln) — Gewicht: 1

Regel Schweregrad Standard
Button ohne ARIA-Label MEDIUM WCAG 2.4.6
Eingabefeld ohne Label MEDIUM WCAG 1.3.1
Bild ohne Alternativtext MEDIUM WCAG 1.1.1
Positiver tabindex MEDIUM WCAG 2.4.3
Fokus-Outline entfernt MEDIUM WCAG 2.4.7
Autoplay-Medien MEDIUM WCAG 1.4.2
Nicht übersetzte Toast-Nachrichten MEDIUM i18n
Flüchtige Fehler-Toasts MEDIUM UX
Hardcodierte UI-Zeichenkette (i18n-Prüfung) MEDIUM i18n
Übrig gebliebenes console.log LOW

Maintenance (22 Regeln) — Gewicht: 1

Regel Schweregrad Standard
Ungelöste TODO/FIXME/HACK/XXX LOW
Verwendung veralteter API (Python, Java, C#, PHP, JS) LOW CWE-477
Catch-all-Exception (Python, Java, C#, PHP) MEDIUM CWE-396
System.out.println (Java) LOW
Console.Write (C#) LOW
Fehler-Suppressor @ (PHP) LOW
Destruktiv ohne Backup (DROP/TRUNCATE außerhalb von Migrationen) LOW ISO A.8.13
Verwendung der lokalen Zeit (datetime.now() ohne Timezone) LOW ISO A.8.17
Fehlender Health-Check-Endpoint LOW ISO A.8.16
Nicht überprüfter Vendor-Code MEDIUM ISO A.5.22

Dependencies (3 Regeln) — Gewicht: 2

Regel Schweregrad Standard
Anfällige Abhängigkeit (CVE) HIGH-CRITICAL OWASP A06
Ungepinnte Abhängigkeitsversion HIGH CWE-1357
Nicht konforme Lizenz MEDIUM

CI/CD (18 Regeln) — Gewicht: 2

Regel Schweregrad Standard
pull_request_target_checkout HIGH CI-CD-01
GHA Expression Injection HIGH CI-CD-01
GHA übermäßige Berechtigungen MEDIUM CI-CD-05
GHA fehlende Berechtigungen MEDIUM CI-CD-05
GHA ungeschützter Kommentar-Trigger MEDIUM CI-CD-01
Ungepinnte Action-Version HIGH CI-CD-09
Unsichere GitLab-Variablen MEDIUM CI-CD-05
Workflow nicht in CODEOWNERS LOW CI-CD-05
gha_secret_in_log HIGH CWE-312
gha_deprecated_commands HIGH CVE-2020-15228
gha_artifact_poisoning MEDIUM CI-CD-09
gha_self_hosted_runner MEDIUM CI-CD-06
ci_curl_pipe_bash HIGH CI-CD-09
ci_insecure_download MEDIUM CWE-319
hardcoded_secret_cicd CRITICAL CI-CD-04 / CWE-798
docker_latest_tag LOW CI-CD-09
gitlab_allow_failure_security HIGH CI-CD-04
gitlab_script_secrets_echo HIGH CWE-312

Unterstützte Sprachen

Sprache Erweiterungen Regelabdeckung
Python .py Security, Architecture, Maintenance
JavaScript .js, .jsx, .mjs Security, UI, UX
TypeScript .ts, .tsx Gleiche Regeln wie JavaScript
HTML .html, .htm, .vue, .svelte, .ejs, .hbs, .njk, .jinja, .jinja2, .twig, .liquid, .mustache, .phtml, .erb, .jsp, .asp, .aspx, .cshtml UI, UX/Barrierefreiheit
Java .java Security, Architecture, Maintenance
C# .cs Security, Architecture, Maintenance
PHP .php Security, Architecture, Maintenance
YAML .yml, .yaml CI/CD

Berichtsfunktionen

Abschnitte (insgesamt 16)

  1. Header — Projektname, Version, UUID, Sprachflagge, Zeitstempel
  2. Inhaltsverzeichnis — klickbares Raster mit Emoji-Icons
  3. Auditparameter — Sprachen, gescannte Erweiterungen, Pfade, Ausschlussmuster, Kategorien, Modus
  4. Verwendete CLI-Optionen — Checkliste mit 16 Optionen, Status und Beschreibungen
  5. Visualisierungen — 9 Metrik-Diagramme + 4 historische Trenddiagramme (inkl. gestapeltes Balkendiagramm Sprache × Schweregrad)
  6. Zusammenfassende Statistiken — Karten: Zähler HIGH/MEDIUM/LOW, Validierungen, Testrate, Laufzeit
  7. Health Score — logarithmischer Sicherheits-Score, normiert auf LOC, mit Schweregrad-Strafen und farbcodierter Fortschrittsleiste
  8. Top-10 problematische Dateien — Heatmap-Ranking
  9. Unit-Tests — Pass/Fail/Error/Skip-Zähler mit Details
  10. Fixture-Validierung — Ergebnisse zur Erkennungsgenauigkeit
  11. Abhängigkeiten — Ergebnisse des CVE-Scans, ungepinnte Pakete (optional)
  12. SLA-Compliance — Lösungsfristen und Eskalationsregeln nach Schweregrad
  13. ISO-27001-Compliance-Matrix — Zuordnung von Findings zu den Annex-A-Kontrollen von ISO/IEC 27001:2022 (93 Kontrollen, 4 Themen)
  14. Findings nach Schweregrad — gruppiert CRITICAL/HIGH/MEDIUM/LOW/INFO mit Code-Auszügen, Kategorie-Badges, Glossar-Links
  15. Validierungen pro Kategorie — Erfolgsmeldungen (keine Probleme gefunden)
  16. Glossar — 36 Akronyme mit Definitionen (OWASP, ASVS, WCAG, CVE, CVSS, CWE, CSRF, XSS, SQL, SARIF, SBOM, ISO 27001 usw.)

Interaktive Funktionen

  • Größenveränderbare Sidebar — sticky Inhaltsverzeichnis mit Drag-to-resize und localStorage-Persistenz
  • Tastenkürzel — j/k-Navigation, Strg+Home
  • Einklappbare Abschnitte — Klick zum Auf- und Zuklappen der Findings
  • Druckmodus — druckfreundliches Layout per Klick
  • Chart.js-Visualisierungen — über 12 interaktive Diagramme mit Tooltips
  • Baseline-Vergleich — neue/gelöste/persistente Probleme hervorgehoben
  • Glossar-Querverweise — alle Akronyme im Bericht sind klickbare Links zum Glossar mit Tooltip-Vorschau

Eigenständigkeit des Berichts

Jeder Bericht ist eine einzige eigenständige HTML-Datei:

  • Sämtliches CSS, JavaScript und Chart.js inline eingebettet
  • Favicon und Logo als base64 kodiert
  • Keine externen Dateien, kein CDN, kein Netzwerk erforderlich
  • Kann in jedem Browser geöffnet, als E-Mail-Anhang verschickt und archiviert werden

Compliance & Standards

Standard Abdeckung
OWASP Top 10 A01 (Broken Access Control), A02 (Cryptographic Failures), A03 (Injection), A05 (Security Misconfiguration), A06 (Vulnerable Components), A08 (Software Integrity), A09 (Security Logging)
OWASP CI/CD Top 10 CI-CD-01 (Insufficient Flow Control), CI-CD-05 (Insufficient PBAC), CI-CD-09 (Improper Artifact Integrity)
CWE CWE-78, CWE-79, CWE-89, CWE-90, CWE-94, CWE-98, CWE-209, CWE-250, CWE-287, CWE-295, CWE-308, CWE-328, CWE-330, CWE-352, CWE-367, CWE-396, CWE-477, CWE-502, CWE-532, CWE-601, CWE-602, CWE-611, CWE-798, CWE-917, CWE-922, CWE-942, CWE-1021, CWE-1357
WCAG 2.1 1.1.1 (Non-text Content), 1.3.1 (Info and Relationships), 1.4.2 (Audio Control), 2.4.3 (Focus Order), 2.4.6 (Headings and Labels), 2.4.7 (Focus Visible)
ISO/IEC 27001:2022 Compliance-Matrix Annex A — 93 Kontrollen verteilt auf 4 Themen (Organisatorisch, Personen, Physisch, Technologisch). 44 Kontrollen durch statische Analyse abgedeckt (~47,3 % Abdeckung). Organisatorisch A.5: 10/37 (27 %), Technologisch A.8: 34/34 (100 %). 4 interaktive Diagramme (Doughnut, Balken, Radar, gestapelte Balken) mit Akkordeon pro Thema. Deckt Secure Coding (A.8.28), Kryptografie (A.8.24), Schwachstellenmanagement (A.8.8), Authentifizierung (A.8.5), Zugriffskontrolle (A.8.3), Berechtigungsmanagement (A.8.18), Cloud-Sicherheit (A.5.23), Lieferkette (A.5.21), Monitoring (A.8.16), Endgeräte (A.8.1), Web-Filterung (A.8.23), Netzwerksegmentierung (A.8.22), Uhrzeit-Synchronisation (A.8.17), Informationssicherung (A.8.13), Schutz von Audits (A.8.34) usw. ab.
DSGVO Art. 5 (PII-Logging, Datenaufbewahrung)
CVE Schwachstellenscan über pip-audit (Python) und npm audit (Node.js)

Internationalisierung

Sprache Flagge Konsole Bericht Glossar
Französisch 🇫🇷 --script-lang fr reports.language: "fr" 36 Begriffe
Englisch 🇬🇧 --script-lang en reports.language: "en" 36 Begriffe
Spanisch 🇪🇸 --script-lang es reports.language: "es" 36 Begriffe
Deutsch 🇩🇪 --script-lang de reports.language: "de" 36 Begriffe

Jede Zeichenkette des Tools ist lokalisiert:

  • Konsolen-Nachrichten (locales/script/{lang}.json)
  • Debug-Log-Nachrichten (Stufen info, detail, trace)
  • Berichtstext, Beschriftungen, Titel (locales/report/{lang}.json)
  • Regelnamen, Risikobeschreibungen, Lösungen, Nutzen
  • Kategorienamen, Schweregrad-Beschriftungen, Diagramm-Beschriftungen
  • Glossarbegriffe, Akronym-Definitionen

CLI-Referenz

Die CLI ist in 4 Argumentgruppen organisiert. Die SCA Developer Tools sind im verteilten Binary nicht enthalten.

Scan Options (für alle Ziele gemeinsam)

Option Beschreibung
project_path Pfad zum Zielprojekt (Standard: .)
--quick, -q Schnellmodus — nur Sicherheitsregeln
--severity LEVELS Filtert Regeln nach Schweregrad, kommagetrennt (z. B. CRITICAL,HIGH). Standard: alle. Bernsteinfarbenes Banner im Bericht bei aktivem Filter.
--lang {fr,en,es,de} Sprache des Berichts und der Konsole (Standard: en)
--list-rules Listet alle Auditregeln nach Kategorie auf

Output Options

Option Beschreibung
--fail-on-high Exit-Code 1, wenn HIGH-Schwachstellen gefunden werden (CI/CD-Integration)
--sarif Erzeugt SARIF-2.1.0-Export (GitHub Code Scanning, GitLab SAST)
--with-logs Speichert die Konsolenausgabe in einer Logdatei im Ausgabeverzeichnis
--quiet Stiller Konsolenmodus — nur Fehler und Endergebnis werden angezeigt

Client Features

Option Beschreibung
--init Erstellt oder bearbeitet audit.config.json (interaktiv)
--create-rule Erstellt oder bearbeitet eine benutzerdefinierte Regel (interaktiver Wizard)
--custom-rules-match Prüft die Abdeckung benutzerdefinierter Regeln durch benutzerdefinierte Fixtures
--with-tests Automatische Erkennung und Ausführung der Unit-Tests des Projekts
--with-deps Schwachstellenscan der Abhängigkeiten (pip-audit, npm audit)

Konfiguration

Die gesamte Konfiguration befindet sich in audit.config.json im Projektstamm. Wird durch --init erzeugt.

Wichtige Abschnitte

Abschnitt Zweck
brand Toolname, Firmenname, Präfix, eigenes Logo
project UUID, Name, Version, Beschreibung
languages Zu auditierende Sprachen: ["python", "javascript", "html"]
paths.include Zu scannende Verzeichnisse
paths.exclude Zu überspringende Muster
categories Aktivieren/Deaktivieren + Gewicht pro Kategorie
rules.disabled Liste der zu überspringenden Regelschlüssel
reports Ausgabeverzeichnis, Verlaufsverzeichnis, max. Verlauf (10), Sprache
tests Aktivieren/Deaktivieren, Verzeichnis, eigener pytest-Befehl
thresholds Max. HIGH (0), max. MEDIUM (10), Mindest-Health (80 %)
sla SLA pro Schweregrad (Frist, Eskalation)
fixtures Generische Fixtures einbeziehen (true/false)
retention Berichtsbereinigung: Modus (count/days/both), max_count, max_days

White-Label-Branding

{
  "brand": {
    "tool_name": "MyCompanyAudit",
    "company_name": "My Company",
    "prefix": "MCA",
    "logo": "assets/my-logo.svg"
  }
}

Personalisiert: Berichtstitel, Fußzeile, Ausgabedateinamen, Favicon, Kopf-Logo.

UUID-Projektsystem

Jedes Projekt erhält bei der ersten --init eine eindeutige UUID:

  • Entkoppelt den Projektort von der Fixture-Speicherung
  • Ermöglicht projekteigene Regeln und Fixtures
  • Verfolgt den Audit-Verlauf (Anzahl, Datum des letzten Audits)