SDL のセキュリティツールの自動化について確認する
コード開発やリリース後のセキュリティ要件を実装する開発者をサポートするために、Microsoft では、セキュリティの欠陥や脆弱性についてソース コードを自動的にチェックする、セキュリティで保護された一連の開発ツールを提供しています。 Microsoft は、コンパイラ、開発環境など、使用する開発者向けの承認済みツールのリストを組み込みのセキュリティ チェックとともに定義して公開します。 弊社の開発者は、新しいセキュリティ機能を活用するために、承認されたツールの最新バージョンを使用しています。
セキュリティで保護された開発ツールを提供するだけでなく、Microsoft は、自動化されたセキュリティ ツールを使用して、SDL コード分析の要件を実装および適用します。 これらのツールの多くは、コミット パイプラインに組み込まれており、コードが登録され、新しいビルドがコンパイルおよびテストされるたびに、セキュリティ上の欠陥についてコードが自動的に分析されます。 自動セキュリティ ツールで検出された問題は、新しいビルドがセキュリティ レビューを通過してリリースの承認を受ける前に修正されなければなりません。
自動セキュリティ ツールは、コードがコミットされた時点から運用環境で動作するようにリリースされるまで、開発ステージごとにコードをテストするための幅広いカテゴリに分類されます。 次の表は、SDL コード分析用に Microsoft で使用するツールの種類をまとめたものです。
セキュリティ ツール | 説明 |
---|---|
静的コード解析 | ソース コードは、資格情報の有無を含む、潜在的なセキュリティ上の欠陥について分析されます。 |
バイナリ解析 | コードが運用可能であることを確認するために、バイナリ コード レベルの脆弱性を評価します。 |
暗号化スキャン | ソース コードおよびコード実行での暗号化のベスト プラクティスを検証します。 |
構成の検証 | セキュリティ基準およびベスト プラクティスに照らし合わせて、運用システムの構成を分析します。 |
静的コード解析とバイナリ解析
コンパイル前にソース コードを分析すると、セキュリティ コード レビューの高度に拡張性のある手法が提供され、安全なコーディング ポリシーが遵守されていることを確認するのに役立ちます。 静的コード分析ツール、一般的な脆弱性のソース コード、安全でない関数などのセキュリティ上の欠陥、およびソース コードに埋め込まれている資格情報およびその他のシークレットをスキャンします。 これらのツールによって検出された欠陥には、開発者が修正すべきバグとしてフラグが設定されます。
この静的コード解析ツールの大部分は、コミット パイプラインに統合されています。これはソフトウェアが組み込まれるたびに脆弱性を特定し、セキュリティで保護されていないコードが登録されないようにします。 また、静的コード解析ツールを開発者環境に統合し、安全ではない関数の有無などの特定の欠陥を発見し、開発者が積極的にコーディングを行っている間に安全ではないコードをより安全な代替品に置き換えることができるようにしています。
ソース コードの静的分析に加えて、コンパイラ/リンカー設定やその他のセキュリティ関連のバイナリ特性など、バイナリ レベルでセキュリティ上の欠陥をスキャンするために、自動ツールを使用します。 バイナリ解析ツールは、各ビルドで実行され、バイナリのセキュリティ上の欠陥を検出し、ビルドがリリースされる前に修復のためのフラグを設定します。
暗号化スキャン
Microsoft では、セキュリティ上の機密情報や、管理および制御データを含むすべてのデータを、強力な暗号化を使用して送信または保存するときに、意図しない漏えいや改ざんから保護されるよう注意しています。 SDLでは、開発者に対して、信頼性と安全性の高い暗号化を実装した承認済みの暗号化モジュールに制限しています。 このポリシーを適用するために、弊社のツールでは、ソース コードおよびコード実行中に暗号化実装をスキャンして検証します。 セキュリティで保護されていない暗号の使用は、セキュリティ レビュー中に修復と検証が行われます。
構成の検証
Microsoft では、運用チームは DevOps モデルを使用して開発チームと統合されています。 DevOps の一環として、運用環境にビルドがリリースされた後も、コードの安全な運用についての検証を続けます。 運用チームは、安全な展開のチェックリスト、ベースライン構成スキャン、脆弱性スキャン、およびホストベースの侵入検知システムを使用して、ソフトウェアがセキュリティのベスト プラクティスに従って構成され、運用されていることを検証します。 運用チームによって検出された構成の欠陥は修復のためにフラグが設定されます。また、運用チームによって発見されたバグは、適切な開発チームに割り当てられ、コード レベルで修正されます。 運用上のセキュリティを SDL の要件に統合することで、リリース後も製品やサービスのセキュリティを継続的に確保することができます。