このスクリプトは、大規模で多様なコードベースからハードコードされた認証情報、または設定ファイル内の認証情報をスキャンすることを目的としています。これらは深刻なセキュリティ問題を引き起こし、検出と管理が非常に困難になる可能性があります。
このスクリプトの具体的な焦点は、CI/CDパイプラインで開発チームが直接使用できるツールを作成し、コードに認証情報が存在する場合にチームに警告を発することで、この問題の是正プロセスを管理し、問題が発生したらすぐに修正できるようにすることです。
このツールを特定時点のスキャナとして適用することも可能ですが、認証情報は時間の経過とともにコードベースに再び混入する可能性が高いため、スクリプトをCI/CDプロセス、自動ビルドメカニズム、またはチームが実施する他の定期的な自動スキャンプロセスに統合することを強くお勧めします。
このスクリプトは以下の目的を念頭に置いて作成されています:
このスクリプトは、他の人気のあるSASTツールとの互換性を提供しようと試みています。
ファイルの先頭付近にある '# noqa file' というテキストは、そのファイル内のそれ以降の問題の報告を抑制します。同様に、'flake8: noqa' というテキストも抑制します。
個々の行にある '# noqa' というテキストは、その行の報告を抑制します。他の一般的な抑制コメントも多数動作します。現在のリストは次のとおりです:
# noinspection
# noqa
#noqa
@SuppressWarnings
DevSkim
NOLINT
NOSONAR
checkmarx
coverity
fortify
noinspection
nosec
safesql
veracode
また、チームメンバーに偽陽性の理由が特に認証情報の存在であることを明確にするために、'# noqa cred' というコメントを使用することをお勧めします。ここで参照されているツールの多く(例:devskim)は、使用中の言語やプラットフォームに関連する特定のエラーコードを利用しており、同じ目的を果たします。同じコード行に異なるタイプの複数のエラーが存在する可能性があります。
SASTツールからの真陽性のアラートを抑制することは非常に悪い慣行であると警告します。コードベース内のSAST/リント抑制コメントを定期的にレビューし、真陽性が抑制されていないことを確認することは良い慣行です。
'-nosuppress' コマンドラインフラグにより、スクリプトはすべての抑制コメントを無視します。