
Gryffinは、大規模なWebセキュリティスキャニングプラットフォームです。
Gryffinは大規模なWebセキュリティスキャンプラットフォームです。これは単なる別のスキャナーではありません。既存のスキャナーにおける2つの特定の問題(カバレッジとスケール)を解決するために作成されました。
優れたカバレッジは、偽陰性の減少につながります。本来備わっているスケーラビリティは、大規模で伸縮性のあるアプリケーションインフラストラクチャをスキャンし、サポートする能力につながります。簡単に言えば、単純な水平スケーリングにより、今日1000のアプリケーションをスキャンできる能力を、明日には100,000のアプリケーションに拡張できることを意味します。
カバレッジには2つの側面があります。1つはクロール中、もう1つはファジング中です。クロールフェーズでは、カバレッジはアプリケーションのフットプリントを可能な限り多く見つける能力を意味します。スキャンフェーズ(ファジング中)では、適用された一連の脆弱性についてアプリケーションの各部分を深くテストする能力を意味します。
今日、多くのWebアプリケーションはテンプレート駆動型であり、同じコードやパスから数百万のURLが生成されます。セキュリティスキャナーにとっては、同じコードやパスから生成された数百万のURLのうち、1つだけが必要です。Gryffinのクローラーはまさにそれを行います。
Gryffinの核心は、新しいページをすでに見たページと比較する重複排除エンジンです。新しいページのHTML構造がすでに見たものと類似している場合、それは重複として分類され、それ以上クロールされません。
今日の多くのアプリケーションはリッチアプリケーションです。それらはクライアントサイドJavaScriptに大きく依存しています。そのようなアプリケーションでリンクやコードパスを発見するために、GryffinのクローラーはDOMレンダリングとナビゲーションにPhantomJSを使用します。
Gryffinはスキャナーではなくスキャンプラットフォームであるため、XSSやSQLインジェクションなどの一般的なWeb脆弱性のファジング用であっても、独自のファザーモジュールを持っていません。
必要のない車輪を再発明するのは賢明ではありません。Yahooでの本番スケールのGryffinは、オープンソースおよびカスタムのファザーを使用しています。これらのカスタムファザーの一部は将来オープンソース化される可能性があり、Gryffinリポジトリの一部になる場合とならない場合があります。
デモンストレーション目的で、Gryffinにはsqlmapとarachniが統合されています。それらや他の特定のスキャナーを推奨するものではありません。
哲学は、必要なものだけをファジングできるようにすることでスキャンカバレッジを向上させることです。
Gryffinはスタンドアロンパッケージとして利用可能ですが、主にスケールのために構築されています。
Gryffinはパブリッシャー-サブスクライバーモデル上に構築されています。各コンポーネントは、パブリッシャー、サブスクライバー、またはその両方のいずれかです。これにより、サブスクライバーまたはパブリッシャーノードを追加するだけでGryffinを水平方向にスケールできます。
go1.13 以降--max-msg-size=5000000 オプション付きgo get -u github.com/yahoo/gryffin/...
(作業中)
コードはBSDスタイルライセンスの下でライセンスされています。条件についてはLICENSEファイルを参照してください。