
フレームワーク対応の静的コード解析ツールで、自動ソースコードレビュー、プラットフォーム固有のルール、汚染解析、工数見積もり、抑制ベースラインを備えています。
Author:
- Debasis Mohanty ([email protected])
- Twitter / X: @coffeensecurity
- www.coffeeandsecurity.com
Daksh SCRA(Source Code Review Assist)は、ソースコードレビュープロセスの効率を高めるために構築されており、コードレビュアーに構造化され整理されたアプローチを提供します。
あらゆるものを潜在的な問題として無差別にフラグ付けするのではなく、Daksh SCRAは思慮深い分析を促進し、潜在的な問題の調査と確認を促します。このアプローチにより、あらゆる潜在的な懸念をバグとしてタグ付けしようとする混乱を軽減し、誤検知に費やす混乱と時間の無駄を削減します。
Daksh SCRAは当初、Black Hat USA 2022(8月6日〜9日)のソースコードレビュートレーニングセッションで特定の聴衆にさりげなく紹介されました。公式の一般公開デビューは、ラスベガスで開催されたBlack Hat USA 2023で行われました。
DakshSCRAは、手動ソースコードレビューのための独自の機能を結集しています。ファイルパスの関心領域や工数見積もりから、ソフトウェア偵察、コンテキストルール、クロスファイル分析までをカバーします。
| 機能 | タグ | 重要な理由 |
|---|---|---|
| ファイルパスの関心領域 | 世界初* | コードだけでなくファイル名やディレクトリ名自体をスキャンし、レビュアーが見落としがちなバックアップファイル、デバッグエンドポイント、設定ダンプ、認証情報ファイルなどの疑わしいパスをフラグ付けします。 |
| 科学的工数見積もり | 世界初* | コードベースの規模とプロジェクトのシグナルに基づいて、手動レビューの工数を定量化して見積もります。設定可能な前提条件により、エンゲージメント計画が明示的かつ再現可能になります。 |
| バグフラグではなく関心領域 | レビュアーが主導権を保持 | すべての一致を脆弱性としてタグ付けするのではなく、調査に値するパターンを提示します。コンテキストルールと抑制エビデンスによりトリアージノイズを削減し、レビュアーが主導権を保持します。 |
| ソフトウェア偵察 | 統合ソフトウェア偵察 | スキャン前にファイル内容とプロジェクト構造から言語、フレームワーク、インフラストラクチャを検出します。技術インベントリを自動ルール選択、セマンティック分析、レビュー計画に結び付けます。 |
| RDL条件付きルール | 高度な条件付きルール | PRESENT、MISSING、ブール式、ファイル/パス条件により、単純な正規表現を超えます。RDL v1は決定と抑制理由を記録し、RDL v2は型付きセマンティックサービスと境界付きクロスファイルエビデンスを追加します。 |
| 高度なセマンティックおよびクロスファイル分析 | ゼロから構築 | 専用に構築された分析を使用して、サポートされているファイル境界を越えてユーザー制御データをソースからシンクまで追跡します。Advanced Analysisは2026年3月に元のRDLとともにリリースされ、RDL v2はファイル間でセマンティックルール評価を拡張します。 |
| プラットフォーム非依存の自動スキャン | 自動マルチプラットフォーム | -r auto を使用して、事前に単一言語を選択することなく混在技術プロジェクトをスキャンします。偵察により、サポートされているプラットフォームとフレームワークのルールが自動的に選択されます。v0.23-beta、2024年11月に導入。 |
| アプリケーション固有のセキュリティロジック | カスタムRDLパック | アプリケーションの信頼境界、認可決定、ビジネス不変条件をオプションのカスタムRDLパックにエンコードします。プロジェクト固有のロジックは汎用スキャンルールと並行して実行されます。 |
| インタラクティブなテキストおよびグラフエビデンス | エビデンスを追跡 | リンクされたテキストビューとグラフビューで記録されたソースからシンクへのパスを追跡します。ソース抜粋、ファイルレーン、ハンドオフの詳細により、クロスファイルエビデンスを検査しやすくなります。 |
| レビューライフサイクルとポータブルレポート | レビュー、再開、エクスポート | スキャン履歴、レビュー抑制を保持し、中断されたスキャンを再開します。共有CLIおよびWeb UIレポートを通じてHTML、PDF、編集可能なWord、JSONをエクスポートし、利用可能な場合はオフラインエビデンスナビゲーションを提供します。 |
日付はリポジトリまたはリリースのマイルストーンを示すものであり、世界的な優先権を独立して確立するものではありません。「未検証」とは、レビューされたエビデンスからリリース番号が確立されていないことを意味します。
リリースマイルストーンと比較エビデンスは上記に記載されています。
DakshSCRAはBlack Hat USA 2022トレーニング中に導入され、Black Hat USA 2023で公開デビューしました。これらの日付はプロジェクトの導入を説明するものであり、現在のすべての機能を説明するものではありません。
積極的な機能強化が進行中です。複数の新機能と改善が今後のリリースで計画されています。
ルールの更新や追加、今後の開発への貢献を歓迎します。
バグを見つけた場合は、[email protected]まで報告してください。
詳細なドキュメント: https://dakshlabs.com/#docs
Daksh SCRAを実行する方法は2つあります - ワークフローに合う方を選んでください:
| 最適な用途 | ジャンプ先 | |
|---|---|---|
| 🌐 Web UI (Docker) | 最も簡単な始め方 - 1つのコマンド、ブラウザダッシュボード、ライブスキャン進捗、レポート/アーティファクトブラウザ。ほとんどのユーザーに推奨。 | Web UI (Docker) |
| 💻 CLI (Python) | スクリプト、CIパイプライン、またはDockerなしでのスキャン実行。 | CLIセットアップ |
どちらのパスもまったく同じスキャンエンジンを実行します - Web UIは同じCLI上のブラウザフロントエンドであるため、どちらでも結果は同一です。
Daksh SCRAを実行する最速の方法は、ホスト対応のDocker起動ヘルパーで起動されるブラウザベースのWeb UIを使用することです。スキャンランチャー、ライブコンソールフィード、過去のレポートの閲覧可能な履歴を提供します。起動ヘルパーにはPython 3(標準ライブラリのみ)が必要です。アプリケーションとその依存関係はDockerで実行されます。
Dockerセットアップは、同じイメージから構築された独立したサービスとしてWeb UIとCLIを実行するため、同じコンテナからどちらか(または両方)を使用できます。
GitHubからDaksh SCRAをダウンロードした後、まずZIPアーカイブを展開してください。
docker-compose.ymlとdakshscra.pyを含む展開されたプロジェクトフォルダ内で
ターミナル(WindowsではPowerShellまたはコマンドプロンプト)を開きます。
以下のすべての起動およびDocker Composeコマンドはそのフォルダから実行してください。
ターミナルが別の場所で開いた場合は、まず展開されたフォルダに移動してください:
cd "path/to/extracted/DakshSCRA-folder"
例のパスを、実際のダウンロード場所とフォルダ名に置き換えてください。
代わりにリポジトリをクローンした場合は、その親フォルダから cd DakshSCRA を実行してください。
スタートアップヘルパーは Windows、WSL、Linux、macOS を認識し、その後 コンテナを起動する前に、ホストのルート、利用可能な Windows ドライブ、および一般的なフォルダを読み取り専用でマウントします。Docker を実行しているコンピュータ上で実行してください。
Linux、macOS、または WSL(フォアグラウンド):
python3 tools/start_webui.py
Windows PowerShell またはコマンドプロンプト (フォアグラウンド):
py tools/start_webui.py
デタッチ(バックグラウンド)モードで実行するには、--detach を追加します。コンテナは起動コマンドが戻った後も実行し続け、ターミナルは利用可能なままになります。
Linux、macOS または WSL(デタッチ):
python3 tools/start_webui.py --detach
Windows 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 を開きます。
別のポートを使用する場合:
DAKSH_PORT=9090 python3 tools/start_webui.py
スタックを停止するには:
docker compose down