dawnは、Webアプリケーションをセキュリティ上の問題についてレビューするために設計されたソースコードスキャナーです。
このツールはRubyで記述されたWebアプリケーションをスキャンでき、主要なMVC(Model View Controller)フレームワークを標準でサポートしています。
dawnバージョン2.0は知識ベースに680以上のセキュリティチェックを搭載しており、NISTのNational Vulnerability Databaseから毎週更新されています。
コード上でdawnを実行すると、プロジェクトのGemfile.lockを解析して使用されているgemを特定し、使用しているRubyインタプリタのバージョン、または使用しているRubyバージョン管理ツール(RVM、rbenvなど)で宣言されたバージョンを検出しようとします。
次に、ツールはWebアプリケーションが使用するMVCフレームワークを特定し、それに応じてセキュリティチェックを適用します。Railsアプリケーションに特化したチェックや、あらゆるRubyコードに適用可能なチェックが用意されています。
dawnはビューのコードも理解し、シンクをバックトラックして、実際に記述したコードによって導入されたクロスサイトスクリプティングやSQLインジェクションを検出することもできます。(プロジェクトロードマップ上では、このコード部分が今後の開発努力の大部分を占めることになります。)
dawnのセキュリティスキャン結果は、脆弱性のリストと、より強固なWebアプリケーションを構築するために実施すべき緩和策のリストです。
最新のdawnバージョンは、Rubygemsから以下のようにしてインストールできます。
$ gem install dawnscanner
その後、知識ベースをGithubからダウンロードし、アーカイブを$HOME/dawnscanner/kbディレクトリに展開する必要があります。
典型的な知識ベースのディレクトリ構造は次のようになります。
$ ll ~/dawnscanner/kb
total 56K
drwxr-xr-x 2 thesp0nge users 28K 29 mar 18.27 bulletin
drwxr-xr-x 2 thesp0nge users 72 7 lug 2021 generic_check
-rw-r--r-- 1 thesp0nge users 65 29 mar 17.06 kb.yaml
-rw-r--r-- 1 thesp0nge users 74 29 mar 17.06 kb.yaml.sig
drwxr-xr-x 2 thesp0nge users 4,0K 7 lug 2021 owasp_ror_cheatsheet
知識ベースは次のように構成されています。
バージョン2.0以降、ツールはサブコマンドを使用して特定のタスクを開始します。各サブコマンドには固有のヘルプメッセージがあります。
scanサブコマンドは、指定されたターゲットをセキュリティ上の問題についてスキャンするようdawnに指示します。
$ dawn scan target
現時点では、結果はテキスト形式でのみ利用可能で、スキャンのタイムスタンプを名称とするディレクトリ下の$HOME/dawnscanner/results/targetに保存されます。targetは分析対象のアプリケーション名です。
kbサブコマンドを使用して知識ベースを照会することができます。
dawn kb find # 指定された脆弱性について知識ベースを検索します
dawn kb help [COMMAND] # サブコマンドまたは特定のサブコマンドについて説明します
dawn kb lint # 知識ベースの内容が正しいかチェックします
dawn kb list gem_name[gem_version] # 引数として渡されたgemに影響するすべてのセキュリティ問題を一覧表示します(バージョン文字列は省略可能です)
dawn kb status # 知識ベースの状態をチェックします
dawn kb unpack # KBライブラリパスにセキュリティチェックを展開します
Twitterプロフィール: @dawnscanner Githubリポジトリ: https://github.com/thesp0nge/dawnscanner
フィードバックは大変重要であり、皆様の声をお聞かせいただけることを心から楽しみにしています。
もしあなたがdawnユーザーであり、その有用性を感じ、リリースプロセスに組み込んでおり、プロジェクトをオープンにサポートしたいとお考えなら、こちらにあなたの情報を掲載することができます。あなたがこのツールをどのように感じているか、また会社のロゴがあればそれも添えて、issueを開いてください。
ありがとうございます。
saten: READMEのタイポについて最初のissueを投稿してくれました。
presidentbeef: 私がdawnを作成するきっかけとなった素晴らしい業績と、比較マトリクスのダブルチェックに対して。Issue #2はあなたのものです。
marinerJB: さまざまなバグ報告とさらなるアイデアに対して。
Matteo: APIとそのgithub.comフックでの使用に関するアイデアに対して。
Copyright (c) 2013-2023 Paolo Perego [email protected]
MIT License
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.