Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
DakshSCRA — Strumento di analisi statica del codice consapevole del framework per la revisione automatica del codice sorgente con regole specifiche per piattaforma, analisi del taint, stima dello sforzo e baseline di soppressione. | Kitploit
Strumenti/GitHubGitHub/coffeeandsecurity/dakshscra
Analisi StaticaScanner di VulnerabilitàAnalisi Statica del Codice (SAST)Analisi delle VulnerabilitàAnalisi del CodiceSicurezza WebPenetration TestingDevSecOpsSicurezza Mobile
Apprendimento e Formazione
GitHubcoffeeandsecurity/dakshscra

DakshSCRA

Strumento di analisi statica del codice consapevole del framework per la revisione automatica del codice sorgente con regole specifiche per piattaforma, analisi del taint, stima dello sforzo e baseline di soppressione.

Vedi Repository
4579016 giorni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Daksh SCRA (Source Code Review Assist)```

Author:

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

Daksh SCRA (Source Code Review Assist) è progettato per migliorare l'efficienza del processo di revisione del codice sorgente, offrendo un approccio ben strutturato e organizzato per i revisori del codice.

Piuttosto che segnalare indiscriminatamente tutto come un potenziale problema, Daksh SCRA promuove un'analisi ponderata, spingendo a indagare e confermare i potenziali problemi. Questo approccio riduce la corsa a etichettare ogni potenziale preoccupazione come un bug, tagliando la confusione e il tempo sprecato in falsi positivi.

### Debutto

Daksh SCRA è stato inizialmente presentato durante una sessione di formazione sulla revisione del codice sorgente al Black Hat USA 2022 (6-9 agosto), dove è stato mostrato in modo discreto a un pubblico specifico. Il suo debutto pubblico ufficiale è avvenuto al Black Hat USA 2023 a Las Vegas.

## Funzionalità e Caratteristiche

- **Identifica le Aree di Interesse nel Codice Sorgente:** Incoraggia un'indagine e una conferma mirate piuttosto che etichettare indiscriminatamente tutto come un bug.
- **Identifica le Aree di Interesse nei Percorsi dei File (Prima al Mondo):** Riconosce i pattern nei percorsi dei file per individuare le sezioni rilevanti da revisionare.
- **Ricognizione a Livello Software per Identificare le Tecnologie Utilizzate:** Identifica le tecnologie del progetto, consentendo ai revisori del codice di eseguire scansioni precise con regole appropriate.
- **Stima Automatica e Scientifica dello Sforzo per la Revisione del Codice (Prima al Mondo):** Fornisce un approccio misurabile per stimare lo sforzo richiesto per una revisione del codice.
- **Scansione Consapevole del Framework:** Applica automaticamente regole specifiche del framework quando viene rilevato il framework del progetto.
- **Report di Analisi del Taint:** Report HTML del flusso taint per piattaforma con temi modalità hacker e modalità professionale.
- **RDL (Rule Description Language):** Logica di regole esterna referenziata con `rdl_ref` ed eseguita dalla pipeline `core/rdl_engine.py` - supporta gate consapevoli dei file, espressioni booleane, osservazioni sul progetto e metadati di logica esportati nei report.
- **Stato di Scansione / Ripresa:** Crea checkpoint per scansioni lunghe e riprendi dopo un'interruzione.
- **Baseline di Soppressione:** Genera e applica una baseline di falsi positivi noti per sopprimerli dai report futuri.
- **Interfaccia Web:** Avvio di scansioni basato su browser con feed console in tempo reale e browser degli artefatti dei job.

> Sono in corso miglioramenti attivi. Molte nuove funzionalità e migliorie sono previste per le prossime release.

Sentiti libero di contribuire all'aggiornamento o all'aggiunta di nuove regole e allo sviluppo futuro.

Se trovi bug, segnalali a [[email protected]](mailto:[email protected]).

Documentazione dettagliata: [https://dakshlabs.com/#docs](https://dakshlabs.com/#docs)

---

## Per Iniziare

Ci sono due modi per eseguire Daksh SCRA - scegli quello che si adatta al tuo flusso di lavoro:

| | Ideale per | Vai a |
|---|---|---|
| 🌐 **Web UI (Docker)** | Il modo più semplice per iniziare - un solo comando, una dashboard nel browser, avanzamento della scansione in tempo reale e un browser per report/artefatti. Consigliato per la maggior parte degli utenti. | [Web UI (Docker)](#web-ui-docker) |
| 💻 **CLI (Python)** | Scripting, pipeline CI o esecuzione di scansioni senza Docker. | [Configurazione CLI](#cli-setup) |

Entrambi i percorsi eseguono esattamente lo stesso motore di scansione - la Web UI è un frontend nel browser sopra la stessa CLI, quindi i risultati sono identici in entrambi i casi.

---

## Web UI (Docker)

Il modo più veloce per eseguire Daksh SCRA è tramite la sua Web UI basata su browser, avviata con un singolo comando Docker Compose. Ti offre un avviatore di scansioni, un feed console in tempo reale e una cronologia navigabile dei report passati, senza bisogno di un ambiente Python locale.

La configurazione Docker esegue la Web UI e la CLI come servizi indipendenti costruiti dalla stessa immagine, così puoi usare entrambi (o uno solo) dallo stesso contenitore.

### Avvia la Web UI

Modalità in primo piano (i log vengono trasmessi al tuo terminale):```bash
docker compose up --build

Modalità distaccata / in background:```bash docker compose up --build -d

root@kitploit:~
Poi apri [http://localhost:8080](http://localhost:8080).

Per usare una porta diversa:```bash
DAKSH_PORT=9090 docker compose up

Ferma lo stack con:```bash docker compose down

root@kitploit:~
### Accesso

L'interfaccia Web richiede un account. Al primo avvio, viene creato un account amministratore iniziale da `DAKSH_ADMIN_USERNAME` / `DAKSH_ADMIN_PASSWORD` (impostali in `.env`); se `DAKSH_ADMIN_PASSWORD` viene lasciato vuoto, viene generata una password casuale e stampata una sola volta nel log di avvio dell'API - salvala, poiché non può essere recuperata in seguito.

Ti verrà richiesto di impostare la tua password (e, opzionalmente, il nome utente) la prima volta che accedi. Un account amministratore può creare ulteriori account tramite l'endpoint API `POST /api/v1/auth/users` (nessuna UI dedicata per questo al momento). Consulta `.env.example` per l'elenco completo delle impostazioni relative all'autenticazione (durata della sessione, sicurezza dei cookie, CORS).

### Cosa ottieni

- Builder di comandi reattivo per le modalità scan, recon, estimate, recon+estimate, list e PDF-da-JSON
- Feed della console in tempo reale e avanzamento live per fase durante l'esecuzione
- Snapshot degli artefatti per job per gli output HTML / PDF / JSON
- Navigazione rapida nel browser tra modulo di esecuzione, feed live, artefatti e job recenti
- Browser di directory integrato per selezionare i percorsi di destinazione (consapevole del sistema operativo: Windows, macOS, Linux / Docker)

Sotto il cofano, la CLI rimane la fonte di verità - esegue tutta la scansione e genera ogni output HTML / PDF / JSON. L'interfaccia Web esegue un job attivo alla volta e salva gli output di ogni job completato in `runtime/webui/jobs/<job-id>/artifacts/` così i report passati rimangono accessibili.

### Esecuzione della CLI in Docker

Non hai bisogno di un ambiente Python locale per usare la CLI - è disponibile come servizio Compose dedicato, costruito dalla stessa immagine:```bash
docker compose run --rm cli -h
docker compose run --rm cli -r auto -t /scan-targets/path/to/source

Cosa contiene l'immagine

  • Backend FastAPI + frontend Web UI
  • L'intera CLI Daksh SCRA, come servizio separato
  • Playwright Chromium, per la generazione di PDF
  • Volumi persistenti reports/ e runtime/
  • Montaggi di percorsi host in modo che le scansioni possano raggiungere gli alberi sorgente dall'interno del container

Punti di montaggio principali:

MountPercorso all'interno del container
Sorgente del progetto/app
Root di scansione predefinita/scan-targets
Alias delle unità host/host, /host/c, /host/d
Montaggi WSL/mnt, /run/desktop/mnt/host

Variabili d'ambiente (configurare in .env):

VariabileDescrizione
DAKSH_PORTPorta della Web UI (predefinita: 8080)
DAKSH_SCAN_ROOTDirectory di destinazione predefinita all'interno del container
DAKSH_HOST_SOURCEPercorso host da montare come /scan-targets (predefinito: /tmp)
DAKSH_HOST_MOUNTRoot di montaggio host aggiuntivo
DAKSH_HOST_CPercorso dell'unità C: di Windows (WSL)
DAKSH_HOST_DPercorso dell'unità D: di Windows (WSL)
DAKSH_DESKTOP_MOUNTPercorso di montaggio desktop WSL
DAKSH_BROWSE_ROOTSSostituisce le root del browser di directory (separate da virgole)
DAKSH_ADMIN_USERNAMENome utente admin iniziale (predefinito: admin)
DAKSH_ADMIN_PASSWORDPassword admin iniziale - fortemente consigliato impostarla esplicitamente

Copiare .env.example in .env e impostare i percorsi e le credenziali per la propria macchina prima di eseguire Docker.


Configurazione CLI

Preferisci eseguire Daksh SCRA direttamente con Python? Ecco come configurarlo localmente.

Prerequisiti

  • Python 3.8+
  • Tutte le librerie elencate in requirements.txt

1. Scaricare Daksh SCRA```bash

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

root@kitploit:~
Oppure scarica l'ultimo zip da [https://github.com/coffeeandsecurity/DakshSCRA](https://github.com/coffeeandsecurity/DakshSCRA) e decomprimilo.

### 2. Configura un Ambiente Virtuale

> 💡 L'ambiente virtuale può essere creato in qualsiasi directory - non deve necessariamente trovarsi all'interno della cartella DakshSCRA.

**Opzione A: Configurazione in un unico passaggio (consigliata)**```bash
python setup_env.py

Questo script crea l'ambiente virtuale, installa tutte le dipendenze e installa il browser Chromium di Playwright (richiesto per l'esportazione in PDF).

Opzione B: Configurazione manuale

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

Allora installa le dipendenze:```bash cd path/to/DakshSCRA pip install -r requirements.txt playwright install chromium

root@kitploit:~
---

## Utilizzo da CLI

Usa `python` all'interno di un ambiente virtuale, oppure `python3` al di fuori di esso.

### Opzioni della riga di comando```
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]
OpzioneDescrizione
-r RULESRegole della piattaforma (es. php, java, php,java) oppure auto per il rilevamento automatico
-f FILE_TYPESSostituisce i tipi di file predefiniti per la scansione
-vLivello di verbosità (-v, -vv, -vvv)
-t TARGET_DIRDirectory del codice sorgente di destinazione
-l {R,RF}Elenca le regole della piattaforma + framework [R] oppure include i tipi di file [RF]
--reconEsegue la ricognizione (rilevamento piattaforma / framework / linguaggio)
--rs, --recon-strictRicognizione rigorosa: solo rilevamenti ad alta affidabilità (da usare con --recon)
--estimateStima lo sforzo di revisione del codice in base alla dimensione del codebase
-rpt, --report FORMATSFormati di report: html, pdf oppure html,pdf (predefinito: html)
--pdf-from-jsonGenera report PDF da output JSON esistenti senza eseguire una nuova scansione
--json-input-dir PATHDirectory dei report JSON (predefinita: ./reports/data)
--pdf-output PATHPercorso di output PDF singolo (predefinito: ./reports/scan/pdf/report.pdf)
--pdf-multi-dir PATHDirectory di output PDF multi-file (predefinita: ./reports/scan/pdf/multi-file)
--pdf-single-onlyGenera solo il PDF combinato a file singolo; salta il set multi-file per piattaforma

Esempio di utilizzo

-f (tipi di file) è opzionale. Se non specificato, DakshSCRA utilizza i tipi di file predefiniti per le piattaforme selezionate.```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:~
### Regole e Framework delle Piattaforme Supportate```bash
python dakshscra.py -l R    # List platform rules and framework mappings
python dakshscra.py -l RF   # List platform rules, framework mappings, and filetypes

Piattaforme e framework attualmente supportati:

PiattaformaFramework
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-

Per ottenere le ultime piattaforme e framework supportati, esegui sempre:```bash python dakshscra.py -l R

root@kitploit:~
---

## Riferimento alla Configurazione

### `config/tool.yaml`

Le impostazioni predefinite del runtime di Daksh SCRA sono controllate tramite `config/tool.yaml`.```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

Opzioni di configurazione dell'analizzatore:

  • analysis.run_by_default
    • true: l'analizzatore viene eseguito automaticamente durante la scansione
    • false: l'analizzatore è disabilitato a meno che non venga riabilitato nella configurazione o tramite CLI
  • analysis.include_frameworks
    • true: include le voci dell'analizzatore a livello di framework dove esiste il rilevamento del framework
    • false: solo output dell'analizzatore a livello di piattaforma
  • analysis.report_theme
    • hacker_mode: tema analizzatore moderno scuro ad alto contrasto (predefinito)
    • professional_mode: tema analizzatore moderno chiaro
    • both: genera entrambe le varianti di tema affiancate

Creazione di regole RDL

RDL (Rule Description Language) è il livello di logica delle regole esternalizzato di DakshSCRA. Nell'architettura attuale:

  • Le regole XML rimangono l'inventario delle regole e contengono metadati come name, regex, descrizioni e scan_config opzionale.
  • La logica RDL viene eseguita da core/rdl_engine.py.
  • I file di logica delle regole si trovano in rules/scanning/logic/... e vengono referenziati dall'XML tramite <rdl_ref>.
  • I valori rdl_ref vengono risolti relativamente a rules/scanning/, ad esempio: logic/php/core/some_rule.rdl -> rules/scanning/logic/php/core/some_rule.rdl
  • I risultati della logica vengono esportati nel JSON del report come metadati come logic_engine, logic_source, logic_reason, logic_trace, logic_consulted_files e logic_outcome.

La vecchia forma inline <rdl> non è più l'architettura attiva e non dovrebbe essere utilizzata per nuove regole.

Architettura RDL a colpo d'occhio```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:~
#### Sequenza di scansione

Per una regola sorgente, DakshSCRA valuta la logica in questo ordine:

1. Recon seleziona le piattaforme e i framework corrispondenti.
2. La regola XML viene caricata da `rules/scanning/platform/...`.
3. `regex` trova righe candidate o corrispondenze su interi file quando presente.
4. `exclude` rimuove il rumore ovvio per quella regola, se presente.
5. Il file `.rdl` esterno da `rdl_ref` viene valutato rispetto al testo del file corrente, al percorso del file corrente e alla radice del progetto.
6. Se lo script RDL passa, DakshSCRA mantiene il risultato e unisce i metadati della logica esportata nell'output del report.
7. Se lo script RDL fallisce, la corrispondenza viene soppressa con il motivo del fallimento RDL e i metadati della traccia di decisione.

Per le regole sui percorsi file in `filepaths.xml`, si applica lo stesso modello `rdl_ref`, ma il soggetto della corrispondenza è
il percorso relativo normalizzato invece del testo del codice sorgente. In quella modalità, RDL riceve la stringa del percorso relativo
come testo del file corrente e contesto del percorso.

#### Struttura attuale delle regole```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>

Struttura .rdl corrente```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:~
#### Layout attuale```text
rules/
└── scanning/
    ├── platform/
    │   ├── php/php.xml
    │   ├── java/java.xml
    │   └── ...
    └── logic/
        ├── common/core/
        ├── php/core/
        ├── php/framework/laravel/
        ├── mobile/android/core/
        ├── filepaths/core/
        └── ...

Semantica di esecuzione

  • WHEN PRESENT, WHEN MISSING e WHEN CURRENT_FILE_MATCHES vengono valutati rispetto al testo del file corrente.
  • WHEN FILE_NAME_IS e WHEN FILE_PATH_MATCHES vengono valutati rispetto al contesto del percorso del file corrente.
  • WHEN EXPR supporta la logica booleana sui predicati PRESENT:, MISSING: ed EXISTS:.
  • OBSERVE PROJECT_HAS_GLOB ... AS ... non blocca il finding; registra i file di progetto correlati nei metadati di traccia.
  • REPORT AS, REASON, FAIL_REASON e TRACE controllano i metadati di reporting esportati.
  • I token regex possono essere scritti sia come pattern grezzi sia come /pattern/flags, con supporto per i, m e s.

Comandi RDL supportati

ComandoComportamentoUso tipico
WHEN PRESENT <regex>Richiede che un pattern esista nel testo del file correnteRichiedere una API rischiosa o un campo sensibile co-occorrente
WHEN MISSING <regex>Richiede che un pattern sia assente dal testo del file correnteSopprimere quando esiste già una mitigazione
WHEN EXPR <expr>Valuta espressioni booleane usando PRESENT: / MISSING: / EXISTS: con &&, `
WHEN CURRENT_FILE_MATCHES <regex>Confronta con l'intero testo del file correnteRicontrollare condizioni complesse sull'intero file
WHEN FILE_NAME_IS <name>Richiede che il nome del file corrente corrisponda esattamenteLimitare regole per plist / manifest / config
WHEN FILE_PATH_MATCHES <glob>Richiede che il percorso relativo corrente corrisponda a un globRestringere regole su percorsi di framework/config
UNLESS CURRENT_FILE_MATCHES <regex>Fallisce quando l'intero file corrisponde a un pattern di esclusioneBloccare casi strutturali noti come sicuri
OBSERVE PROJECT_HAS_GLOB <glob> AS <label>Registra i file di progetto correlati nei metadati di tracciaEvidenziare file di supporto o companion
REPORT AS <outcome>Imposta l'esito della regola, di solito area_of_interestEsiti espliciti a prova di futuro
REASON <text>Motivazione mostrata quando la regola passaSpiegare perché il finding è rimasto visibile
FAIL_REASON <text>Motivazione mostrata quando la regola sopprime una corrispondenzaSpiegare perché il hit è stato filtrato
TRACE <text>Aggiunge righe di traccia per debug/decisioniSupporto a migrazione/debugging

Le espressioni booleane in WHEN EXPR supportano:

  • PRESENT:<regex>
  • MISSING:<regex>
  • EXISTS:<regex>
  • &&, ||, ! e parentesi

Esempio 1 - Gating per SQL injection in PHP

Regola XML:```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:~
External 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.

Esempio 2 - Regola manifest Android con controlli sensibili ai file

Regola XML:```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:~
External 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.

Esempio 3 - Regola area di interesse basata sul percorso file

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

root@kitploit:~
External 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.

Linee guida per l'autore

  • Mantieni regex sufficientemente ampio da individuare i candidati, poi usa RDL per filtrare il contesto.
  • Preferisci rdl_ref per tutta la logica delle regole e tieni il file .rdl accanto all'albero logico della piattaforma/framework appropriato.
  • Non aggiungere nuovi blocchi <rdl> inline.
  • Usa WHEN PRESENT / WHEN MISSING per controlli semplici e WHEN EXPR solo quando la logica è genuinamente booleana.
  • Metti le motivazioni rivolte ai revisori in REASON e le spiegazioni di soppressione in FAIL_REASON.
  • Tratta PRESENT e MISSING come controlli a livello di intero file. Una mitigazione in qualsiasi punto del file può sopprimere ogni corrispondenza proveniente da quel file.
  • Usa OBSERVE PROJECT_HAS_GLOB per arricchire i risultati con il contesto del progetto, non come gate di superamento/fallimento.
  • Mantieni stabili e limitati alla piattaforma i percorsi logic/... così che le regole XML restino sottili e il livello logico rimanga riutilizzabile.

Struttura dell'output dei report

Tutti gli output vengono scritti nella directory reports/:``` 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:~
I file di runtime (stato della scansione, log, inventario) vengono scritti sotto `runtime/`.

Quando si esegue tramite l'interfaccia Web, gli output di ciascun job vengono inoltre salvati come snapshot sotto `runtime/webui/jobs/<job-id>/artifacts/` (vedi [Web UI (Docker)](#web-ui-docker)).

---

## Autore

| | |
|---|---|
| Sito web | [coffeeandsecurity.com](https://www.coffeeandsecurity.com) |
| Email | [email protected] |
| Twitter / X | [@coffeensecurity](https://x.com/coffeensecurity) |
| Sorgente | [github.com/coffeeandsecurity/DakshSCRA](https://github.com/coffeeandsecurity/DakshSCRA) |
| Licenza | GNU General Public License v3.0 (GPL-3.0) |

Se DakshSCRA ha aiutato il tuo team a risparmiare tempo, sforzo o costi significativi, a ridurre la dipendenza da costosi strumenti commerciali, a migliorare la copertura delle revisioni o a rendere la revisione del codice più strutturata ed efficace, non esitare a contattarmi e condividere la tua esperienza. Sono sempre aperto a feedback ponderati e conversazioni interessanti.

Hai trovato un bug o vuoi contribuire? Apri un issue o una pull request su GitHub.
Scarica lo strumento
--skip-analysisDisabilita la fase di analisi per questa esecuzione
--locConta le righe di codice effettive
--baseline-file PATHFile di baseline per la soppressione (JSON)
--baseline-generateGenera la baseline di soppressione dai risultati attuali
--no-baselineDisabilita la soppressione tramite baseline per questa esecuzione
--review-config PATHFile di triage dei risultati (JSON); sopprime i falsi positivi già revisionati dai report
--resume-scanRiprende una scansione precedentemente interrotta dal file di stato
--state-file PATHPercorso personalizzato del file di stato / checkpoint della scansione
--no-stateDisabilita il checkpointing dello stato della scansione per questa esecuzione
--stateForza l'abilitazione del checkpointing dello stato della scansione per questa esecuzione