アップデート一覧に戻る
New releaseAug 27, 2026

DakshSCRA v0.38-beta

フレームワーク対応の静的コード解析ツールで、自動ソースコードレビュー、プラットフォーム固有のルール、汚染解析、工数見積もり、抑制ベースラインを備えています。

共有

Daksh SCRA(ソースコードレビュー支援)```

Author:

## Daksh SCRAについて

Daksh SCRA(ソースコードレビュー支援)は、ソースコードレビュープロセスの効率を高めるために構築されており、コードレビュアーに構造化され整理されたアプローチを提供します。

潜在的な問題として無差別にすべてをフラグ付けするのではなく、Daksh SCRAは思慮深い分析を促進し、潜在的な問題の調査と確認を促します。このアプローチにより、潜在的な懸念事項をすべてバグとしてタグ付けしようとする混乱を軽減し、誤検知に費やされる混乱と無駄な時間を削減します。

### デビュー

Daksh SCRAは当初、Black Hat USA 2022(8月6日〜9日)のソースコードレビュー研修セッションで紹介され、特定の聴衆に控えめに提示されました。公式の一般公開は、ラスベガスで開催されたBlack Hat USA 2023で行われました。

## 機能と特徴

- **ソースコード内の注目領域を特定:** 無差別にすべてをバグとしてラベル付けするのではなく、焦点を絞った調査と確認を促進します。
- **ファイルパス内の注目領域を特定(世界初):** ファイルパスのパターンを認識して、レビュー対象の関連セクションを特定します。
- **使用技術を特定するソフトウェアレベルの偵察:** プロジェクトの技術を特定し、コードレビュアーが適切なルールで正確なスキャンを実行できるようにします。
- **コードレビューの自動化された科学的労力見積もり(世界初):** コードレビューに必要な労力を見積もるための測定可能なアプローチを提供します。
- **フレームワーク対応スキャン:** プロジェクトのフレームワークが検出された場合、フレームワーク固有のルールを自動的に適用します。
- **汚染分析レポート:** ハッカーモードとプロフェッショナルモードのテーマを備えた、プラットフォーム別のHTML汚染フローレポート。
- **RDL(ルール記述言語):** `rdl_ref`で参照され、`core/rdl_engine.py`パイプラインによって実行される外部ルールロジック - ファイル対応ゲート、ブール式、プロジェクト観察、レポート内のエクスポートされたロジックメタデータをサポートします。
- **スキャン状態/再開:** 長時間のスキャンをチェックポイントし、中断後に再開します。
- **抑制ベースライン:** 既知の誤検知のベースラインを生成して適用し、将来のレポートから抑制します。
- **Web UI:** リアルタイムコンソールフィードとジョブ成果物ブラウザを備えたブラウザベースのスキャンランチャー。

> 現在も積極的な拡張が進行中です。今後のリリースでは、複数の新機能と改善が計画されています。

既存のルールの更新や新規追加、今後の開発への貢献は自由に行ってください。

バグを見つけた場合は、[[email protected]](mailto:[email protected]) まで報告してください。

詳細なドキュメント: [https://dakshlabs.com/#docs](https://dakshlabs.com/#docs)

---

## はじめに

Daksh SCRAを実行する方法は2つあります。ワークフローに合った方を選択してください:

| | 最適な用途 | ジャンプ先 |
|---|---|---|
| 🌐 **Web UI(Docker)** | 最も簡単な開始方法 - 1つのコマンド、ブラウザダッシュボード、ライブスキャン進行状況、レポート/成果物ブラウザ。ほとんどのユーザーに推奨。 | [Web UI(Docker)](#web-ui-docker) |
| 💻 **CLI(Python)** | スクリプト、CIパイプライン、またはDockerなしでのスキャン実行。 | [CLIセットアップ](#cli-setup) |

どちらのパスもまったく同じスキャンエンジンを実行します - Web UIは同じCLIのブラウザフロントエンドであるため、結果はどちらの方法でも同一です。

---

## Web UI(Docker)

Daksh SCRAを実行する最速の方法は、単一のDocker Composeコマンドで起動するブラウザベースのWeb UIです。ローカルのPython環境を必要とせずに、スキャンランチャー、ライブコンソールフィード、過去のレポートの閲覧可能な履歴を提供します。

Dockerセットアップでは、Web UIとCLIが同じイメージから構築された独立したサービスとして実行されるため、同じコンテナからどちらか(または両方)を使用できます。

### Web UIの起動

フォアグラウンドモード(ログがターミナルにストリーミングされます):```bash
docker compose up --build

デタッチド / バックグラウンドモード:```bash docker compose up --build -d

次に [http://localhost:8080](http://localhost:8080) を開きます。

別のポートを使用する場合:```bash
DAKSH_PORT=9090 docker compose up

スタックを停止するには:```bash docker compose down

### ログイン

Web UI を使用するにはアカウントが必要です。初回起動時に、`DAKSH_ADMIN_USERNAME` / `DAKSH_ADMIN_PASSWORD`(`.env` で設定)から初期管理者アカウントが作成されます。`DAKSH_ADMIN_PASSWORD` が未設定の場合は、ランダムなパスワードが生成され、API の起動ログに一度だけ出力されます。後から復元できないため、必ず保存してください。

初回ログイン時には、自分のパスワード(および任意でユーザー名)の設定が求められます。管理者アカウントは、`POST /api/v1/auth/users` API エンドポイントを介して追加のアカウントを作成できます(専用の UI はまだありません)。認証関連の設定(セッション有効期間、Cookie セキュリティ、CORS)の完全な一覧は `.env.example` を参照してください。

### 提供される機能

- scan、recon、estimate、recon+estimate、list、PDF-from-JSON モードに対応したレスポンシブなコマンドビルダー
- 実行中のリアルタイムコンソールフィードと、ステージごとのライブ進捗表示
- HTML / PDF / JSON 出力のジョブごとのアーティファクトスナップショット
- 実行フォーム、ライブフィード、アーティファクト、最近のジョブ間を高速に移動できるブラウザ内ナビゲーション
- ターゲットパス選択用の組み込みディレクトリブラウザ(OS 対応: Windows、macOS、Linux / Docker)

内部では、CLI が引き続き信頼できる情報源です。CLI がすべてのスキャンを実行し、すべての HTML / PDF / JSON 出力を生成します。Web UI は一度に 1 つのアクティブなジョブを実行し、完了した各ジョブの出力を `runtime/webui/jobs/<job-id>/artifacts/` にスナップショットとして保存するため、過去のレポートにもアクセスできます。

### Docker での CLI の実行

CLI を使用するためにローカルの Python 環境は必要ありません。CLI は独自の Compose サービスとして利用でき、同じイメージからビルドされます。```bash
docker compose run --rm cli -h
docker compose run --rm cli -r auto -t /scan-targets/path/to/source

イメージに含まれるもの

  • FastAPIバックエンド + Web UIフロントエンド
  • 完全なDaksh SCRA CLI(独立したサービスとして)
  • PDF生成用のPlaywright Chromium
  • 永続的な reports/ および runtime/ ボリューム
  • コンテナ内からスキャンがソースツリーに到達できるようにするホストパスマウント

主なマウントポイント:

マウントコンテナ内のパス
プロジェクトソース/app
デフォルトのスキャンルート/scan-targets
ホストドライブのエイリアス/host/host/c/host/d
WSLマウント/mnt/run/desktop/mnt/host

環境変数.env で設定):

変数説明
DAKSH_PORTWeb UIポート(デフォルト: 8080
DAKSH_SCAN_ROOTコンテナ内のデフォルトのターゲットディレクトリ
DAKSH_HOST_SOURCE/scan-targets としてマウントするホストパス(デフォルト: /tmp
DAKSH_HOST_MOUNT追加のホストマウントルート
DAKSH_HOST_CWindows C: ドライブのパス(WSL)
DAKSH_HOST_DWindows D: ドライブのパス(WSL)
DAKSH_DESKTOP_MOUNTWSLデスクトップのマウントパス
DAKSH_BROWSE_ROOTSディレクトリブラウザのルートを上書き(カンマ区切り)
DAKSH_ADMIN_USERNAME初期管理者ユーザー名(デフォルト: admin
DAKSH_ADMIN_PASSWORD初期管理者パスワード - 明示的に設定することを強く推奨

Dockerを実行する前に、.env.example.env にコピーし、お使いのマシンに合わせてパスと認証情報を設定してください。


CLIセットアップ

Daksh SCRAをPythonで直接実行したいですか? ローカルでのセットアップ方法は次のとおりです。

前提条件

  • Python 3.8以上
  • requirements.txt に記載されているすべてのライブラリ

1. Daksh SCRAをダウンロードする```bash

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

Or download the latest zip from [https://github.com/coffeeandsecurity/DakshSCRA](https://github.com/coffeeandsecurity/DakshSCRA) and unzip it.

### 2. Set Up a Virtual Environment

> 💡 The virtual environment can be created in any directory - it does not need to be inside the DakshSCRA folder.

**Option A: One-step setup (recommended)**```bash
python setup_env.py

このスクリプトは仮想環境を作成し、すべての依存関係をインストールし、PlaywrightのChromiumブラウザ(PDFエクスポートに必要)をインストールします。

オプションB: 手動セットアップ

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

macOS / Linux:```bash
python3 -m venv daksh-env
source daksh-env/bin/activate

次に依存関係をインストールします:```bash cd path/to/DakshSCRA pip install -r requirements.txt playwright install chromium

---

## CLI の使い方

仮想環境内では `python` を、仮想環境外では `python3` を使用します。

### コマンドラインオプション```
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]
オプション説明
-r RULESプラットフォームルール(例: phpjavaphp,java)、または自動検出の場合は auto
-f FILE_TYPESスキャン用のデフォルトファイルタイプを上書き
-v冗長レベル(-v-vv-vvv
-t TARGET_DIR対象のソースコードディレクトリ
-l {R,RF}プラットフォームルール+フレームワークを一覧表示 [R]、またはファイルタイプを含める [RF]
--recon偵察を実行(プラットフォーム/フレームワーク/言語の検出)
--rs, --recon-strict厳格な偵察: 高信頼度の検出のみ(--recon と併用)
--estimateコードベースの規模に基づいてコードレビュー工数を推定
-rpt, --report FORMATSレポート形式: htmlpdf、または html,pdf(デフォルト: html
--pdf-from-json再スキャンせずに既存の JSON 出力から PDF レポートを生成
--json-input-dir PATHJSON レポートディレクトリ(デフォルト: ./reports/data
--pdf-output PATH単一 PDF の出力パス(デフォルト: ./reports/scan/pdf/report.pdf
--pdf-multi-dir PATH複数ファイル PDF の出力ディレクトリ(デフォルト: ./reports/scan/pdf/multi-file
--pdf-single-only結合された単一ファイル PDF のみを生成し、プラットフォーム別の複数ファイルセットをスキップ
--skip-analysisこの実行のアナライザーステージを無効化
--loc実効コード行数をカウント
--baseline-file PATH抑制ベースラインファイル(JSON)
--baseline-generate現在の検出結果から抑制ベースラインを生成
--no-baselineこの実行のベースライン抑制を無効化
--review-config PATH検出結果トリアージファイル(JSON); レビュー済みの誤検知をレポートから抑制
--resume-scan状態ファイルから以前に中断されたスキャンを再開
--state-file PATHカスタムスキャン状態/チェックポイントファイルのパス
--no-stateこの実行のスキャン状態チェックポイントを無効化
--stateこの実行のスキャン状態チェックポイントを強制有効化

使用例

-f(ファイルタイプ)はオプションです。指定しない場合、DakshSCRA は選択されたプラットフォームのデフォルトファイルタイプを使用します。```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

### 対応プラットフォームのルールとフレームワーク```bash
python dakshscra.py -l R    # List platform rules and framework mappings
python dakshscra.py -l RF   # List platform rules, framework mappings, and filetypes

現在サポートされているプラットフォームとフレームワークのマッピング:

プラットフォームフレームワーク
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-

最新のサポート対象プラットフォームとフレームワークを取得するには、常に以下を実行してください:```bash python dakshscra.py -l R

---

## 設定リファレンス

### `config/tool.yaml`

Daksh SCRA のランタイムデフォルトは `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

Analyzer 設定オプション:

  • analysis.run_by_default
    • true: スキャン中にアナライザーが自動的に実行されます
    • false: 設定またはCLIで再度有効にしない限り、アナライザーは無効になります
  • analysis.include_frameworks
    • true: フレームワーク検出が存在する場合、フレームワークレベルのアナライザーエントリを含めます
    • false: プラットフォームレベルのアナライザー出力のみ
  • analysis.report_theme
    • hacker_mode: ダークで高コントラストなモダンアナライザーテーマ(デフォルト)
    • professional_mode: ライトなモダンアナライザーテーマ
    • both: 両方のテーマバリアントを並べて生成します

RDLルール作成

RDL(Rule Description Language)は、DakshSCRAの外部化されたルールロジック層です。現在のアーキテクチャでは:

  • XMLルールはルールインベントリのままであり、nameregex、説明、オプションのscan_configなどのメタデータを保持します。
  • RDLロジックはcore/rdl_engine.pyによって実行されます。
  • ルールロジックファイルはrules/scanning/logic/...の下に置かれ、XMLから<rdl_ref>を使用して参照されます。
  • rdl_ref値はrules/scanning/を基準に解決されます。例: logic/php/core/some_rule.rdl -> rules/scanning/logic/php/core/some_rule.rdl
  • ロジックの結果は、logic_enginelogic_sourcelogic_reasonlogic_tracelogic_consulted_fileslogic_outcomeなどのメタデータとしてレポートJSONにエクスポートされます。

古いインラインの<rdl>形式は、もはやアクティブなアーキテクチャではなく、新しいルールには使用しないでください。

RDLアーキテクチャの概要```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

#### スキャン順序

ソースルールの場合、DakshSCRAは次の順序でロジックを評価します:

1. Reconが一致するプラットフォームとフレームワークを選択します。
2. XMLルールが `rules/scanning/platform/...` から読み込まれます。
3. `regex` が存在する場合、候補行またはファイル全体の一致を検出します。
4. `exclude` が存在する場合、そのルールの明らかなノイズを除去します。
5. `rdl_ref` の外部 `.rdl` ファイルが、現在のファイルテキスト、現在のファイルパス、およびプロジェクトルートに対して評価されます。
6. RDLスクリプトが合格した場合、DakshSCRAは検出結果を保持し、エクスポートされたロジックメタデータをレポート出力に統合します。
7. RDLスクリプトが失敗した場合、一致はRDL失敗理由と決定トレースメタデータとともに抑制されます。

`filepaths.xml` のファイルパスルールでは、同じ `rdl_ref` モデルが適用されますが、一致対象は
ソースコードテキストではなく正規化された相対パスです。このモードでは、RDLは相対パス
文字列を現在のファイルテキストおよびパスコンテキストとして受け取ります。

#### 現在のルール構造```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>

現在の .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.

#### 現在のレイアウト```text
rules/
└── scanning/
    ├── platform/
    │   ├── php/php.xml
    │   ├── java/java.xml
    │   └── ...
    └── logic/
        ├── common/core/
        ├── php/core/
        ├── php/framework/laravel/
        ├── mobile/android/core/
        ├── filepaths/core/
        └── ...

実行セマンティクス

  • WHEN PRESENTWHEN MISSINGWHEN CURRENT_FILE_MATCHES は現在のファイルテキストに対して評価されます。
  • WHEN FILE_NAME_ISWHEN FILE_PATH_MATCHES は現在のファイルパスコンテキストに対して評価されます。
  • WHEN EXPRPRESENT:MISSING:EXISTS: 述語に対するブール論理をサポートします。
  • OBSERVE PROJECT_HAS_GLOB ... AS ... はファインディングをゲートしません。関連するプロジェクトファイルをトレースメタデータに記録するだけです。
  • REPORT ASREASONFAIL_REASONTRACE はエクスポートされるレポートメタデータを制御します。
  • 正規表現トークンは、生のパターンまたは /pattern/flags として記述でき、ims がサポートされます。

サポートされている RDL コマンド

コマンド動作典型的な用途
WHEN PRESENT <regex>現在のファイルテキストにパターンが存在することを要求同時に発生するリスクのある API や機密フィールドを要求
WHEN MISSING <regex>現在のファイルテキストにパターンが存在しないことを要求緩和策がすでに存在する場合に抑制
WHEN EXPR <expr>PRESENT: / MISSING: / EXISTS:&&、`
WHEN CURRENT_FILE_MATCHES <regex>現在のファイルテキスト全体に対してマッチング複雑なファイル全体の条件を再チェック
WHEN FILE_NAME_IS <name>現在のファイル名が完全に一致することを要求plist / manifest / config ルールを制限
WHEN FILE_PATH_MATCHES <glob>現在の相対パスがグロブに一致することを要求フレームワーク / 設定パスのルールを絞り込む
UNLESS CURRENT_FILE_MATCHES <regex>ファイル全体が除外パターンに一致する場合に失敗既知の安全な構造ケースをブロック
OBSERVE PROJECT_HAS_GLOB <glob> AS <label>関連するプロジェクトファイルをトレースメタデータに記録サポートする設定ファイルや関連ファイルを表面化
REPORT AS <outcome>ルールの結果を設定。通常は area_of_interest明示的な結果の将来対応
REASON <text>ルールがパスしたときに表示される理由ファインディングが表示されたままの理由を説明
FAIL_REASON <text>ルールがマッチを抑制したときに表示される理由ヒットがフィルタリングされた理由を説明
TRACE <text>デバッグ / 判断トレース行を追加移行 / デバッグのサポート

WHEN EXPR のブール式は以下をサポートします:

  • PRESENT:<regex>
  • MISSING:<regex>
  • EXISTS:<regex>
  • &&||!、および括弧

例 1 - PHP SQL インジェクションのゲーティング

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>

外部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.

例2 - ファイル認識チェックを備えたAndroidマニフェストルール

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>

外部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.

例3 - ファイルパス領域の関心ルール

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

外部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.

作成ガイド

  • regex は候補を捕捉できる程度に広く保ち、その後 RDL でコンテキストを絞り込む。
  • すべてのルールロジックには rdl_ref を優先し、.rdl ファイルを適切なプラットフォーム/フレームワークのロジックツリーの隣に配置する。
  • 新しいインライン <rdl> ブロックを追加しない。
  • 単純なゲートには WHEN PRESENT / WHEN MISSING を使用し、ロジックが真にブール値の場合にのみ WHEN EXPR を使用する。
  • レビュー担当者向けの理由は REASON に、抑制の説明は FAIL_REASON に記載する。
  • PRESENTMISSING はファイル全体のチェックとして扱う。ファイル内のどこかに緩和策があれば、そのファイルのすべての一致を抑制できる。
  • OBSERVE PROJECT_HAS_GLOB を使用して、プロジェクトコンテキストで検出結果を補完する。パス/フェイルのゲートとしては使用しない。
  • logic/... パスは安定させ、プラットフォームスコープに保つ。これにより、XML ルールは薄く保たれ、ロジック層は再利用可能な状態を維持できる。

レポート出力構造

すべての出力は 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

ランタイムファイル(スキャン状態、ログ、インベントリ)は `runtime/` 配下に書き込まれます。

Web UI 経由で実行する場合、各ジョブの出力は追加で `runtime/webui/jobs/<job-id>/artifacts/` 配下にスナップショットされます([Web UI(Docker)](#web-ui-docker) を参照)。

---

## 著者

| | |
|---|---|
| ウェブサイト | [coffeeandsecurity.com](https://www.coffeeandsecurity.com) |
| メール | [email protected] |
| Twitter / X | [@coffeensecurity](https://x.com/coffeensecurity) |
| ソース | [github.com/coffeeandsecurity/DakshSCRA](https://github.com/coffeeandsecurity/DakshSCRA) |
| ライセンス | GNU General Public License v3.0(GPL-3.0) |

DakshSCRA がチームの時間、労力、コストを大幅に節約し、高価な商用ツールへの依存を減らし、レビュー範囲を改善し、コードレビューをより構造化され効果的なものにしたなら、ぜひご連絡いただき、あなたの経験を共有してください。私は常に思慮深いフィードバックや興味深い会話を受け付けています。

バグを見つけた場合や貢献したい場合は、GitHub で issue または pull request を開いてください。

カテゴリ