Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
DakshSCRA — Outil d'analyse statique de code sensible au framework pour une revue automatisée du code source avec des règles spécifiques à la plateforme, analyse de flux de données (taint), estimation d'effort, et lignes de base de suppression. | Kitploit
Outils/GitHubGitHub/coffeeandsecurity/dakshscra
Analyse StatiqueScanners de VulnérabilitésAnalyse Statique de Code (SAST)Analyse des VulnérabilitésAnalyse de CodeSécurité WebTests d'IntrusionDevSecOpsSécurité MobileApprentissage et Éducation
GitHubcoffeeandsecurity/dakshscra
45790il y a 16 joursVérifié par Kitploit

DakshSCRA

Outil d'analyse statique de code sensible au framework pour une revue automatisée du code source avec des règles spécifiques à la plateforme, analyse de flux de données (taint), estimation d'effort, et lignes de base de suppression.

Voir le dépôt

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Daksh SCRA (Source Code Review Assist)```

Author:

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

Daksh SCRA (Source Code Review Assist) est conçu pour améliorer l'efficacité du processus de revue de code source, en offrant une approche bien structurée et organisée pour les réviseurs de code.

Plutôt que de signaler indistinctement tout comme un problème potentiel, Daksh SCRA favorise une analyse réfléchie, incitant à l'investigation et à la confirmation des problèmes potentiels. Cette approche réduit la précipitation à étiqueter chaque préoccupation potentielle comme un bug, diminuant ainsi la confusion et le temps perdu sur les faux positifs.

### Débuts

Daksh SCRA a été initialement présenté lors d'une session de formation à la revue de code source à Black Hat USA 2022 (6-9 août), où il a été subtilement introduit à un public spécifique. Ses débuts publics officiels ont eu lieu à Black Hat USA 2023 à Las Vegas.

## Fonctionnalités et caractéristiques

- **Identifie les zones d'intérêt dans le code source :** Encourage une investigation et une confirmation ciblées plutôt que d'étiqueter indistinctement tout comme un bug.
- **Identifie les zones d'intérêt dans les chemins de fichiers (première mondiale) :** Reconnaît les motifs dans les chemins de fichiers pour repérer les sections pertinentes à examiner.
- **Reconnaissance au niveau logiciel pour identifier les technologies utilisées :** Identifie les technologies du projet, permettant aux réviseurs de code d'effectuer des analyses précises avec les règles appropriées.
- **Estimation scientifique automatisée de l'effort pour la revue de code (première mondiale) :** Fournit une approche mesurable pour estimer l'effort requis pour une revue de code.
- **Analyse adaptée au framework :** Applique automatiquement les règles spécifiques au framework lorsque celui du projet est détecté.
- **Rapports d'analyse de flux de données (taint) :** Rapports HTML de flux de données par plateforme avec des thèmes mode hacker et mode professionnel.
- **RDL (Rule Description Language) :** Logique de règles externe référencée avec `rdl_ref` et exécutée par le pipeline `core/rdl_engine.py` - prend en charge les portes sensibles aux fichiers, les expressions booléennes, les observations du projet et les métadonnées de logique exportées dans les rapports.
- **État d'analyse / Reprise :** Enregistrez les analyses longues et reprenez-les après une interruption.
- **Base de référence de suppression :** Générez et appliquez une base de référence des faux positifs connus pour les supprimer des futurs rapports.
- **Interface Web :** Lanceur d'analyse basé sur navigateur avec flux de console en temps réel et navigateur d'artefacts de tâches.

> Des améliorations actives sont en cours. De nombreuses nouvelles fonctionnalités et améliorations sont prévues pour les prochaines versions.

N'hésitez pas à contribuer à la mise à jour ou à l'ajout de nouvelles règles et au développement futur.

Si vous trouvez des bugs, signalez-les à [[email protected]](mailto:[email protected]).

Documentation détaillée : [https://dakshlabs.com/#docs](https://dakshlabs.com/#docs)

---

## Pour commencer

Il existe deux façons d'exécuter Daksh SCRA - choisissez celle qui correspond à votre flux de travail :

| | Idéal pour | Accéder à |
|---|---|---|
| 🌐 **Interface Web (Docker)** | La façon la plus simple de démarrer - une commande, un tableau de bord navigateur, une progression d'analyse en direct et un navigateur de rapports/artefacts. Recommandé pour la plupart des utilisateurs. | [Interface Web (Docker)](#web-ui-docker) |
| 💻 **CLI (Python)** | Scripts, pipelines CI ou exécution d'analyses sans Docker. | [Configuration CLI](#cli-setup) |

Les deux chemins exécutent exactement le même moteur d'analyse - l'interface Web est un front-end navigateur au-dessus de la même CLI, donc les résultats sont identiques dans les deux cas.

---

## Interface Web (Docker)

Le moyen le plus rapide d'exécuter Daksh SCRA est via son interface Web basée sur navigateur, lancée avec une seule commande Docker Compose. Elle vous offre un lanceur d'analyse, un flux de console en direct et un historique consultable des rapports passés, sans nécessiter d'environnement Python local.

La configuration Docker exécute l'interface Web et la CLI comme des services indépendants construits à partir de la même image, vous pouvez donc utiliser l'un ou l'autre (ou les deux) à partir du même conteneur.

### Lancer l'interface Web

Mode avant-plan (les journaux sont diffusés dans votre terminal) :```bash
docker compose up --build

Mode détaché / arrière-plan :```bash docker compose up --build -d

root@kitploit:~
Ensuite, ouvrez [http://localhost:8080](http://localhost:8080).

Pour utiliser un autre port :```bash
DAKSH_PORT=9090 docker compose up

Arrêtez la pile avec :```bash docker compose down

root@kitploit:~
### Connexion

L'interface Web nécessite un compte. Au premier démarrage, un compte administrateur initial est créé à partir de `DAKSH_ADMIN_USERNAME` / `DAKSH_ADMIN_PASSWORD` (définissez-les dans `.env`) ; si `DAKSH_ADMIN_PASSWORD` n'est pas défini, un mot de passe aléatoire est généré et affiché une seule fois dans le journal de démarrage de l'API — conservez-le, car il ne peut pas être récupéré par la suite.

Vous devrez définir votre propre mot de passe (et, éventuellement, votre nom d'utilisateur) lors de votre première connexion. Un compte administrateur peut créer d'autres comptes via le point de terminaison d'API `POST /api/v1/auth/users` (aucune interface dédiée pour cela pour l'instant). Consultez `.env.example` pour la liste complète des paramètres liés à l'authentification (durée de session, sécurité des cookies, CORS).

### Ce que vous obtenez

- Générateur de commandes réactif pour les modes scan, recon, estimate, recon+estimate, list et PDF-depuis-JSON
- Flux de console en temps réel et progression en direct par étape pendant l'exécution
- Instantanés d'artefacts par tâche pour les sorties HTML / PDF / JSON
- Navigation rapide dans le navigateur entre le formulaire d'exécution, le flux en direct, les artefacts et les tâches récentes
- Navigateur de répertoires intégré pour sélectionner les chemins cibles (compatible OS : Windows, macOS, Linux / Docker)

Sous le capot, la CLI reste la source de vérité — elle effectue toutes les analyses et génère chaque sortie HTML / PDF / JSON. L'interface Web exécute une tâche active à la fois et capture les sorties de chaque tâche terminée dans `runtime/webui/jobs/<job-id>/artifacts/` afin que les rapports passés restent accessibles.

### Exécution de la CLI dans Docker

Vous n'avez pas non plus besoin d'un environnement Python local pour utiliser la CLI — elle est disponible en tant que service Compose dédié, construit à partir de la même image :```bash
docker compose run --rm cli -h
docker compose run --rm cli -r auto -t /scan-targets/path/to/source

Contenu de l'image

  • Backend FastAPI + interface Web frontend
  • Le CLI complet Daksh SCRA, en tant que service séparé
  • Playwright Chromium, pour la génération de PDF
  • Volumes persistants reports/ et runtime/
  • Montages de chemins hôtes pour que les scans puissent atteindre les arborescences source depuis l'intérieur du conteneur

Points de montage clés :

MontageChemin dans le conteneur
Source du projet/app
Racine de scan par défaut/scan-targets
Alias de lecteurs hôtes/host, /host/c, /host/d
Montages WSL/mnt, /run/desktop/mnt/host

Variables d'environnement (à configurer dans .env) :

VariableDescription
DAKSH_PORTPort de l'interface Web (défaut : 8080)
DAKSH_SCAN_ROOTRépertoire cible par défaut dans le conteneur
DAKSH_HOST_SOURCEChemin hôte à monter comme /scan-targets (défaut : /tmp)
DAKSH_HOST_MOUNTRacine de montage hôte supplémentaire
DAKSH_HOST_CChemin du lecteur C: Windows (WSL)
DAKSH_HOST_DChemin du lecteur D: Windows (WSL)
DAKSH_DESKTOP_MOUNTChemin de montage du bureau WSL
DAKSH_BROWSE_ROOTSRemplace les racines du navigateur de répertoires (séparées par des virgules)
DAKSH_ADMIN_USERNAMENom d'utilisateur admin initial (défaut : admin)
DAKSH_ADMIN_PASSWORDMot de passe admin initial - fortement recommandé de le définir explicitement

Copiez .env.example vers .env et définissez les chemins et identifiants pour votre machine avant d'exécuter Docker.


Configuration du CLI

Vous préférez exécuter Daksh SCRA directement avec Python ? Voici comment le configurer localement.

Prérequis

  • Python 3.8+
  • Toutes les bibliothèques listées dans requirements.txt

1. Télécharger Daksh SCRA```bash

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

root@kitploit:~
Ou téléchargez la dernière archive zip depuis [https://github.com/coffeeandsecurity/DakshSCRA](https://github.com/coffeeandsecurity/DakshSCRA) et décompressez-la.

### 2. Configurer un environnement virtuel

> 💡 L’environnement virtuel peut être créé dans n’importe quel répertoire — il n’est pas nécessaire qu’il se trouve dans le dossier DakshSCRA.

**Option A : Configuration en une étape (recommandée)**```bash
python setup_env.py

Ce script crée l'environnement virtuel, installe toutes les dépendances et installe le navigateur Chromium de Playwright (requis pour l'export PDF).

Option B : Configuration manuelle

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

Alors installez les dépendances :```bash cd path/to/DakshSCRA pip install -r requirements.txt playwright install chromium

root@kitploit:~
---

## Utilisation en ligne de commande

Utilisez `python` dans un environnement virtuel, ou `python3` en dehors de celui-ci.

### Options de la ligne de commande```
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]
OptionDescription
-r RULESRègles de la plateforme (p. ex. php, java, php,java) ou auto pour la détection automatique
-f FILE_TYPESRemplace les types de fichiers par défaut pour l'analyse
-vNiveau de verbosité (-v, -vv, -vvv)
-t TARGET_DIRRépertoire du code source cible
-l {R,RF}Liste les règles de la plateforme + frameworks [R] ou inclut les types de fichiers [RF]
--reconExécute la reconnaissance (détection de la plateforme / du framework / du langage)
--rs, --recon-strictReconnaissance stricte : détections à haute confiance uniquement (à utiliser avec --recon)
--estimateEstime l'effort de revue de code en fonction de la taille du codebase
-rpt, --report FORMATSFormats de rapport : html, pdf, ou html,pdf (par défaut : html)
--pdf-from-jsonGénère des rapports PDF à partir de sorties JSON existantes sans nouvelle analyse
--json-input-dir PATHRépertoire des rapports JSON (par défaut : ./reports/data)
--pdf-output PATHChemin de sortie PDF unique (par défaut : ./reports/scan/pdf/report.pdf)
--pdf-multi-dir PATHRépertoire de sortie PDF multi-fichiers (par défaut : ./reports/scan/pdf/multi-file)
--pdf-single-onlyGénère uniquement le PDF combiné en un seul fichier ; ignore l'ensemble multi-fichiers par plateforme

Exemple d'utilisation

-f (types de fichiers) est facultatif. S'il n'est pas spécifié, DakshSCRA utilise les types de fichiers par défaut pour la ou les plateformes sélectionnées.```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:~
### Règles et frameworks de plateformes pris en charge```bash
python dakshscra.py -l R    # List platform rules and framework mappings
python dakshscra.py -l RF   # List platform rules, framework mappings, and filetypes

Plateformes et frameworks actuellement pris en charge :

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

Pour obtenir la liste la plus récente des plateformes et frameworks pris en charge, exécutez toujours :```bash python dakshscra.py -l R

root@kitploit:~
---

## Référence de configuration

### `config/tool.yaml`

Les valeurs par défaut du runtime de Daksh SCRA sont contrôlées via `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

Options de configuration de l'analyseur :

  • analysis.run_by_default
    • true : l'analyseur s'exécute automatiquement lors de l'analyse
    • false : l'analyseur est désactivé sauf s'il est réactivé dans la configuration ou via la CLI
  • analysis.include_frameworks
    • true : inclure les entrées d'analyseur au niveau des frameworks lorsque la détection de framework existe
    • false : sortie de l'analyseur au niveau de la plateforme uniquement
  • analysis.report_theme
    • hacker_mode : thème d'analyseur moderne sombre à contraste élevé (par défaut)
    • professional_mode : thème d'analyseur moderne clair
    • both : générer les deux variantes de thème côte à côte

Création de règles RDL

RDL (Rule Description Language) est la couche de logique de règles externalisée de DakshSCRA. Dans l'architecture actuelle :

  • Les règles XML restent l'inventaire des règles et portent des métadonnées telles que name, regex, des descriptions et un scan_config facultatif.
  • La logique RDL est exécutée par core/rdl_engine.py.
  • Les fichiers de logique de règles se trouvent sous rules/scanning/logic/... et sont référencés depuis le XML à l'aide de <rdl_ref>.
  • Les valeurs rdl_ref sont résolues par rapport à rules/scanning/, par exemple : logic/php/core/some_rule.rdl -> rules/scanning/logic/php/core/some_rule.rdl
  • Les résultats de logique sont exportés dans le JSON du rapport sous forme de métadonnées telles que logic_engine, logic_source, logic_reason, logic_trace, logic_consulted_files et logic_outcome.

L'ancienne forme inline <rdl> ne fait plus partie de l'architecture active et ne doit pas être utilisée pour les nouvelles règles.

Architecture RDL en un coup d'œil```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:~
#### Séquence de scan

Pour une règle source, DakshSCRA évalue la logique dans cet ordre :

1. Recon sélectionne les plateformes et frameworks correspondants.
2. La règle XML est chargée depuis `rules/scanning/platform/...`.
3. `regex` identifie les lignes candidates ou les correspondances sur l'ensemble du fichier lorsqu'elles sont présentes.
4. `exclude` supprime le bruit évident pour cette règle, s'il est présent.
5. Le fichier externe `.rdl` de `rdl_ref` est évalué par rapport au texte du fichier actuel, au chemin du fichier actuel et à la racine du projet.
6. Si le script RDL réussit, DakshSCRA conserve la découverte et fusionne les métadonnées de logique exportées dans la sortie du rapport.
7. Si le script RDL échoue, la correspondance est supprimée avec la raison de l'échec RDL et les métadonnées de trace de décision.

Pour les règles de chemin de fichier dans `filepaths.xml`, le même modèle `rdl_ref` s'applique, mais le sujet de correspondance est
le chemin relatif normalisé au lieu du texte du code source. Dans ce mode, RDL reçoit la chaîne du chemin relatif
comme texte du fichier actuel et contexte de chemin.

#### Structure actuelle des règles```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>

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

Sémantique d'exécution

  • WHEN PRESENT, WHEN MISSING et WHEN CURRENT_FILE_MATCHES s'évaluent par rapport au texte du fichier courant.
  • WHEN FILE_NAME_IS et WHEN FILE_PATH_MATCHES s'évaluent par rapport au contexte du chemin du fichier courant.
  • WHEN EXPR prend en charge la logique booléenne sur les prédicats PRESENT:, MISSING: et EXISTS:.
  • OBSERVE PROJECT_HAS_GLOB ... AS ... ne conditionne pas le résultat ; il enregistre les fichiers projet associés dans les métadonnées de trace.
  • REPORT AS, REASON, FAIL_REASON et TRACE contrôlent les métadonnées de rapport exportées.
  • Les jetons regex peuvent être écrits soit comme des motifs bruts, soit comme /motif/drapeaux, avec prise en charge de i, m et s.

Commandes RDL prises en charge

CommandeComportementUtilisation typique
WHEN PRESENT <regex>Exiger qu'un motif existe dans le texte du fichier courantExiger une API risquée ou un champ sensible co-occurrent
WHEN MISSING <regex>Exiger qu'un motif soit absent du texte du fichier courantSupprimer lorsqu'une atténuation existe déjà
WHEN EXPR <expr>Évaluer des expressions booléennes à l'aide de PRESENT: / MISSING: / EXISTS: avec &&, `
WHEN CURRENT_FILE_MATCHES <regex>Correspondre au texte complet du fichier courantRevérifier des conditions complexes sur l'ensemble du fichier
WHEN FILE_NAME_IS <nom>Exiger que le nom du fichier courant corresponde exactementLimiter les règles plist / manifest / config
WHEN FILE_PATH_MATCHES <glob>Exiger que le chemin relatif courant corresponde à un globRestreindre les règles de chemin framework/config
UNLESS CURRENT_FILE_MATCHES <regex>Échouer lorsque le fichier entier correspond à un motif d'exclusionBloquer les cas structurels connus comme sûrs
OBSERVE PROJECT_HAS_GLOB <glob> AS <étiquette>Enregistrer les fichiers projet associés dans les métadonnées de traceMettre en évidence les fichiers de configuration ou compagnons associés
REPORT AS <résultat>Définir le résultat de la règle, généralement area_of_interestRésultats explicites pérennes
REASON <texte>Raison affichée lorsque la règle passeExpliquer pourquoi le résultat est resté visible
FAIL_REASON <texte>Raison affichée lorsque la règle supprime une correspondanceExpliquer pourquoi la correspondance a été filtrée
TRACE <texte>Ajouter des lignes de trace de décision/débogagePrise en charge de la migration/débogage

Les expressions booléennes dans WHEN EXPR prennent en charge :

  • PRESENT:<regex>
  • MISSING:<regex>
  • EXISTS:<regex>
  • &&, ||, ! et les parenthèses

Exemple 1 - Conditionnement d'injection SQL PHP

Règle 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.

Exemple 2 - Règle de manifeste Android avec vérifications tenant compte des fichiers

Règle 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.

Exemple 3 - Règle de zone d'intérêt basée sur le chemin de fichier

Règle 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.

Directives de rédaction

  • Gardez regex suffisamment large pour détecter les candidats, puis utilisez RDL pour filtrer le contexte.
  • Privilégiez rdl_ref pour toute la logique des règles et conservez le fichier .rdl à côté de l’arborescence de logique de la plateforme/cadre appropriée.
  • N’ajoutez pas de nouveaux blocs <rdl> en ligne.
  • Utilisez WHEN PRESENT / WHEN MISSING pour les portes simples et WHEN EXPR uniquement lorsque la logique est réellement booléenne.
  • Placez le raisonnement destiné aux réviseurs dans REASON et les explications de suppression dans FAIL_REASON.
  • Traitez PRESENT et MISSING comme des vérifications à l’échelle du fichier. Une atténuation n’importe où dans le fichier peut supprimer chaque correspondance de ce fichier.
  • Utilisez OBSERVE PROJECT_HAS_GLOB pour enrichir les résultats avec le contexte du projet, et non comme une porte de réussite/échec.
  • Gardez les chemins logic/... stables et limités à la plateforme afin que les règles XML restent légères et que la couche logique reste réutilisable.

Structure de sortie des rapports

Toutes les sorties sont écrites sous le répertoire 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:~
Les fichiers d’exécution (état d’analyse, journaux, inventaire) sont écrits sous `runtime/`.

Lors de l’exécution via l’interface Web, les sorties de chaque tâche sont en outre enregistrées sous forme d’instantanés dans `runtime/webui/jobs/<job-id>/artifacts/` (voir [Interface Web (Docker)](#web-ui-docker)).

---

## Auteur

| | |
|---|---|
| Site web | [coffeeandsecurity.com](https://www.coffeeandsecurity.com) |
| E-mail | [email protected] |
| Twitter / X | [@coffeensecurity](https://x.com/coffeensecurity) |
| Source | [github.com/coffeeandsecurity/DakshSCRA](https://github.com/coffeeandsecurity/DakshSCRA) |
| Licence | Licence publique générale GNU v3.0 (GPL-3.0) |

Si DakshSCRA a aidé votre équipe à économiser un temps, des efforts ou des coûts considérables, à réduire sa dépendance aux outils commerciaux onéreux, à améliorer la couverture des revues, ou à rendre la revue de code plus structurée et efficace, n’hésitez pas à nous contacter et à partager votre expérience. Je suis toujours ouvert aux retours réfléchis et aux conversations intéressantes.

Vous avez trouvé un bug ou souhaitez contribuer ? Ouvrez une issue ou une pull request sur GitHub.
Télécharger l’outil
--skip-analysisDésactive l'étape d'analyse pour cette exécution
--locCompte les lignes de code effectives
--baseline-file PATHFichier de référence de suppression (JSON)
--baseline-generateGénère une référence de suppression à partir des résultats actuels
--no-baselineDésactive la suppression par référence pour cette exécution
--review-config PATHFichier de triage des résultats (JSON) ; supprime des rapports les faux positifs déjà examinés
--resume-scanReprend une analyse précédemment interrompue à partir du fichier d'état
--state-file PATHChemin personnalisé du fichier d'état / point de contrôle d'analyse
--no-stateDésactive le point de contrôle d'état d'analyse pour cette exécution
--stateForce l'activation du point de contrôle d'état d'analyse pour cette exécution