
The SEDATED® Project (Sensitive Enterprise Data Analyzer To Eliminate Disclosure) focuses on preventing sensitive data such as user credentials and tokens from being pushed to Git.
今日の CICD 環境で必要とされる無数のコード変更に伴い、開発者は機密情報を意図せず含むコードを絶えずプッシュしています。この潜在的な機密データの露出は組織にとって大きなリスクです(2017 OWASP Top Ten #3 - 機密データの露出)。SEDATED® は、すべての受信コード変更を自動的にレビューし、開発者に即座にフィードバックを提供することでこの問題に対処します。機密データを検出した場合、コミットが Git サーバーにプッシュされるのを防ぎます。
**注記: SEDATED® がスキャンするのは、コミットプッシュ内で追加または変更された行(パッチファイル内で + で始まる行)のみです。コミットプッシュ内で削除される行(パッチファイル内で - で始まる行)は SEDATED® ではスキャン されません。
git clone https://github.com/OWASP/SEDATED.git
cd SEDATED/
cp /config/whitelists/commit_whitelist.txt.example /config/whitelists/commit_whitelist.txt
cp /config/whitelists/repo_whitelist.txt.example /config/whitelists/repo_whitelist.txt
cp /config/enforced_repos_list.txt.example /config/enforced_repos_list.txt
組織固有の SEDATED® 実装を、組織の希望する Git リポジトリ(GitHub、GitLab、Git など)にプッシュします。
GitHub Enterprise インスタンスでこれを実行する手順は、GitHub_Enterprise_Setup.md にあります。
always_reject.sh は SEDATED® の pre-receive.sh スクリプトに置き換える必要があります。pre-receive.sh スクリプトからアクセスできるようにする必要があります。pre-receive.sh と組み合わせて使用される SEDATED® カスタム設定ファイルです。pre-receive.sh からソースされる組み込みのカスタマイズ可能な変数と関数を提供することで、組織は SEDATED® の pre-receive.sh ファイル内のソースコードを変更することなく、SEDATED® 実装をカスタマイズできます。config/custom_configs.sh 内の use_enforced_repo_check_custom フラグが "True" に設定されている場合に使用されます。/* を追加します。/config/enforced_repos_list.txt ファイルに含まれていない場合、プッシュする人(コマンドラインからプッシュしている場合)はカスタマイズ可能なメッセージ(/config/custom_configs.sh ファイルでカスタマイズ)を表示され、SEDATED® はプッシュに含まれるコードを一切スキャンしません。/config/custom_configs.sh にあり、"True" または "False" に設定できます。
/config/enforced_repos_list.txt にリストされているリポジトリにのみ SEDATED® が「適用」されます。それ以外の SEDATED® が「有効」であっても /config/enforced_repos_list.txt ファイルにリストされていないリポジトリからのプッシュでは、カスタムメッセージが表示されるだけで、コードはスキャンされません。config/custom_configs.sh の use_enforced_repo_check_custom フラグが "True" に設定されている場合にのみ存在する必要があります。pre-receive.sh 内の GNU grep が -P フラグを指定して使用し、Perl 互換正規表現(PCRE)として扱われます。/testing/regex_testing/regex_test_script.sh スクリプトを利用する場合は、更新された正規表現に関連するテストケースを追加/削除して /testing/regex_testing/test_cases.txt ファイルを更新する必要があります。これにより、/testing/regex_testing/regex_test_script.sh の結果が正確になります。\ が必要になる場合があります。/config/whitelists/commit_whitelist.txt.example ファイルに示されているように、このファイルでは改行区切りにする必要があります。commit_whitelist.txt)ファイルへのプルリクエストを提出するよう依頼してください。/config/whitelists/repo_whitelist.txt.example ファイルに示されているように、このファイルでは改行区切りにする必要があります。testing/regex_testing/test_cases.txt と組み合わせて使用する SEDATED® 正規表現テストスクリプトは、config/regexes.json 内の正規表現が有効であり、意図したパターンに一致すること、また意図したとおりに除外/不一致となることをテスト/検証するための、シンプルで迅速なオフライン方法です。
/testing/regex_testing/test_cases.txt)に対して正規表現をテストし、正規表現が期待どおりに機能することを確認します。/testing/regex_testing/test_cases.txt)。-P フラグがありません)。/testing/regex_testing/test_cases.txt から取得されます。/testing/regex_testing/regex_test_script.sh に渡して使用するテストケースのリストです。>>pass または >>fail が付加されており、これにより /testing/regex_testing/regex_test_script.sh スクリプトは正規表現の期待結果を認識します。
>>pass は、前述の文字列を含むプッシュが SEDATED® によって受け入れられることを意味します(つまり、正規表現は前述の文字列をフラグ付けしません)。>>fail は、前述の文字列を含むプッシュが SEDATED® によって拒否されることを意味します(つまり、正規表現は前述の文字列をフラグ付けします)。カスタム変数と関数は、主要な処理をすべて行うメインの pre-receive フックファイルを変更することなく、組織が独自の SEDATED® 実装を簡単にカスタマイズできるように設計されています。すべてのカスタム変数と関数は /config/custom_configs.sh にあり、このファイルに含まれる変数の説明は以下のとおりです。
show_SEDATED_link_custom - OWASP/SEDATED GitHub リポジトリへのリンクを表示する場合は "True"(大文字小文字を区別)、それ以外の場合は "False" に設定します。documentation_link_custom - 開発者が拒否されたプッシュをどのように処理すべきかについての組織固有のドキュメントや、SEDATED® に関する一般的な組織固有の情報へのリンクを追加します。
use_enforced_repo_check_custom - "True" または "False"(大文字小文字を区別)。
/config/enforced_repos_list.txt のファイル説明を参照してください。enforced_repo_check_true_message_custom とカスタムメッセージ(use_enforced_repo_check_custom が "True" に設定されている場合のみ必要)。obfuscate_output_custom - "True" または "False"(大文字小文字を区別)。SEDATED® の出力に表示される機密データをマスクするにはこのオプションを使用します。SET_USER_REPO_NAME_CUSTOM
PRINT_ERROR_MESSAGE_CUSTOM
EXIT_SEDATED_CUSTOM
: 「何もしない」になっており、変更する必要はありません。UNABLE_TO_ACCESS_REPO_WHITELIST_CUSTOM
: 「何もしない」になっており、変更する必要はありません。PUSH_ACCEPTED_CUSTOM
: 「何もしない」になっており、変更する必要はありません。UNABLE_TO_ACCESS_REGEXES_CUSTOM
: 「何もしない」になっており、変更する必要はありません。exit 1 してエラーメッセージを出力します。ただし、必要に応じてこれらの場合に追加のカスタムアクションを実行できます(例: 追加のエラーメッセージの出力、ログ記録、メトリクス送信など)。PUSH_REJECTED_WITH_VIOLATIONS_CUSTOM
: 「何もしない」になっており、変更する必要はありません。UNABLE_TO_ACCESS_COMMIT_WHITELIST_CUSTOM
: 「何もしない」になっており、変更する必要はありません。Git バージョン管理システムを利用する SCM ツールとのみ互換性があります。
SET_USER_REPO_NAME_CUSTOM の変更が必要です。.git/hooks/ ディレクトリに配置する必要があります。pre-receive.sample から .sample を削除し、SEDATED® の pre-receive.sh ファイルから、.sample ファイルから作成したばかりの pre-receive ファイルにコードをコピーします。SET_USER_REPO_NAME_CUSTOM の変更が必要になる可能性が高いです。以下のいずれかの方法で貢献できます:
SEDATED® は BSD 3-Clause "New" or "Revised" ライセンス の下でライセンスされています。
**SEDATED® は、ハードコードされた認証情報、キー、シークレットなどのすべてのインスタンスをフラグ付けすることを保証しません。正規表現パターンマッチングを使用しており、ほとんどのインスタンスを検出できるほど優れていますが、完全ではありません。SEDATED® をさらに良くするためのアイデアやプルリクエストはいつでも歓迎します。