Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
DakshSCRA — Herramienta de análisis estático de código sensible al framework para la revisión automatizada del código fuente con reglas específicas de plataforma, análisis de contaminación, estimación de esfuerzo y líneas de base de supresión. | Kitploit
Herramientas/GitHubGitHub/coffeeandsecurity/dakshscra
Análisis EstáticoEscáneres de VulnerabilidadesAnálisis Estático de Código (SAST)Análisis de VulnerabilidadesAnálisis de CódigoSeguridad WebPruebas de PenetraciónDevSecOpsSeguridad Móvil
Aprendizaje y Educación
GitHubcoffeeandsecurity/dakshscra

DakshSCRA

Herramienta de análisis estático de código sensible al framework para la revisión automatizada del código fuente con reglas específicas de plataforma, análisis de contaminación, estimación de esfuerzo y líneas de base de supresión.

Ver Repositorio
45791hace 17 díasRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Daksh SCRA (Asistente de Revisión de Código Fuente)```

Author:

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

Daksh SCRA (Source Code Review Assist) está diseñado para mejorar la eficiencia del proceso de revisión de código fuente, proporcionando un enfoque bien estructurado y organizado para los revisores de código.

En lugar de marcar indiscriminadamente todo como un posible problema, Daksh SCRA promueve un análisis reflexivo, instando a la investigación y confirmación de problemas potenciales. Este enfoque reduce la carrera por etiquetar cada posible preocupación como un error, recortando la confusión y el tiempo perdido en falsos positivos.

### Debut

Daksh SCRA se presentó inicialmente durante una sesión de formación sobre revisión de código fuente en Black Hat USA 2022 (6-9 de agosto), donde se mostró de forma discreta a un público específico. Su debut público oficial tuvo lugar en Black Hat USA 2023 en Las Vegas.

## Características y funcionalidades

- **Identifica áreas de interés en el código fuente:** Fomenta una investigación y confirmación centradas en lugar de etiquetar indiscriminadamente todo como un error.
- **Identifica áreas de interés en rutas de archivo (primicia mundial):** Reconoce patrones en las rutas de archivo para señalar secciones relevantes para la revisión.
- **Reconocimiento a nivel de software para identificar tecnologías utilizadas:** Identifica las tecnologías del proyecto, lo que permite a los revisores de código realizar escaneos precisos con reglas adecuadas.
- **Estimación científica automatizada del esfuerzo para la revisión de código (primicia mundial):** Proporciona un enfoque medible para estimar el esfuerzo requerido para una revisión de código.
- **Escaneo consciente del framework:** Aplica automáticamente reglas específicas del framework cuando se detecta el framework del proyecto.
- **Informes de análisis de taint:** Informes HTML de flujo de taint por plataforma con temas de modo hacker y modo profesional.
- **RDL (Rule Description Language):** Lógica de reglas externa referenciada con `rdl_ref` y ejecutada por el pipeline de `core/rdl_engine.py`: admite compuertas conscientes de archivos, expresiones booleanas, observaciones del proyecto y metadatos de lógica exportados en los informes.
- **Estado de escaneo / reanudación:** Marca escaneos largos y reanuda tras una interrupción.
- **Línea base de supresión:** Genera y aplica una línea base de falsos positivos conocidos para suprimirlos de futuros informes.
- **Interfaz web:** Lanzador de escaneos basado en navegador con feed de consola en tiempo real y navegador de artefactos de trabajos.

> Las mejoras activas están en curso. Se planean múltiples funciones y mejoras nuevas para próximas versiones.

Siéntete libre de contribuir a la actualización o adición de nuevas reglas y al desarrollo futuro.

Si encuentras algún error, repórtalo a [[email protected]](mailto:[email protected]).

Documentación detallada: [https://dakshlabs.com/#docs](https://dakshlabs.com/#docs)

---

## Primeros pasos

Hay dos formas de ejecutar Daksh SCRA: elige la que mejor se adapte a tu flujo de trabajo:

| | Mejor para | Ir a |
|---|---|---|
| 🌐 **Interfaz web (Docker)** | La forma más fácil de empezar: un solo comando, un panel en el navegador, progreso de escaneo en vivo y un navegador de informes/artefactos. Recomendado para la mayoría de los usuarios. | [Interfaz web (Docker)](#web-ui-docker) |
| 💻 **CLI (Python)** | Scripting, pipelines de CI o ejecución de escaneos sin Docker. | [Configuración CLI](#cli-setup) |

Ambas rutas ejecutan exactamente el mismo motor de escaneo: la interfaz web es un frontend de navegador sobre la misma CLI, por lo que los resultados son idénticos en ambos casos.

---

## Interfaz web (Docker)

La forma más rápida de ejecutar Daksh SCRA es a través de su interfaz web basada en navegador, lanzada con un solo comando de Docker Compose. Te ofrece un lanzador de escaneos, un feed de consola en vivo y un historial navegable de informes anteriores, sin necesidad de un entorno Python local.

La configuración de Docker ejecuta la interfaz web y la CLI como servicios independientes construidos a partir de la misma imagen, por lo que puedes usar cualquiera de los dos (o ambos) desde el mismo contenedor.

### Lanzar la interfaz web

Modo en primer plano (los registros se transmiten a tu terminal):```bash
docker compose up --build

Modo desacoplado / en segundo plano:```bash docker compose up --build -d

root@kitploit:~
Luego abre [http://localhost:8080](http://localhost:8080).

Para usar un puerto diferente:```bash
DAKSH_PORT=9090 docker compose up

Detén la pila con:```bash docker compose down

root@kitploit:~
### Iniciar sesión

La interfaz web requiere una cuenta. En el primer arranque, se crea una cuenta de administrador inicial a partir de `DAKSH_ADMIN_USERNAME` / `DAKSH_ADMIN_PASSWORD` (configúralas en `.env`); si `DAKSH_ADMIN_PASSWORD` se deja sin definir, se genera una contraseña aleatoria y se imprime una sola vez en el registro de inicio de la API: guárdala, ya que no se puede recuperar después.

Se te pedirá que establezcas tu propia contraseña (y, opcionalmente, nombre de usuario) la primera vez que inicies sesión. Una cuenta de administrador puede crear más cuentas mediante el endpoint de API `POST /api/v1/auth/users` (aún no hay una interfaz dedicada para esto). Consulta `.env.example` para ver la lista completa de ajustes relacionados con la autenticación (duración de la sesión, seguridad de cookies, CORS).

### Qué obtienes

- Constructor de comandos receptivo para los modos de escaneo, reconocimiento, estimación, reconocimiento+estimación, lista y PDF desde JSON
- Fuente de consola en tiempo real y progreso en vivo por etapa durante la ejecución
- Instantáneas de artefactos por trabajo para salidas HTML / PDF / JSON
- Navegación rápida en el navegador entre el formulario de ejecución, la fuente en vivo, los artefactos y los trabajos recientes
- Explorador de directorios integrado para seleccionar rutas de destino (consciente del sistema operativo: Windows, macOS, Linux / Docker)

Internamente, la CLI sigue siendo la fuente de verdad: realiza todo el escaneo y genera cada salida HTML / PDF / JSON. La interfaz web ejecuta un trabajo activo a la vez y guarda instantáneas de las salidas de cada trabajo completado en `runtime/webui/jobs/<job-id>/artifacts/` para que los informes anteriores sigan siendo accesibles.

### Ejecutar la CLI en Docker

Tampoco necesitas un entorno Python local para usar la CLI: está disponible como su propio servicio de Compose, construido a partir de la misma imagen:```bash
docker compose run --rm cli -h
docker compose run --rm cli -r auto -t /scan-targets/path/to/source

Qué hay en la imagen

  • Backend FastAPI + frontend de interfaz web
  • La CLI completa de Daksh SCRA, como servicio independiente
  • Playwright Chromium, para la generación de PDF
  • Volúmenes persistentes reports/ y runtime/
  • Montajes de rutas del host para que los escaneos puedan acceder a los árboles de código fuente desde dentro del contenedor

Puntos de montaje clave:

MontajeRuta dentro del contenedor
Código fuente del proyecto/app
Raíz de escaneo predeterminada/scan-targets
Alias de unidades del host/host, /host/c, /host/d
Montajes WSL/mnt, /run/desktop/mnt/host

Variables de entorno (configúralas en .env):

VariableDescripción
DAKSH_PORTPuerto de la interfaz web (predeterminado: 8080)
DAKSH_SCAN_ROOTDirectorio de destino predeterminado dentro del contenedor
DAKSH_HOST_SOURCERuta del host para montar como /scan-targets (predeterminado: /tmp)
DAKSH_HOST_MOUNTRaíz de montaje adicional del host
DAKSH_HOST_CRuta de la unidad C: de Windows (WSL)
DAKSH_HOST_DRuta de la unidad D: de Windows (WSL)
DAKSH_DESKTOP_MOUNTRuta de montaje del escritorio WSL
DAKSH_BROWSE_ROOTSAnula las raíces del navegador de directorios (separadas por comas)
DAKSH_ADMIN_USERNAMENombre de usuario administrador inicial (predeterminado: admin)
DAKSH_ADMIN_PASSWORDContraseña de administrador inicial: se recomienda encarecidamente establecerla explícitamente

Copia .env.example a .env y establece las rutas y credenciales para tu máquina antes de ejecutar Docker.


Configuración de la CLI

¿Prefieres ejecutar Daksh SCRA directamente con Python? Así es como se configura localmente.

Requisitos previos

  • Python 3.8+
  • Todas las bibliotecas listadas en requirements.txt

1. Descargar Daksh SCRA```bash

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

root@kitploit:~
O descarga el último zip desde [https://github.com/coffeeandsecurity/DakshSCRA](https://github.com/coffeeandsecurity/DakshSCRA) y descomprímelo.

### 2. Configurar un Entorno Virtual

> 💡 El entorno virtual se puede crear en cualquier directorio: no es necesario que esté dentro de la carpeta DakshSCRA.

**Opción A: Configuración en un solo paso (recomendada)**```bash
python setup_env.py

Este script crea el entorno virtual, instala todas las dependencias e instala el navegador Chromium de Playwright (necesario para la exportación a PDF).

Opción B: Configuración manual

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

Entonces instala las dependencias:```bash cd path/to/DakshSCRA pip install -r requirements.txt playwright install chromium

root@kitploit:~
---

## Uso de la CLI

Usa `python` dentro de un entorno virtual, o `python3` fuera de uno.

### Opciones de la línea de comandos```
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]
OpciónDescripción
-r RULESReglas de la plataforma (p. ej., php, java, php,java) o auto para detección automática
-f FILE_TYPESSobrescribir los tipos de archivo predeterminados para el escaneo
-vNivel de verbosidad (-v, -vv, -vvv)
-t TARGET_DIRDirectorio del código fuente objetivo
-l {R,RF}Listar reglas de la plataforma + frameworks [R] o incluir tipos de archivo [RF]
--reconEjecutar reconocimiento (detección de plataforma / framework / lenguaje)
--rs, --recon-strictReconocimiento estricto: solo detecciones de alta confianza (usar con --recon)
--estimateEstimar el esfuerzo de revisión de código según el tamaño del código base
-rpt, --report FORMATSFormatos de informe: html, pdf o html,pdf (predeterminado: html)
--pdf-from-jsonGenerar informe(s) PDF a partir de salidas JSON existentes sin volver a escanear
--json-input-dir PATHDirectorio de informes JSON (predeterminado: ./reports/data)
--pdf-output PATHRuta de salida del PDF único (predeterminado: ./reports/scan/pdf/report.pdf)
--pdf-multi-dir PATHDirectorio de salida del PDF de varios archivos (predeterminado: ./reports/scan/pdf/multi-file)
--pdf-single-onlyGenerar solo el PDF combinado de un solo archivo; omitir el conjunto de varios archivos por plataforma

Ejemplo de uso

-f (tipos de archivo) es opcional. Si no se especifica, DakshSCRA usa los tipos de archivo predeterminados para la(s) plataforma(s) seleccionada(s).```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:~
### Reglas y Frameworks de Plataforma Compatibles```bash
python dakshscra.py -l R    # List platform rules and framework mappings
python dakshscra.py -l RF   # List platform rules, framework mappings, and filetypes

Plataformas y frameworks compatibles actualmente:

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

Para obtener las plataformas y frameworks compatibles más recientes, ejecuta siempre:```bash python dakshscra.py -l R

root@kitploit:~
---

## Referencia de Configuración

### `config/tool.yaml`

Los valores predeterminados del tiempo de ejecución de Daksh SCRA se controlan a través de `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

Opciones de configuración del analizador:

  • analysis.run_by_default
    • true: el analizador se ejecuta automáticamente durante el escaneo
    • false: el analizador está deshabilitado a menos que se vuelva a habilitar en la configuración o mediante CLI
  • analysis.include_frameworks
    • true: incluir entradas del analizador a nivel de framework donde exista detección de framework
    • false: solo salida del analizador a nivel de plataforma
  • analysis.report_theme
    • hacker_mode: tema de analizador moderno oscuro de alto contraste (predeterminado)
    • professional_mode: tema de analizador moderno claro
    • both: generar ambas variantes de tema lado a lado

Autoría de reglas RDL

RDL (Lenguaje de Descripción de Reglas) es la capa de lógica de reglas externalizada de DakshSCRA. En la arquitectura actual:

  • Las reglas XML siguen siendo el inventario de reglas y contienen metadatos como name, regex, descripciones y scan_config opcional.
  • La lógica RDL se ejecuta mediante core/rdl_engine.py.
  • Los archivos de lógica de reglas se encuentran en rules/scanning/logic/... y se referencian desde XML usando <rdl_ref>.
  • Los valores de rdl_ref se resuelven relativos a rules/scanning/, por ejemplo: logic/php/core/some_rule.rdl -> rules/scanning/logic/php/core/some_rule.rdl
  • Los resultados de la lógica se exportan al JSON del informe como metadatos como logic_engine, logic_source, logic_reason, logic_trace, logic_consulted_files y logic_outcome.

La forma antigua en línea <rdl> ya no es la arquitectura activa y no debe usarse para nuevas reglas.

Arquitectura RDL de un vistazo```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:~
#### Secuencia de escaneo

Para una regla de origen, DakshSCRA evalúa la lógica en este orden:

1. Recon selecciona las plataformas y frameworks coincidentes.
2. La regla XML se carga desde `rules/scanning/platform/...`.
3. `regex` encuentra líneas candidatas o coincidencias de archivo completo cuando están presentes.
4. `exclude` elimina el ruido obvio para esa regla, si está presente.
5. El archivo `.rdl` externo de `rdl_ref` se evalúa contra el texto del archivo actual, la ruta del archivo actual y la raíz del proyecto.
6. Si el script RDL pasa, DakshSCRA conserva el hallazgo y fusiona los metadatos de lógica exportados en la salida del informe.
7. Si el script RDL falla, la coincidencia se suprime con el motivo de fallo de RDL y los metadatos de seguimiento de decisión.

Para las reglas de ruta de archivo en `filepaths.xml`, se aplica el mismo modelo `rdl_ref`, pero el sujeto de coincidencia es
la ruta relativa normalizada en lugar del texto del código fuente. En ese modo, RDL recibe la cadena de ruta relativa
como el texto del archivo actual y el contexto de ruta.

#### Estructura de regla actual```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>

Estructura actual de `.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:~
#### Diseño actual```text
rules/
└── scanning/
    ├── platform/
    │   ├── php/php.xml
    │   ├── java/java.xml
    │   └── ...
    └── logic/
        ├── common/core/
        ├── php/core/
        ├── php/framework/laravel/
        ├── mobile/android/core/
        ├── filepaths/core/
        └── ...

Semántica de ejecución

  • WHEN PRESENT, WHEN MISSING y WHEN CURRENT_FILE_MATCHES se evalúan contra el texto del archivo actual.
  • WHEN FILE_NAME_IS y WHEN FILE_PATH_MATCHES se evalúan contra el contexto de la ruta del archivo actual.
  • WHEN EXPR admite lógica booleana sobre los predicados PRESENT:, MISSING: y EXISTS:.
  • OBSERVE PROJECT_HAS_GLOB ... AS ... no condiciona el hallazgo; registra archivos de proyecto relacionados en los metadatos de traza.
  • REPORT AS, REASON, FAIL_REASON y TRACE controlan los metadatos de informe exportados.
  • Los tokens de expresiones regulares pueden escribirse como patrones sin formato o como /patrón/banderas, con soporte para i, m y s.

Comandos RDL admitidos

ComandoComportamientoUso típico
WHEN PRESENT <regex>Requiere que un patrón exista en el texto del archivo actualRequerir una API de riesgo o un campo sensible co-ocurrente
WHEN MISSING <regex>Requiere que un patrón esté ausente del texto del archivo actualSuprimir cuando ya existe una mitigación
WHEN EXPR <expr>Evalúa expresiones booleanas usando PRESENT: / MISSING: / EXISTS: con &&, `
WHEN CURRENT_FILE_MATCHES <regex>Compara contra el texto completo del archivo actualRevisar condiciones complejas de todo el archivo
WHEN FILE_NAME_IS <name>Requiere que el nombre del archivo actual coincida exactamenteLimitar reglas de plist / manifest / config
WHEN FILE_PATH_MATCHES <glob>Requiere que la ruta relativa actual coincida con un globAcotar reglas de rutas de framework/config
UNLESS CURRENT_FILE_MATCHES <regex>Falla cuando todo el archivo coincide con un patrón de exclusiónBloquear casos estructurales seguros conocidos
OBSERVE PROJECT_HAS_GLOB <glob> AS <label>Registra archivos de proyecto relacionados en los metadatos de trazaSuperficie de config de soporte o archivos complementarios
REPORT AS <outcome>Establece el resultado de la regla, normalmente area_of_interestResultados explícitos a prueba de futuro
REASON <text>Razón mostrada cuando la regla pasaExplicar por qué el hallazgo permaneció visible
FAIL_REASON <text>Razón mostrada cuando la regla suprime una coincidenciaExplicar por qué el acierto fue filtrado
TRACE <text>Añadir líneas de traza de depuración/decisiónSoporte de migración/depuración

Las expresiones booleanas en WHEN EXPR admiten:

  • PRESENT:<regex>
  • MISSING:<regex>
  • EXISTS:<regex>
  • &&, ||, ! y paréntesis

Ejemplo 1 - Compuerta de inyección SQL en PHP

Regla 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.

Ejemplo 2 - Regla de manifiesto de Android con comprobaciones conscientes de archivos

Regla 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.

Ejemplo 3 - Regla de área de interés por ruta de archivo

Regla 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.

Guía de autoría

  • Mantén regex lo suficientemente amplio para captar candidatos y luego usa RDL para filtrar el contexto.
  • Prefiere rdl_ref para toda la lógica de reglas y mantén el archivo .rdl junto al árbol de lógica de la plataforma/marco correspondiente.
  • No agregues nuevos bloques <rdl> en línea.
  • Usa WHEN PRESENT / WHEN MISSING para compuertas simples y WHEN EXPR solo cuando la lógica sea genuinamente booleana.
  • Coloca el razonamiento dirigido a revisores en REASON y las explicaciones de supresión en FAIL_REASON.
  • Trata PRESENT y MISSING como comprobaciones de archivo completo. Una mitigación en cualquier parte del archivo puede suprimir todas las coincidencias de ese archivo.
  • Usa OBSERVE PROJECT_HAS_GLOB para enriquecer los hallazgos con contexto del proyecto, no como una compuerta de aprobado/reprobado.
  • Mantén las rutas logic/... estables y con ámbito de plataforma para que las reglas XML sigan siendo delgadas y la capa de lógica siga siendo reutilizable.

Estructura de salida de informes

Todas las salidas se escriben bajo el directorio 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:~
Los archivos de ejecución (estado del escaneo, registros, inventario) se escriben en `runtime/`.

Cuando se ejecuta a través de la interfaz web, las salidas de cada trabajo también se guardan como instantáneas en `runtime/webui/jobs/<job-id>/artifacts/` (consulte [Interfaz web (Docker)](#web-ui-docker)).

---

## Autor

| | |
|---|---|
| Sitio web | [coffeeandsecurity.com](https://www.coffeeandsecurity.com) |
| Correo electrónico | [email protected] |
| Twitter / X | [@coffeensecurity](https://x.com/coffeensecurity) |
| Fuente | [github.com/coffeeandsecurity/DakshSCRA](https://github.com/coffeeandsecurity/DakshSCRA) |
| Licencia | GNU General Public License v3.0 (GPL-3.0) |

Si DakshSCRA ha ayudado a tu equipo a ahorrar tiempo, esfuerzo o costes significativos, ha reducido la dependencia de herramientas comerciales caras, ha mejorado la cobertura de las revisiones o ha hecho que la revisión de código sea más estructurada y eficaz, no dudes en ponerte en contacto y compartir tu experiencia. Siempre estoy abierto a comentarios reflexivos y conversaciones interesantes.

¿Has encontrado un error o quieres contribuir? Abre un issue o pull request en GitHub.
Descargar herramienta
--skip-analysisDeshabilitar la etapa de análisis para esta ejecución
--locContar líneas de código efectivas
--baseline-file PATHArchivo de línea base de supresión (JSON)
--baseline-generateGenerar línea base de supresión a partir de los hallazgos actuales
--no-baselineDeshabilitar la supresión de línea base para esta ejecución
--review-config PATHArchivo de triaje de hallazgos (JSON); suprimir falsos positivos ya revisados de los informes
--resume-scanReanudar un escaneo previamente interrumpido desde el archivo de estado
--state-file PATHRuta personalizada del archivo de estado / punto de control del escaneo
--no-stateDeshabilitar el guardado de puntos de control del escaneo para esta ejecución
--stateForzar la habilitación del guardado de puntos de control del escaneo para esta ejecución