
フレームワーク対応の静的コード解析ツールで、自動ソースコードレビュー、プラットフォーム固有のルール、汚染解析、工数見積もり、抑制ベースラインを備えています。
Author:
## Daksh SCRAについて
Daksh SCRA(Source Code Review Assist)は、ソースコードレビュープロセスの効率を高めるために構築されており、コードレビュアーに構造化され整理されたアプローチを提供します。
潜在的な問題をすべて無差別にフラグ付けするのではなく、Daksh SCRAは思慮深い分析を促進し、潜在的な問題の調査と確認を促します。このアプローチにより、あらゆる潜在的な懸念をバグとしてタグ付けしようとする慌ただしさが軽減され、誤検知に費やす混乱と時間の無駄が削減されます。
### デビュー
Daksh SCRAは当初、Black Hat USA 2022(8月6日〜9日)のソースコードレビュートレーニングセッションで、特定の聴衆に対して控えめに紹介されました。公式の一般公開は、ラスベガスで開催されたBlack Hat USA 2023で行われました。
## 機能と特徴
- **ソースコード内の注目領域を特定:** すべてを無差別にバグとしてラベル付けするのではなく、集中的な調査と確認を促します。
- **ファイルパス内の注目領域を特定(世界初):** ファイルパス内のパターンを認識し、レビューに関連するセクションを特定します。
- **使用技術を特定するソフトウェアレベルの偵察:** プロジェクトの技術を特定し、コードレビュアーが適切なルールで正確なスキャンを実行できるようにします。
- **コードレビューのための自動科学的工数見積もり(世界初):** コードレビューに必要な工数を見積もるための測定可能なアプローチを提供します。
- **フレームワーク対応スキャン:** プロジェクトのフレームワークが検出されると、フレームワーク固有のルールを自動的に適用します。
- **テイント分析レポート:** ハッカーモードとプロフェッショナルモードのテーマを備えた、プラットフォーム別のHTMLテイントフローレポート。
- **RDL(Rule Description Language):** `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起動ヘルパーで起動されるブラウザベースのWeb UIを使用することです。スキャンランチャー、ライブコンソールフィード、および過去のレポートの閲覧可能な履歴を提供します。起動ヘルパーにはPython 3(標準ライブラリのみ)が必要です。アプリケーションとその依存関係はDocker内で実行されます。
Dockerセットアップは、同じイメージから構築された独立したサービスとしてWeb UIとCLIを実行するため、同じコンテナからどちらか(または両方)を使用できます。
### Web UIの起動
GitHubからDaksh SCRAをダウンロードした後、**まずZIPアーカイブを展開してください**。
`docker-compose.yml`と`dakshscra.py`を含む展開されたプロジェクトフォルダ内でターミナル(WindowsではPowerShellまたはコマンドプロンプト)を開きます。
**以下のすべての起動コマンドとDocker Composeコマンドは、そのフォルダから実行してください。**
ターミナルが別の場所で開いた場合は、まず展開されたフォルダに移動してください:```text
cd "path/to/extracted/DakshSCRA-folder"
例のパスを、実際のダウンロード場所とフォルダ名に置き換えてください。
代わりにリポジトリをクローンした場合は、その親フォルダから cd DakshSCRA を実行してください。
スタートアップヘルパーは Windows、WSL、Linux、macOS を認識し、その後 コンテナを起動する前に、ホストのルート、利用可能な Windows ドライブ、および一般的なフォルダを読み取り専用でマウントします。Docker を実行しているコンピュータ上で実行してください。
Linux、macOS、または WSL(フォアグラウンド):```bash python3 tools/start_webui.py
Windows PowerShell またはコマンドプロンプト(フォアグラウンド):```powershell
py tools/start_webui.py
--detach を追加するとバックグラウンドモードになり、--dry-run を追加すると検出されたパスを確認できます。
既存の .env パスのオーバーライドは尊重されます。アカウント、スキャン、ランタイム
ボリュームは、コンテナが再作成されても保持されます。
Docker Desktop では、選択したホストパスを共有するための権限が必要になる場合があります。マウントが 拒否された場合は、Docker Desktop でその場所を許可し、ヘルパーを再実行してください。 リモートブラウザには Docker ホストの フォルダが表示され、自身のコンピュータのドライブは表示されません。 自動検出にはローカルの Docker エンジンが必要です。リモートの Docker コンテキストを使用する場合は、 エンジンホスト上でヘルパーを実行してください。
手動で設定したマウントの場合、docker compose up --build -d api web は引き続き
利用できます。そのベースラインでは、リポジトリを /scan-targets に、${DAKSH_HOST_MOUNT:-/} を /host/root にマウントします。Windows ドライブの検出
および一般的なフォルダのショートカットにはヘルパーを使用してください。通常の Compose ではクライアント OS を検出できません。
次に http://localhost:8080 を開きます。
別のポートを使用するには:```bash DAKSH_PORT=9090 python3 tools/start_webui.py
スタックを停止するには:```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 を参照してください。
内部的には、CLI が引き続き信頼できる唯一の情報源です。スキャンをすべて実行し、すべての HTML / PDF / JSON 出力を生成します。Web UI は一度に 1 つのアクティブなジョブを実行し、完了した各ジョブの出力を runtime/webui/jobs/<job-id>/artifacts/ にスナップショットとして保存するため、過去のレポートに引き続きアクセスできます。
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` |
| デフォルトのスキャンルート(リポジトリ、または `DAKSH_SCAN_ROOT`) | `/scan-targets` |
| ホストファイルシステム(Windows のシステムドライブ) | `/host/root` |
| 追加の Windows/WSL ドライブ | `/host/drives/<letter>` |
| 現在のユーザーのホーム | `/host/user` |
| 一般的なホストフォルダ | `/host/locations/<name>` |
| オプションの `DAKSH_HOST_SOURCE` | `/host/source` |
オプションのパスおよび認証の上書き設定には、`.env.example` を `.env` にコピーしてください。
`DAKSH_BROWSE_ROOTS` は **コンテナ** パスのカンマ区切りの許可リストです。
マウントされた場所を自動検出するには未設定のままにしてください。ヘルパーに切り替える際には、古い `/host/c`、`/host/d`、`/mnt` の許可リストを削除または更新する必要があります。
ホストフォルダは読み取り専用です。レポートとランタイムデータは、既存のアプリケーションの場所で書き込み可能なままです。別のドライブを接続した後は、ヘルパーを使用して再起動してください。Docker ソケットや特権コンテナは不要です。
---
## CLI セットアップ
Daksh SCRA を Python で直接実行したいですか?ローカルでのセットアップ方法は次のとおりです。
### 前提条件
- Python 3.8+
- `requirements.txt` に記載されているすべてのライブラリ
### 1. Daksh SCRA のダウンロード```bash
git clone https://github.com/coffeeandsecurity/DakshSCRA.git
または、https://github.com/coffeeandsecurity/DakshSCRA から最新の zip をダウンロードして解凍します。
💡 仮想環境は任意のディレクトリに作成できます - DakshSCRA フォルダ内である必要はありません。
オプション A: ワンステップセットアップ (推奨)```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
仮想環境内では python を使用し、仮想環境外では python3 を使用してください。