Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
DakshSCRA — Framework-bewusstes statisches Code-Analyse-Tool für automatisierte Quellcode-Reviews mit plattformspezifischen Regeln, Taint-Analyse, Aufwandsabschätzung und Unterdrückungsbaselines. | Kitploit
Tools/GitHubGitHub/coffeeandsecurity/dakshscra
Statische AnalyseSchwachstellenscannerStatische Code-Analyse (SAST)SchwachstellenanalyseCode-AnalyseWebsicherheitPenetrationstestsDevSecOpsMobile SicherheitLernen & Bildung
GitHubcoffeeandsecurity/dakshscra

DakshSCRA

45790vor 16 TagenVon Kitploit geprüft

Framework-bewusstes statisches Code-Analyse-Tool für automatisierte Quellcode-Reviews mit plattformspezifischen Regeln, Taint-Analyse, Aufwandsabschätzung und Unterdrückungsbaselines.

Repository anzeigen

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Daksh SCRA (Source Code Review Assist)```

Author:

  • Debasis Mohanty ([email protected])
  • Twitter / X: @coffeensecurity
  • www.coffeeandsecurity.com
root@kitploit:~
## Über Daksh SCRA

Daksh SCRA (Source Code Review Assist) wurde entwickelt, um die Effizienz des Quellcode-Review-Prozesses zu steigern und Code-Reviewern einen gut strukturierten und organisierten Ansatz zu bieten.

Anstatt wahllos alles als potenzielles Problem zu kennzeichnen, fördert Daksh SCRA eine durchdachte Analyse und drängt zur Untersuchung und Bestätigung potenzieller Probleme. Dieser Ansatz reduziert das hektische Markieren jedes potenziellen Bedenken als Fehler und verringert so die Verwirrung und verschwendete Zeit durch Fehlalarme.

### Debüt

Daksh SCRA wurde ursprünglich während einer Schulung zur Quellcode-Überprüfung auf der Black Hat USA 2022 (6.–9. August) vorgestellt, wo es einem bestimmten Publikum dezent präsentiert wurde. Sein offizielles öffentliches Debüt fand auf der Black Hat USA 2023 in Las Vegas statt.

## Funktionen und Merkmale

- **Identifiziert interessante Bereiche im Quellcode:** Fördert fokussierte Untersuchung und Bestätigung, anstatt wahllos alles als Fehler zu kennzeichnen.
- **Identifiziert interessante Bereiche in Dateipfaden (Weltpremiere):** Erkennt Muster in Dateipfaden, um relevante Abschnitte für die Überprüfung zu lokalisieren.
- **Reconnaissance auf Software-Ebene zur Identifizierung verwendeter Technologien:** Identifiziert Projekttechnologien und ermöglicht Code-Reviewern präzise Scans mit geeigneten Regeln.
- **Automatisierte wissenschaftliche Aufwandsschätzung für Code-Reviews (Weltpremiere):** Bietet einen messbaren Ansatz zur Schätzung des für ein Code-Review erforderlichen Aufwands.
- **Framework-bewusstes Scannen:** Wendet automatisch frameworkspezifische Regeln an, wenn das Framework des Projekts erkannt wird.
- **Taint-Analyse-Berichte:** Plattformbezogene HTML-Taint-Flow-Berichte mit Hacker-Modus- und Profi-Modus-Designs.
- **RDL (Rule Description Language):** Externe Regellogik, die mit `rdl_ref` referenziert und von der `core/rdl_engine.py`-Pipeline ausgeführt wird – unterstützt dateibewusste Gates, boolesche Ausdrücke, Projektbeobachtungen und exportierte Logikmetadaten in Berichten.
- **Scan-Status / Fortsetzen:** Lange Scans als Checkpoints speichern und nach Unterbrechung fortsetzen.
- **Unterdrückungs-Baseline:** Eine Baseline bekannter Fehlalarme erstellen und anwenden, um diese aus zukünftigen Berichten zu unterdrücken.
- **Web-UI:** Browserbasierter Scan-Launcher mit Echtzeit-Konsolenfeed und Artefakt-Browser für Jobs.

> Laufende Verbesserungen sind im Gange. Mehrere neue Funktionen und Verbesserungen sind für kommende Versionen geplant.

Zögern Sie nicht, zur Aktualisierung oder Ergänzung neuer Regeln sowie zur zukünftigen Entwicklung beizutragen.

Wenn Sie Fehler finden, melden Sie diese an [[email protected]](mailto:[email protected]).

Ausführliche Dokumentation: [https://dakshlabs.com/#docs](https://dakshlabs.com/#docs)

---

## Erste Schritte

Es gibt zwei Möglichkeiten, Daksh SCRA auszuführen – wählen Sie, was am besten zu Ihrem Workflow passt:

| | Am besten geeignet für | Weiter zu |
|---|---|---|
| 🌐 **Web-UI (Docker)** | Der einfachste Einstieg – ein Befehl, ein Browser-Dashboard, Live-Scan-Fortschritt und ein Berichts-/Artefakt-Browser. Für die meisten Benutzer empfohlen. | [Web-UI (Docker)](#web-ui-docker) |
| 💻 **CLI (Python)** | Skripterstellung, CI-Pipelines oder das Ausführen von Scans ohne Docker. | [CLI-Setup](#cli-setup) |

Beide Wege nutzen exakt dieselbe Scan-Engine – die Web-UI ist ein Browser-Frontend über derselben CLI, sodass die Ergebnisse in beiden Fällen identisch sind.

---

## Web-UI (Docker)

Der schnellste Weg, Daksh SCRA auszuführen, ist über die browserbasierte Web-UI, die mit einem einzigen Docker-Compose-Befehl gestartet wird. Sie bietet einen Scan-Launcher, einen Live-Konsolenfeed und einen durchsuchbaren Verlauf früherer Berichte – ohne dass eine lokale Python-Umgebung erforderlich ist.

Das Docker-Setup führt die Web-UI und die CLI als unabhängige Dienste aus, die aus demselben Image erstellt werden, sodass Sie beide (oder einen davon) aus demselben Container verwenden können.

### Web-UI starten

Vordergrundmodus (Logs werden an Ihr Terminal gestreamt):```bash
docker compose up --build

Detached / Hintergrundmodus:```bash docker compose up --build -d

root@kitploit:~
Dann öffne [http://localhost:8080](http://localhost:8080).

Um einen anderen Port zu verwenden:```bash
DAKSH_PORT=9090 docker compose up

Stoppe den Stack mit:```bash docker compose down

root@kitploit:~
### Anmelden

Die Weboberfläche erfordert ein Konto. Beim ersten Start wird ein anfängliches Admin-Konto aus `DAKSH_ADMIN_USERNAME` / `DAKSH_ADMIN_PASSWORD` erstellt (in `.env` festlegen); wenn `DAKSH_ADMIN_PASSWORD` nicht gesetzt ist, wird ein zufälliges Passwort generiert und einmalig im Startprotokoll der API ausgegeben – bewahren Sie es auf, da es danach nicht wiederhergestellt werden kann.

Beim ersten Anmelden müssen Sie Ihr eigenes Passwort (und optional einen Benutzernamen) festlegen. Ein Admin-Konto kann über den API-Endpunkt `POST /api/v1/auth/users` weitere Konten erstellen (dafür gibt es noch keine eigene Oberfläche). Siehe `.env.example` für die vollständige Liste der authentifizierungsbezogenen Einstellungen (Sitzungsdauer, Cookie-Sicherheit, CORS).

### Was Sie erhalten

- Responsiver Befehls-Builder für die Modi Scan, Recon, Estimate, Recon+Estimate, List und PDF-aus-JSON
- Echtzeit-Konsolenfeed und Live-Fortschritt pro Phase während der Ausführung
- Artefakt-Snapshots pro Auftrag für HTML / PDF / JSON-Ausgaben
- Schnelle Navigation im Browser über Ausführungsformular, Live-Feed, Artefakte und letzte Aufträge
- Integrierter Verzeichnisbrowser zur Auswahl von Zielpfaden (betriebssystemabhängig: Windows, macOS, Linux / Docker)

Im Hintergrund bleibt die CLI die Quelle der Wahrheit – sie führt alle Scans durch und erzeugt sämtliche HTML / PDF / JSON-Ausgaben. Die Weboberfläche führt jeweils einen aktiven Auftrag aus und speichert die Ausgaben jedes abgeschlossenen Auftrags als Snapshot in `runtime/webui/jobs/<job-id>/artifacts/`, sodass frühere Berichte weiterhin zugänglich bleiben.

### Ausführen der CLI in Docker

Sie benötigen auch für die CLI keine lokale Python-Umgebung – sie ist als eigener Compose-Dienst verfügbar, der aus demselben Image erstellt wird:```bash
docker compose run --rm cli -h
docker compose run --rm cli -r auto -t /scan-targets/path/to/source

Was im Image enthalten ist

  • FastAPI-Backend + Web-UI-Frontend
  • Die vollständige Daksh-SCRA-CLI als separater Dienst
  • Playwright Chromium für die PDF-Erzeugung
  • Persistente reports/- und runtime/-Volumes
  • Host-Pfad-Mounts, damit Scans Quellcode-Bäume aus dem Container heraus erreichen können

Wichtige Mount-Punkte:

MountPfad im Container
Projektquelle/app
Standard-Scan-Root/scan-targets
Host-Laufwerks-Aliase/host, /host/c, /host/d
WSL-Mounts/mnt, /run/desktop/mnt/host

Umgebungsvariablen (in .env konfigurieren):

VariableBeschreibung
DAKSH_PORTWeb-UI-Port (Standard: 8080)
DAKSH_SCAN_ROOTStandard-Zielverzeichnis im Container
DAKSH_HOST_SOURCEHost-Pfad, der als /scan-targets gemountet wird (Standard: /tmp)
DAKSH_HOST_MOUNTZusätzlicher Host-Mount-Root
DAKSH_HOST_CWindows-C:-Laufwerkspfad (WSL)
DAKSH_HOST_DWindows-D:-Laufwerkspfad (WSL)
DAKSH_DESKTOP_MOUNTWSL-Desktop-Mount-Pfad
DAKSH_BROWSE_ROOTSÜberschreibt die Roots des Verzeichnisbrowsers (kommagetrennt)
DAKSH_ADMIN_USERNAMEInitialer Admin-Benutzername (Standard: admin)
DAKSH_ADMIN_PASSWORDInitiales Admin-Passwort – es wird dringend empfohlen, es explizit zu setzen

Kopieren Sie .env.example nach .env und setzen Sie die Pfade und Anmeldedaten für Ihre Maschine, bevor Sie Docker ausführen.


CLI-Einrichtung

Bevorzugen Sie es, Daksh SCRA direkt mit Python auszuführen? So richten Sie es lokal ein.

Voraussetzungen

  • Python 3.8+
  • Alle in requirements.txt aufgeführten Bibliotheken

1. Daksh SCRA herunterladen```bash

git clone https://github.com/coffeeandsecurity/DakshSCRA.git

root@kitploit:~
Oder lade das neueste ZIP von [https://github.com/coffeeandsecurity/DakshSCRA](https://github.com/coffeeandsecurity/DakshSCRA) herunter und entpacke es.

### 2. Eine virtuelle Umgebung einrichten

> 💡 Die virtuelle Umgebung kann in einem beliebigen Verzeichnis erstellt werden – sie muss sich nicht im DakshSCRA-Ordner befinden.

**Option A: Ein-Schritt-Einrichtung (empfohlen)**```bash
python setup_env.py

Dieses Skript erstellt die virtuelle Umgebung, installiert alle Abhängigkeiten und installiert den Chromium-Browser von Playwright (erforderlich für den PDF-Export).

Option B: Manuelle Einrichtung

Windows:```bash python -m venv daksh-env .\daksh-env\Scripts\activate

root@kitploit:~
macOS / Linux:```bash
python3 -m venv daksh-env
source daksh-env/bin/activate

Dann installiere die Abhängigkeiten:```bash cd path/to/DakshSCRA pip install -r requirements.txt playwright install chromium

root@kitploit:~
---

## CLI-Nutzung

Verwende `python` in einer virtuellen Umgebung oder `python3` außerhalb einer solchen.

### Befehlszeilenoptionen```
usage: dakshscra.py [-h] [-r RULES] [-f FILE_TYPES] [-v] [-t TARGET_DIR]
                    [-l {R,RF}] [--recon] [--rs] [--estimate]
                    [-rpt FORMATS] [--pdf-from-json]
                    [--json-input-dir PATH] [--pdf-output PATH]
                    [--pdf-multi-dir PATH] [--pdf-single-only]
                    [--skip-analysis] [--loc]
                    [--baseline-file PATH] [--baseline-generate] [--no-baseline]
                    [--review-config PATH]
                    [--resume-scan] [--state-file PATH] [--no-state] [--state]
OptionBeschreibung
-r RULESPlattform-Regeln (z. B. php, java, php,java) oder auto für automatische Erkennung
-f FILE_TYPESStandard-Dateitypen für den Scan überschreiben
-vAusführlichkeitsgrad (-v, -vv, -vvv)
-t TARGET_DIRZiel-Quellcode-Verzeichnis
-l {R,RF}Plattform-Regeln + Frameworks auflisten [R] oder Dateitypen einbeziehen [RF]
--reconAufklärung ausführen (Plattform-/Framework-/Sprachenerkennung)
--rs, --recon-strictStrikte Aufklärung: nur Erkennungen mit hoher Sicherheit (mit --recon verwenden)
--estimateCode-Review-Aufwand basierend auf der Codebasis-Größe schätzen
-rpt, --report FORMATSBerichtsformate: html, pdf oder html,pdf (Standard: html)
--pdf-from-jsonPDF-Berichte aus vorhandenen JSON-Ausgaben ohne erneuten Scan erzeugen
--json-input-dir PATHJSON-Berichtsverzeichnis (Standard: ./reports/data)
--pdf-output PATHEinzelner PDF-Ausgabepfad (Standard: ./reports/scan/pdf/report.pdf)
--pdf-multi-dir PATHAusgabeverzeichnis für mehrteilige PDFs (Standard: ./reports/scan/pdf/multi-file)
--pdf-single-onlyNur die kombinierte Einzeldatei-PDF erzeugen; mehrteiligen Satz pro Plattform überspringen
--skip-analysis

Beispielverwendung

-f (Dateitypen) ist optional. Wenn nicht angegeben, verwendet DakshSCRA die Standard-Dateitypen für die ausgewählte(n) Plattform(en).```bash

Single platform scan

python dakshscra.py -r php -t /path/to/source

Multiple platforms

python dakshscra.py -r php,java,cpp -t /path/to/source

Auto-detect platform and apply matching rules

python dakshscra.py -r auto -t /path/to/source

Override filetypes

python dakshscra.py -r php -f dotnet -t /path/to/source

Reconnaissance only (no scanning)

python dakshscra.py --recon -t /path/to/source

Reconnaissance + scanning

python dakshscra.py --recon -r php -t /path/to/source

Strict recon (high-confidence detections only)

python dakshscra.py --recon --rs -t /path/to/source

Effort estimation

python dakshscra.py --estimate -t /path/to/source

Scan with HTML + PDF report output

python dakshscra.py -r auto -t /path/to/source -rpt html,pdf

Verbosity levels

python dakshscra.py -r php -v -t /path/to/source # default python dakshscra.py -r php -vvv -t /path/to/source # show all pattern checks

Generate suppression baseline from current findings

python dakshscra.py -r auto -t /path/to/source --baseline-generate

Apply suppression baseline (suppress known FPs)

python dakshscra.py -r auto -t /path/to/source --baseline-file config/suppressions.json

Disable baseline for this run

python dakshscra.py -r auto -t /path/to/source --no-baseline

Apply findings triage / review config

python dakshscra.py -r auto -t /path/to/source --review-config config/review.json

Scan with checkpoint state enabled

python dakshscra.py -r auto -t /path/to/source --state

Resume an interrupted scan

python dakshscra.py -r auto -t /path/to/source --resume-scan

Resume with a custom state file

python dakshscra.py -r auto -t /path/to/source --resume-scan --state-file runtime/scan_state.json

Generate PDF from existing JSON outputs (no re-scan)

python dakshscra.py --pdf-from-json

Generate PDF from a custom JSON directory

python dakshscra.py --pdf-from-json --json-input-dir ./custom/reports/data

Custom output paths for PDF

python dakshscra.py --pdf-from-json --pdf-output ./reports/scan/pdf/custom.pdf --pdf-multi-dir ./reports/scan/pdf/multi-file

Single combined PDF only (skip per-platform set)

python dakshscra.py --pdf-from-json --pdf-single-only

root@kitploit:~
### Unterstützte Plattformregeln und Frameworks```bash
python dakshscra.py -l R    # List platform rules and framework mappings
python dakshscra.py -l RF   # List platform rules, framework mappings, and filetypes

Aktuell unterstützte Plattformen und Framework-Zuordnungen:

PlattformFrameworks
dotnetaspnetcore, entityframework
phpcodeigniter, drupal, laravel, symfony, wordpress
javahibernate, spring, springboot
javascriptangular, express, nestjs, nextjs, react, vue
kotlinktor, springkotlin
pythondjango, fastapi, flask
goecho, fiber, gin
cfreertos
cppboost, qt
androidcordova-android, flutter-android, ionic-android, jetpack, nativescript-android, reactnative-android, xamarin-android
ioscordova-ios, flutter-ios, ionic-ios, nativescript-ios, reactnative-ios, swiftui, uikit, xamarin-ios
reactnativereactnative
flutterflutter
xamarinxamarin
ionicionic
nativescriptnativescript
cordovacordova
rubyrails, sinatra
rustactix, axum, rocket
common-

Um die neuesten unterstützten Plattformen und Frameworks zu erhalten, führen Sie immer Folgendes aus:```bash python dakshscra.py -l R

root@kitploit:~
---

## Konfigurationsreferenz

### `config/tool.yaml`

Die Laufzeit-Standardwerte von Daksh SCRA werden über `config/tool.yaml` gesteuert.```yaml
state_management:
  enabled: false
  resume_mode: manual
  persist_after_seconds: 300
  persist_interval_seconds: 30
  default_state_file: runtime/scan_state.json
  cleanup_on_success: false

analysis:
  run_by_default: true
  include_frameworks: true
  report_theme: hacker_mode

Analyzer-Konfigurationsoptionen:

  • analysis.run_by_default
    • true: Der Analyzer läuft automatisch während des Scans
    • false: Der Analyzer ist deaktiviert, sofern er nicht in der Konfiguration oder über die CLI wieder aktiviert wird
  • analysis.include_frameworks
    • true: Framework-Ebene-Analyzer-Einträge einbeziehen, wo Framework-Erkennung vorhanden ist
    • false: Nur Ausgabe auf Plattform-Ebene des Analyzers
  • analysis.report_theme
    • hacker_mode: Dunkles, kontrastreiches, modernes Analyzer-Theme (Standard)
    • professional_mode: Helles, modernes Analyzer-Theme
    • both: Beide Theme-Varianten nebeneinander generieren

RDL-Regelautoren

RDL (Rule Description Language) ist die externalisierte Regellogik-Schicht von DakshSCRA. In der aktuellen Architektur:

  • XML-Regeln bleiben das Regel-Inventar und tragen Metadaten wie name, regex, Beschreibungen und optional scan_config.
  • RDL-Logik wird von core/rdl_engine.py ausgeführt.
  • Regellogik-Dateien liegen unter rules/scanning/logic/... und werden aus XML über <rdl_ref> referenziert.
  • rdl_ref-Werte werden relativ zu rules/scanning/ aufgelöst, zum Beispiel: logic/php/core/some_rule.rdl -> rules/scanning/logic/php/core/some_rule.rdl
  • Logik-Ergebnisse werden als Metadaten wie logic_engine, logic_source, logic_reason, logic_trace, logic_consulted_files und logic_outcome in das Berichts-JSON exportiert.

Die ältere Inline-<rdl>-Form ist nicht mehr die aktive Architektur und sollte für neue Regeln nicht verwendet werden.

RDL-Architektur auf einen Blick```text

XML rule -> regex / exclude / scan_config / descriptions -> rdl_ref -> rules/scanning/logic///.rdl -> core/rdl_engine.py -> pass / fail -> reason / fail_reason -> trace / consulted_files / outcome

root@kitploit:~
#### Scan-Sequenz

Für eine Quellregel wertet DakshSCRA die Logik in dieser Reihenfolge aus:

1. Recon wählt passende Plattformen und Frameworks aus.
2. Die XML-Regel wird aus `rules/scanning/platform/...` geladen.
3. `regex` findet Kandidatenzeilen oder Ganzdatei-Übereinstimmungen, sofern vorhanden.
4. `exclude` entfernt offensichtliches Rauschen für diese Regel, sofern vorhanden.
5. Die externe `.rdl`-Datei aus `rdl_ref` wird gegen den aktuellen Dateitext, den aktuellen Dateipfad und das Projektverzeichnis ausgewertet.
6. Wenn das RDL-Skript erfolgreich ist, behält DakshSCRA den Fund und führt die exportierten Logik-Metadaten in die Berichtsausgabe zusammen.
7. Wenn das RDL-Skript fehlschlägt, wird die Übereinstimmung mit dem RDL-Fehlergrund und den Entscheidungs-Trace-Metadaten unterdrückt.

Für Dateipfad-Regeln in `filepaths.xml` gilt dasselbe `rdl_ref`-Modell, aber das Übereinstimmungssubjekt ist
der normalisierte relative Pfad anstelle des Quellcode-Texts. In diesem Modus erhält RDL den relativen Pfad
als aktuellen Dateitext und Pfadkontext.

#### Aktuelle Regelstruktur```xml
<rule>
  <name>Rule Name</name>
  <regex><![CDATA[regex_to_match]]></regex>
  <rdl_ref>logic/common/core/insecure_sql_query_unsafe_string_concatenation.rdl</rdl_ref>
  <exclude><![CDATA[pattern_to_exclude_lines]]></exclude>  <!-- optional -->
  <scan_config>...</scan_config>                           <!-- optional -->
  <rule_desc>Short description of what the rule detects.</rule_desc>
  <vuln_desc>Why the pattern matters.</vuln_desc>
  <developer>Fix guidance for developers.</developer>
  <reviewer>Manual confirmation guidance for reviewers.</reviewer>
</rule>

Aktuelle .rdl-Struktur```text

VERSION 1 WHEN PRESENT /\b(?:mysql_query|mysqli_query|->query)\s*\(/i WHEN EXPR PRESENT:\$_(GET|POST|REQUEST|COOKIE) && MISSING:\b(?:prepare|bindParam|bindValue|PDO::prepare)\b REPORT AS area_of_interest REASON SQL query execution appears reachable without parameterisation in this file. FAIL_REASON Matching query API was found, but the file also contains prepared-statement indicators. TRACE SQLi gate: input source present and mitigation missing.

root@kitploit:~
#### Aktuelles Layout```text
rules/
└── scanning/
    ├── platform/
    │   ├── php/php.xml
    │   ├── java/java.xml
    │   └── ...
    └── logic/
        ├── common/core/
        ├── php/core/
        ├── php/framework/laravel/
        ├── mobile/android/core/
        ├── filepaths/core/
        └── ...

Ausführungssemantik

  • WHEN PRESENT, WHEN MISSING und WHEN CURRENT_FILE_MATCHES werden gegen den aktuellen Dateitext ausgewertet.
  • WHEN FILE_NAME_IS und WHEN FILE_PATH_MATCHES werden gegen den aktuellen Dateipfad-Kontext ausgewertet.
  • WHEN EXPR unterstützt boolesche Logik über PRESENT:, MISSING: und EXISTS:-Prädikate.
  • OBSERVE PROJECT_HAS_GLOB ... AS ... steuert den Befund nicht; es zeichnet zugehörige Projektdateien in den Trace-Metadaten auf.
  • REPORT AS, REASON, FAIL_REASON und TRACE steuern die exportierten Berichtsmetadaten.
  • Regex-Tokens können entweder als rohe Muster oder als /pattern/flags geschrieben werden, wobei i, m und s unterstützt werden.

Unterstützte RDL-Befehle

BefehlVerhaltenTypische Verwendung
WHEN PRESENT <regex>Erfordert, dass ein Muster im aktuellen Dateitext vorhanden istErfordert eine gleichzeitig auftretende riskante API oder ein sensibles Feld
WHEN MISSING <regex>Erfordert, dass ein Muster im aktuellen Dateitext fehltUnterdrücken, wenn eine Abhilfe bereits existiert
WHEN EXPR <expr>Wertet boolesche Ausdrücke mit PRESENT: / MISSING: / EXISTS: sowie &&, `
WHEN CURRENT_FILE_MATCHES <regex>Prüft gegen den vollständigen aktuellen DateitextKomplexe Ganzdatei-Bedingungen erneut prüfen
WHEN FILE_NAME_IS <name>Erfordert, dass der aktuelle Dateiname exakt übereinstimmtPlist-/Manifest-/Konfigurationsregeln einschränken
WHEN FILE_PATH_MATCHES <glob>Erfordert, dass der aktuelle relative Pfad einem Glob entsprichtFramework-/Konfigurationspfadregeln eingrenzen
UNLESS CURRENT_FILE_MATCHES <regex>Schlägt fehl, wenn die gesamte Datei einem Ausschlussmuster entsprichtBekannte sichere strukturelle Fälle blockieren
OBSERVE PROJECT_HAS_GLOB <glob> AS <label>Zeichnet zugehörige Projektdateien in den Trace-Metadaten aufUnterstützende Konfigurations- oder Begleitdateien sichtbar machen
REPORT AS <outcome>Legt das Regel-Ergebnis fest, normalerweise area_of_interestZukunftsichere explizite Ergebnisse
REASON <text>Grund, der angezeigt wird, wenn die Regel bestehtErklären, warum der Befund sichtbar blieb
FAIL_REASON <text>Grund, der angezeigt wird, wenn die Regel einen Treffer unterdrücktErklären, warum der Treffer gefiltert wurde
TRACE <text>Fügt Debug-/Entscheidungs-Trace-Zeilen hinzuMigrations-/Debugging-Unterstützung

Boolesche Ausdrücke in WHEN EXPR unterstützen:

  • PRESENT:<regex>
  • MISSING:<regex>
  • EXISTS:<regex>
  • &&, ||, ! und Klammern

Beispiel 1 - PHP-SQL-Injection-Gating

XML-Regel:```xml Possible SQL Injection in Query Execution query)\s*\(]]> <rdl_ref>logic/common/core/insecure_sql_query_unsafe_string_concatenation.rdl</rdl_ref> <rule_desc>...</rule_desc>

root@kitploit:~
Externe RDL:```text
VERSION 1
WHEN PRESENT /\b(?:mysql_query|mysqli_query|->query)\s*\(/i
WHEN EXPR PRESENT:\$_(GET|POST|REQUEST|COOKIE) && MISSING:\b(?:prepare|bindParam|bindValue|PDO::prepare)\b
REPORT AS area_of_interest
REASON Query execution appears to rely on direct input without parameterisation.
FAIL_REASON Query API matched, but parameterised query indicators were also found in the file.

Beispiel 2 – Android-Manifest-Regel mit dateibewussten Prüfungen

XML-Regel:```xml Exported Components Without Permission activity|service|receiver|provider)\s[^>]*android:name="(?P[^"]+)"[^>]*android:exported="true"[^>]*(?:/>|>)]]> <rdl_ref>logic/mobile/android/core/exported_components.rdl</rdl_ref> <scan_config>...</scan_config>

root@kitploit:~
Externe RDL:```text
VERSION 1
WHEN FILE_NAME_IS AndroidManifest.xml
WHEN CURRENT_FILE_MATCHES /android:exported\s*=\s*"true"/i
WHEN MISSING /android:permission\s*=\s*"/i
REPORT AS area_of_interest
REASON Exported component appears reachable without a permission guard.

Beispiel 3 – Dateipfad-Interessensbereich-Regel

XML-Regel:```xml Admin Section File Path <rdl_ref>logic/filepaths/core/admin_section.rdl</rdl_ref>

root@kitploit:~
Externe RDL:```text
VERSION 1
WHEN CURRENT_FILE_MATCHES /(^|\/)(admin|administrator|root)(\/|$)/i
UNLESS CURRENT_FILE_MATCHES /(^|\/)(tests?|docs?|samples?|examples?)(\/|$)/i
REPORT AS area_of_interest
REASON File path suggests privileged application functionality.
FAIL_REASON Path matched an excluded documentation or sample location.

Autorenhinweise

  • Halte regex breit genug, um Kandidaten zu erfassen, und filtere den Kontext anschließend mit RDL.
  • Bevorzuge rdl_ref für die gesamte Regellogik und platziere die .rdl-Datei neben dem entsprechenden Plattform-/Framework-Logikbaum.
  • Füge keine neuen Inline-<rdl>-Blöcke hinzu.
  • Verwende WHEN PRESENT / WHEN MISSING für einfache Bedingungen und WHEN EXPR nur, wenn die Logik wirklich boolesch ist.
  • Platziere prüferorientierte Begründungen in REASON und Unterdrückungserklärungen in FAIL_REASON.
  • Behandle PRESENT und MISSING als dateiweite Prüfungen. Eine Abhilfemaßnahme an beliebiger Stelle in der Datei kann jeden Treffer aus dieser Datei unterdrücken.
  • Verwende OBSERVE PROJECT_HAS_GLOB, um Ergebnisse mit Projektkontext anzureichern, nicht als Bestanden-/Nicht-bestanden-Gate.
  • Halte logic/...-Pfade stabil und plattformspezifisch, damit XML-Regeln schlank bleiben und die Logikebene wiederverwendbar bleibt.

Berichtsausgabestruktur

Alle Ausgaben werden unter dem Verzeichnis reports/ geschrieben:``` reports/ ├── scan/ │ ├── html/ │ │ ├── report.html # Single-file HTML scan report │ │ └── multi-file/ # Per-platform HTML report set │ ├── pdf/ │ │ ├── report.pdf # Single-file PDF scan report │ │ └── multi-file/ # Per-platform PDF report set │ ├── recon/ │ │ └── reconnaissance.html # Reconnaissance HTML report │ └── estimate/ │ └── estimation.html # Effort estimation HTML report ├── analysis/ │ └── / │ ├── analysis.html # Taint analysis report (default theme) │ ├── analysis_professional.html # Professional theme (if theme=both) │ ├── analysis_xref.html # Cross-reference report │ └── analysis.json # Structured analysis data └── data/ ├── areas_of_interest.json # AoI findings ├── filepaths_aoi.json # File path AoI findings ├── summary.json # Scan summary ├── recon.json # Recon summary └── analysis.json # Analyzer output

root@kitploit:~
Laufzeitdateien (Scan-Status, Logs, Inventar) werden unter `runtime/` geschrieben.

Bei der Ausführung über die Web-UI werden die Ausgaben jedes Jobs zusätzlich unter `runtime/webui/jobs/<job-id>/artifacts/` als Schnappschuss gespeichert (siehe [Web-UI (Docker)](#web-ui-docker)).

---

## Autor

| | |
|---|---|
| Website | [coffeeandsecurity.com](https://www.coffeeandsecurity.com) |
| E-Mail | [email protected] |
| Twitter / X | [@coffeensecurity](https://x.com/coffeensecurity) |
| Quelle | [github.com/coffeeandsecurity/DakshSCRA](https://github.com/coffeeandsecurity/DakshSCRA) |
| Lizenz | GNU General Public License v3.0 (GPL-3.0) |

Wenn DakshSCRA Ihrem Team erheblich Zeit, Aufwand oder Kosten gespart hat, die Abhängigkeit von teuren kommerziellen Tools reduziert, die Review-Abdeckung verbessert oder Code-Reviews strukturierter und effektiver gemacht hat, zögern Sie nicht, sich zu melden und Ihre Erfahrungen zu teilen. Ich bin stets offen für durchdachtes Feedback und interessante Gespräche.

Einen Fehler gefunden oder möchten Sie einen Beitrag leisten? Eröffnen Sie ein Issue oder einen Pull-Request auf GitHub.
Tool herunterladen
Analyzer-Stufe für diesen Lauf deaktivieren
--locEffektive Codezeilen zählen
--baseline-file PATHUnterdrückungs-Baseline-Datei (JSON)
--baseline-generateUnterdrückungs-Baseline aus aktuellen Befunden erzeugen
--no-baselineBaseline-Unterdrückung für diesen Lauf deaktivieren
--review-config PATHBefund-Triage-Datei (JSON); zuvor geprüfte False Positives aus Berichten unterdrücken
--resume-scanEinen zuvor unterbrochenen Scan aus der Statusdatei fortsetzen
--state-file PATHBenutzerdefinierter Scan-Status-/Checkpoint-Dateipfad
--no-stateScan-Status-Checkpointing für diesen Lauf deaktivieren
--stateScan-Status-Checkpointing für diesen Lauf erzwingen