Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
DakshSCRA — Ferramenta de análise estática de código consciente de frameworks para revisão automatizada de código-fonte com regras específicas de plataforma, análise de fluxo de dados, estimativa de esforço e linhas de base de supressão. | Kitploit
Ferramentas/GitHubGitHub/coffeeandsecurity/dakshscra
Análise EstáticaScanners de VulnerabilidadesAnálise Estática de Código (SAST)Análise de VulnerabilidadesAnálise de CódigoSegurança WebTestes de PenetraçãoDevSecOpsSegurança Móvel
Aprendizado e Educação
GitHubcoffeeandsecurity/dakshscra

DakshSCRA

Ferramenta de análise estática de código consciente de frameworks para revisão automatizada de código-fonte com regras específicas de plataforma, análise de fluxo de dados, estimativa de esforço e linhas de base de supressão.

Ver Repositório
45790há 16 diasRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Daksh SCRA (Assistente de Revisão de Código-Fonte)```

Author:

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

O Daksh SCRA (Source Code Review Assist) foi criado para aumentar a eficiência do processo de revisão de código-fonte, oferecendo uma abordagem bem estruturada e organizada para revisores de código.

Em vez de sinalizar indiscriminadamente tudo como um problema potencial, o Daksh SCRA promove uma análise criteriosa, incentivando a investigação e a confirmação de problemas potenciais. Essa abordagem reduz a correria de marcar cada preocupação potencial como um bug, diminuindo a confusão e o tempo desperdiçado com falsos positivos.

### Estreia

O Daksh SCRA foi inicialmente apresentado durante uma sessão de treinamento de revisão de código-fonte na Black Hat USA 2022 (6 a 9 de agosto), onde foi exibido de forma discreta para um público específico. Sua estreia pública oficial ocorreu na Black Hat USA 2023, em Las Vegas.

## Recursos e Funcionalidades

- **Identifica Áreas de Interesse no Código-Fonte:** Incentiva uma investigação e confirmação focadas, em vez de rotular indiscriminadamente tudo como um bug.
- **Identifica Áreas de Interesse em Caminhos de Arquivo (Primeiro do Mundo):** Reconhece padrões em caminhos de arquivo para apontar seções relevantes para revisão.
- **Reconhecimento em Nível de Software para Identificar Tecnologias Utilizadas:** Identifica as tecnologias do projeto, permitindo que revisores de código realizem varreduras precisas com regras adequadas.
- **Estimativa Científica Automatizada de Esforço para Revisão de Código (Primeiro do Mundo):** Oferece uma abordagem mensurável para estimar o esforço necessário para uma revisão de código.
- **Varredura Ciente de Frameworks:** Aplica automaticamente regras específicas de frameworks quando o framework do projeto é detectado.
- **Relatórios de Análise de Taint:** Relatórios HTML de fluxo de taint por plataforma, com temas de modo hacker e modo profissional.
- **RDL (Rule Description Language):** Lógica de regras externa referenciada com `rdl_ref` e executada pelo pipeline `core/rdl_engine.py` — suporta gates cientes de arquivos, expressões booleanas, observações do projeto e metadados de lógica exportados nos relatórios.
- **Estado da Varredura / Retomada:** Marca pontos de verificação em varreduras longas e retoma após interrupções.
- **Linha de Base de Supressão:** Gera e aplica uma linha de base de falsos positivos conhecidos para suprimi-los de relatórios futuros.
- **Interface Web:** Lançador de varreduras baseado em navegador, com feed de console em tempo real e navegador de artefatos de trabalhos.

> Aprimoramentos ativos estão em andamento. Vários novos recursos e melhorias estão planejados para os próximos lançamentos.

Sinta-se à vontade para contribuir com a atualização ou adição de novas regras e com o desenvolvimento futuro.

Se você encontrar algum bug, reporte-o para [[email protected]](mailto:[email protected]).

Documentação detalhada: [https://dakshlabs.com/#docs](https://dakshlabs.com/#docs)

---

## Primeiros Passos

Há duas maneiras de executar o Daksh SCRA — escolha a que melhor se adequa ao seu fluxo de trabalho:

| | Melhor para | Ir para |
|---|---|---|
| 🌐 **Interface Web (Docker)** | A maneira mais fácil de começar — um comando, um painel no navegador, progresso de varredura ao vivo e um navegador de relatórios/artefatos. Recomendado para a maioria dos usuários. | [Interface Web (Docker)](#web-ui-docker) |
| 💻 **CLI (Python)** | Scripts, pipelines de CI ou execução de varreduras sem Docker. | [Configuração da CLI](#cli-setup) |

Ambos os caminhos executam exatamente o mesmo mecanismo de varredura — a Interface Web é um front-end de navegador sobre a mesma CLI, portanto, os resultados são idênticos de qualquer forma.

---

## Interface Web (Docker)

A maneira mais rápida de executar o Daksh SCRA é por meio de sua Interface Web baseada em navegador, iniciada com um único comando do Docker Compose. Ela oferece um lançador de varreduras, um feed de console ao vivo e um histórico navegável de relatórios anteriores, sem precisar de um ambiente Python local.

A configuração do Docker executa a Interface Web e a CLI como serviços independentes criados a partir da mesma imagem, para que você possa usar um (ou ambos) a partir do mesmo contêiner.

### Iniciar a Interface Web

Modo em primeiro plano (os logs são transmitidos para o seu terminal):```bash
docker compose up --build

Modo destacado / em segundo plano:```bash docker compose up --build -d

root@kitploit:~
Em seguida, abra [http://localhost:8080](http://localhost:8080).

Para usar uma porta diferente:```bash
DAKSH_PORT=9090 docker compose up

Pare a pilha com:```bash docker compose down

root@kitploit:~
### Iniciar sessão

A interface Web requer uma conta. No primeiro arranque, é criada uma conta de administrador inicial a partir de `DAKSH_ADMIN_USERNAME` / `DAKSH_ADMIN_PASSWORD` (defina estes valores em `.env`); se `DAKSH_ADMIN_PASSWORD` ficar por definir, é gerada uma palavra-passe aleatória e impressa uma única vez no registo de arranque da API - guarde-a, pois não pode ser recuperada posteriormente.

Será obrigado a definir a sua própria palavra-passe (e, opcionalmente, nome de utilizador) na primeira vez que iniciar sessão. Uma conta de administrador pode criar contas adicionais através do endpoint da API `POST /api/v1/auth/users` (ainda sem interface dedicada para isto). Consulte `.env.example` para a lista completa de definições relacionadas com autenticação (duração da sessão, segurança de cookies, CORS).

### O que obtém

- Construtor de comandos responsivo para os modos scan, recon, estimate, recon+estimate, list e PDF-from-JSON
- Feed de consola em tempo real e progresso por etapa ao vivo durante a execução
- Instantâneos de artefactos por tarefa para saídas HTML / PDF / JSON
- Navegação rápida no navegador entre o formulário de execução, feed ao vivo, artefactos e tarefas recentes
- Navegador de diretórios integrado para selecionar caminhos de destino (ciente do SO: Windows, macOS, Linux / Docker)

Nos bastidores, a CLI continua a ser a fonte de verdade - é ela que faz toda a análise e gera todas as saídas HTML / PDF / JSON. A interface Web executa uma tarefa ativa de cada vez e tira instantâneos das saídas de cada tarefa concluída para `runtime/webui/jobs/<job-id>/artifacts/`, para que relatórios anteriores permaneçam acessíveis.

### Executar a CLI no Docker

Também não precisa de um ambiente Python local para usar a CLI - está disponível como um serviço Compose próprio, construído a partir da mesma imagem:```bash
docker compose run --rm cli -h
docker compose run --rm cli -r auto -t /scan-targets/path/to/source

O que há na imagem

  • Backend FastAPI + frontend Web UI
  • A CLI completa do Daksh SCRA, como um serviço separado
  • Playwright Chromium, para geração de PDF
  • Volumes persistentes reports/ e runtime/
  • Montagens de caminhos do host para que as varreduras possam acessar as árvores de origem de dentro do contêiner

Pontos de montagem principais:

MontagemCaminho dentro do contêiner
Origem do projeto/app
Raiz de varredura padrão/scan-targets
Aliases de unidades do host/host, /host/c, /host/d
Montagens WSL/mnt, /run/desktop/mnt/host

Variáveis de ambiente (configure em .env):

VariávelDescrição
DAKSH_PORTPorta da Web UI (padrão: 8080)
DAKSH_SCAN_ROOTDiretório de destino padrão dentro do contêiner
DAKSH_HOST_SOURCECaminho do host a ser montado como /scan-targets (padrão: /tmp)
DAKSH_HOST_MOUNTRaiz de montagem adicional do host
DAKSH_HOST_CCaminho da unidade C: do Windows (WSL)
DAKSH_HOST_DCaminho da unidade D: do Windows (WSL)
DAKSH_DESKTOP_MOUNTCaminho de montagem da área de trabalho do WSL
DAKSH_BROWSE_ROOTSSubstituir raízes do navegador de diretórios (separadas por vírgula)
DAKSH_ADMIN_USERNAMENome de usuário admin inicial (padrão: admin)
DAKSH_ADMIN_PASSWORDSenha admin inicial — altamente recomendado defini-la explicitamente

Copie .env.example para .env e defina os caminhos e credenciais para sua máquina antes de executar o Docker.


Configuração da CLI

Prefere executar o Daksh SCRA diretamente com Python? Veja como configurá-lo localmente.

Pré-requisitos

  • Python 3.8+
  • Todas as bibliotecas listadas em requirements.txt

1. Baixar o Daksh SCRA```bash

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

root@kitploit:~
Ou descarregue o zip mais recente de [https://github.com/coffeeandsecurity/DakshSCRA](https://github.com/coffeeandsecurity/DakshSCRA) e descompacte-o.

### 2. Configurar um Ambiente Virtual

> 💡 O ambiente virtual pode ser criado em qualquer diretório - não precisa de estar dentro da pasta DakshSCRA.

**Opção A: Configuração num único passo (recomendada)**```bash
python setup_env.py

Este script cria o ambiente virtual, instala todas as dependências e instala o navegador Chromium do Playwright (necessário para exportação de PDF).

Opção B: Configuração 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

Em seguida, instale as dependências:```bash cd path/to/DakshSCRA pip install -r requirements.txt playwright install chromium

root@kitploit:~
---

## Utilização da CLI

Use `python` dentro de um ambiente virtual, ou `python3` fora de um.

### Opções da Linha 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]
OpçãoDescrição
-r RULESRegras da plataforma (ex.: php, java, php,java) ou auto para detecção automática
-f FILE_TYPESSubstituir os tipos de arquivo padrão para a varredura
-vNível de verbosidade (-v, -vv, -vvv)
-t TARGET_DIRDiretório do código-fonte alvo
-l {R,RF}Listar regras da plataforma + frameworks [R] ou incluir tipos de arquivo [RF]
--reconExecutar reconhecimento (detecção de plataforma / framework / linguagem)
--rs, --recon-strictReconhecimento estrito: apenas detecções de alta confiança (usar com --recon)
--estimateEstimar o esforço de revisão de código com base no tamanho do código-fonte
-rpt, --report FORMATSFormatos de relatório: html, pdf ou html,pdf (padrão: html)
--pdf-from-jsonGerar relatório(s) PDF a partir de saídas JSON existentes sem nova varredura
--json-input-dir PATHDiretório de relatórios JSON (padrão: ./reports/data)
--pdf-output PATHCaminho único de saída do PDF (padrão: ./reports/scan/pdf/report.pdf)
--pdf-multi-dir PATHDiretório de saída do PDF multi-arquivo (padrão: ./reports/scan/pdf/multi-file)
--pdf-single-onlyGerar apenas o PDF único combinado; pular o conjunto multi-arquivo por plataforma
--skip-analysis

Exemplo de Uso

-f (tipos de arquivo) é opcional. Se não for especificado, o DakshSCRA usa os tipos de arquivo padrão para a(s) plataforma(s) selecionada(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:~
### Regras e Frameworks de Plataforma Suportados```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 e frameworks atualmente suportados:

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 obter as plataformas e frameworks mais recentes suportados, execute sempre:```bash python dakshscra.py -l R

root@kitploit:~
---

## Referência de Configuração

### `config/tool.yaml`

Os padrões de tempo de execução do Daksh SCRA são controlados por meio 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

Opções de configuração do analisador:

  • analysis.run_by_default
    • true: o analisador é executado automaticamente durante a verificação
    • false: o analisador fica desabilitado, a menos que seja reativado na configuração ou via CLI
  • analysis.include_frameworks
    • true: inclui entradas do analisador em nível de framework onde a detecção de framework existe
    • false: apenas a saída do analisador em nível de plataforma
  • analysis.report_theme
    • hacker_mode: tema de analisador moderno escuro de alto contraste (padrão)
    • professional_mode: tema de analisador moderno claro
    • both: gera ambas as variantes de tema lado a lado

Criação de Regras RDL

RDL (Rule Description Language) é a camada de lógica de regras externalizada do DakshSCRA. Na arquitetura atual:

  • As regras XML permanecem como o inventário de regras e carregam metadados como name, regex, descrições e scan_config opcional.
  • A lógica RDL é executada por core/rdl_engine.py.
  • Os arquivos de lógica de regras ficam em rules/scanning/logic/... e são referenciados a partir do XML usando <rdl_ref>.
  • Os valores de rdl_ref são resolvidos em relação a rules/scanning/, por exemplo: logic/php/core/some_rule.rdl -> rules/scanning/logic/php/core/some_rule.rdl
  • Os resultados da lógica são exportados para o JSON do relatório como metadados, como logic_engine, logic_source, logic_reason, logic_trace, logic_consulted_files e logic_outcome.

A forma inline <rdl> mais antiga não é mais a arquitetura ativa e não deve ser usada para novas regras.

Arquitetura RDL em resumo```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:~
#### Sequência de digitalização

Para uma regra de origem, o DakshSCRA avalia a lógica nesta ordem:

1. O Recon seleciona plataformas e frameworks correspondentes.
2. A regra XML é carregada de `rules/scanning/platform/...`.
3. `regex` encontra linhas candidatas ou correspondências de arquivo inteiro quando presente.
4. `exclude` remove ruídos óbvios para essa regra, se presente.
5. O arquivo `.rdl` externo de `rdl_ref` é avaliado em relação ao texto do arquivo atual, ao caminho do arquivo atual e à raiz do projeto.
6. Se o script RDL passar, o DakshSCRA mantém a descoberta e mescla os metadados de lógica exportados na saída do relatório.
7. Se o script RDL falhar, a correspondência é suprimida com o motivo da falha do RDL e os metadados de rastreamento de decisão.

Para regras de caminho de arquivo em `filepaths.xml`, o mesmo modelo `rdl_ref` se aplica, mas o sujeito da correspondência é
o caminho relativo normalizado em vez do texto do código-fonte. Nesse modo, o RDL recebe a string do caminho relativo
como o texto do arquivo atual e o contexto do caminho.

#### Estrutura atual da regra```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>

Estrutura atual do `.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:~
#### Layout atual```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 execução

  • WHEN PRESENT, WHEN MISSING e WHEN CURRENT_FILE_MATCHES avaliam o texto do arquivo atual.
  • WHEN FILE_NAME_IS e WHEN FILE_PATH_MATCHES avaliam o contexto do caminho do arquivo atual.
  • WHEN EXPR suporta lógica booleana sobre os predicados PRESENT:, MISSING: e EXISTS:.
  • OBSERVE PROJECT_HAS_GLOB ... AS ... não bloqueia o achado; ele registra arquivos de projeto relacionados nos metadados de rastreamento.
  • REPORT AS, REASON, FAIL_REASON e TRACE controlam os metadados de relatório exportados.
  • Tokens de regex podem ser escritos como padrões brutos ou como /padrão/flags, com suporte a i, m e s.

Comandos RDL suportados

ComandoComportamentoUso típico
WHEN PRESENT <regex>Exige que um padrão exista no texto do arquivo atualExigir uma API arriscada ou campo sensível co-ocorrente
WHEN MISSING <regex>Exige que um padrão esteja ausente do texto do arquivo atualSuprimir quando a mitigação já existe
WHEN EXPR <expr>Avalia expressões booleanas usando PRESENT: / MISSING: / EXISTS: com &&, `
WHEN CURRENT_FILE_MATCHES <regex>Corresponde ao texto completo do arquivo atualReavaliar condições complexas de arquivo inteiro
WHEN FILE_NAME_IS <nome>Exige que o nome do arquivo atual corresponda exatamenteLimitar regras de plist / manifest / config
WHEN FILE_PATH_MATCHES <glob>Exige que o caminho relativo atual corresponda a um globRestringir regras de caminho de framework/config
UNLESS CURRENT_FILE_MATCHES <regex>Falha quando o arquivo inteiro corresponde a um padrão de exclusãoBloquear casos estruturais conhecidos como seguros
OBSERVE PROJECT_HAS_GLOB <glob> AS <rótulo>Registra arquivos de projeto relacionados nos metadados de rastreamentoExpor arquivos de configuração ou complementares de suporte
REPORT AS <resultado>Define o resultado da regra, geralmente area_of_interestResultados explícitos à prova de futuro
REASON <texto>Motivo exibido quando a regra passaExplicar por que o achado permaneceu visível
FAIL_REASON <texto>Motivo exibido quando a regra suprime uma correspondênciaExplicar por que o hit foi filtrado
TRACE <texto>Adicionar linhas de rastreamento de depuração/decisãoSuporte a migração/depuração

Expressões booleanas em WHEN EXPR suportam:

  • PRESENT:<regex>
  • MISSING:<regex>
  • EXISTS:<regex>
  • &&, ||, ! e parênteses

Exemplo 1 - Portão de injeção SQL em PHP

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

Exemplo 2 - Regra de manifesto Android com verificações cientes de arquivos

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

Exemplo 3 - Regra de área de interesse por caminho de arquivo

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

Orientações de autoria

  • Mantenha regex amplo o suficiente para capturar candidatos e, em seguida, use RDL para filtrar o contexto.
  • Prefira rdl_ref para toda a lógica de regras e mantenha o arquivo .rdl ao lado da árvore de lógica apropriada da plataforma/framework.
  • Não adicione novos blocos inline <rdl>.
  • Use WHEN PRESENT / WHEN MISSING para portas simples e WHEN EXPR apenas quando a lógica for genuinamente booleana.
  • Coloque o raciocínio voltado ao revisor em REASON e as explicações de supressão em FAIL_REASON.
  • Trate PRESENT e MISSING como verificações de arquivo inteiro. Uma mitigação em qualquer lugar do arquivo pode suprimir todas as correspondências desse arquivo.
  • Use OBSERVE PROJECT_HAS_GLOB para enriquecer descobertas com contexto do projeto, não como uma porta de aprovação/reprovação.
  • Mantenha os caminhos logic/... estáveis e com escopo de plataforma para que as regras XML permaneçam enxutas e a camada de lógica continue reutilizável.

Estrutura de saída do relatório

Todas as saídas são gravadas no diretório 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:~
Os ficheiros de runtime (estado da análise, registos, inventário) são gravados em `runtime/`.

Ao executar através da interface Web, os resultados de cada tarefa são adicionalmente capturados em `runtime/webui/jobs/<job-id>/artifacts/` (consulte [Interface Web (Docker)](#web-ui-docker)).

---

## Autor

| | |
|---|---|
| Website | [coffeeandsecurity.com](https://www.coffeeandsecurity.com) |
| Email | [email protected] |
| Twitter / X | [@coffeensecurity](https://x.com/coffeensecurity) |
| Fonte | [github.com/coffeeandsecurity/DakshSCRA](https://github.com/coffeeandsecurity/DakshSCRA) |
| Licença | GNU General Public License v3.0 (GPL-3.0) |

Se o DakshSCRA ajudou a sua equipa a poupar tempo, esforço ou custos significativos, reduziu a dependência de ferramentas comerciais dispendiosas, melhorou a cobertura das revisões ou tornou a revisão de código mais estruturada e eficaz, não hesite em contactar e partilhar a sua experiência. Estou sempre aberto a feedback ponderado e conversas interessantes.

Encontrou um bug ou quer contribuir? Abra uma issue ou pull request no GitHub.
Baixar ferramenta
Desabilitar o estágio de análise nesta execução
--locContar linhas efetivas de código
--baseline-file PATHArquivo de linha de base de supressão (JSON)
--baseline-generateGerar linha de base de supressão a partir dos achados atuais
--no-baselineDesabilitar a supressão por linha de base nesta execução
--review-config PATHArquivo de triagem de achados (JSON); suprimir falsos positivos já revisados dos relatórios
--resume-scanRetomar uma varredura interrompida anteriormente a partir do arquivo de estado
--state-file PATHCaminho personalizado do arquivo de estado / checkpoint da varredura
--no-stateDesabilitar o checkpointing de estado da varredura nesta execução
--stateForçar a ativação do checkpointing de estado da varredura nesta execução