X9:ResultadosDigitaisが機密データを自動的に検出する方法コードリポジトリ内のデータ

投稿日:

(VitoriaRio)(2020年10月9日)

機能の量が増え続ける企業が大きくなるにつれて、開発者は常に新しいコードを作成して統合し、コミット、プルリクエストを行います、など。アジャイル手法の人気が高まるにつれ、脆弱性分析のためのよりペースの速いソリューションが必須になりつつあります。コードがリポジトリにコミットされるとすぐに、そのコミットに機密情報が含まれている場合は、最終的にデータ漏洩につながる可能性があるため、すぐに対処するためのアクションを実行する必要があります。

ただし、何百ものコミットとプルリクエストは、熟練したセキュリティエンジニアのチームにとっても簡単な作業ではありません。そこで、X9が登場します。X9は、組織のGitHubリポジトリ内の機密情報の検出を自動化するために作成されたオープンソースツールです。コードを自動的に分析し、Slackを介してほぼリアルタイムで通知を作成できます。

アーキテクチャ

Githubでは、 Github Webhookを使用して、コミットやプルリクエストなどのいくつかのイベントを読み取ることができます。 a>。たとえば、開発者がPRを作成すると、Githubプラットフォームでイベントが作成され、Githubプラットフォームは、そのイベントに関する詳細情報を含むメッセージペイロードを事前構成されたルート(この場合はX9インターフェイス)に送信します。このアプローチは、Githubで組織全体のWebhookを構成できるため、X9がこのスコープのすべてのリポジトリを分析できると考えると最も効果的です。

組織全体のイベントを構成することで、X9はそれを保証するだけではありません。すべてのリポジトリが分析されていますが、分析プロセスが合理化されているため、セキュリティエンジニアは、企業の潜在的なセキュリティの脅威をより柔軟に制御できます。

イベントペイロードを受信すると、アプリはリポジトリのブランチを複製し、いくつかのセキュリティを実行します。テスト。各イベントは独立したワーカーによって処理され、スループットが高い場合はスケールアップできます。スキャンされたすべての脆弱性はPostgreSQLデータベースに保存され、Slackチャネルで通知されます。 Slackインターフェースを使用すると、Githubで直接問題を作成したり、脆弱性に誤検知のフラグを立てたりできます。

分析

X9は、特定の署名とパターンを使用して、コード内の適切なデータを検出します。これらの署名は、この特定の目的に合わせて調整された正規表現です。たとえば、r"[a-zA-Z0-9]*\@emailexample.com"は個人のメールを検出する場合があり、以下はファイルの内容(さらに先に定義)内のAWSアクセスキーを検出します。

このアプリケーションでは、ユーザーがカスタムを構成することもできます正規表現。よりドメイン指向のアプローチを可能にします。 X9の署名コンテキストには次の4つのタイプがあります。

  • filename :完全なファイル名を検索します
  • 拡張子:特定の拡張子(例:.pem、.db)を検索します
  • path :リポジトリ上のファイルの所定のフォルダの完全なパスを検索します
  • コンテンツ:ファイル内のパターンを検索します

通知とアクション

Slack Webhook を介して、X9は各検索結果の詳細情報をユーザー定義チャネルに送信します。以下に示すように、機密情報が適切に難読化されていることに注意することが重要です。

インタラクティブコンポーネント(未解決の問題および False Positive ボタン)は、GitHubで直接問題を作成し、脆弱性をそれぞれ誤検知として無視します。メッセージから問題を作成する必要がある場合、脆弱なリポジトリに次の問題形式が作成されます:

ダッシュボード

X9には、脆弱性を視覚化するためのダッシュボードもあります。このダッシュボードは、セキュリティ分析に干渉しないオプションの個別のアプリケーションです。ログイン認証には OpenID Connect を使用します。

ダッシュボードは、リポジトリ名と脆弱性の種類でフィルタリングできるテーブルビューです。作成された場合、問題のリンクも表示されます。

最終的な考え

X9はまだ進行中の作業であり、積極的に更新されています。貢献を歓迎します:)

github.com/ResultadosDigitais/で確認してください。 x9

参考資料

このプロジェクトは、 Shhgit Gitleaks 。ほとんどの署名と分析戦略を提供しました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です