サイバーセキュアソフトウェアを開発するには何が必要ですか?
公開: 2021-11-01サイバーセキュリティは、これまで以上に重要になっています。特に、IoTが社会としての進化の次のステップとなる時代においてはなおさらです。 長期的には複雑化を避けたい場合は、小規模企業であろうとフォーチュン500の巨人であろうと、セキュリティを優先する必要があります。
サイバーセキュリティのリスクのほとんどは、安全に作成されていないアプリケーションに起因するため、サイバーセキュリティの基盤は安全なアプリケーションの開発です。 安全なアプリケーションを開発するには、セキュリティを開発ライフサイクルのすべてのフェーズの一部にする必要があります。 セキュリティを開発のすべての部分に統合する技術は、セキュアソフトウェア開発ライフサイクル(SDLC)と呼ばれます。
SDLCがソフトウェア開発の各フェーズでどのように機能し、サイバーセキュアな最終製品を作成するかを次に示します。
計画
この段階では、アプリケーションの概念が構築され、実行可能性が定量的および定性的に評価されます。 この段階でプロジェクト計画が作成され、プロジェクト要件が確定され、人材が割り当てられます。
この段階のSDLC要件は次のとおりです。
- プロジェクトのコンプライアンスとセキュリティの目標を定義し、開発プロセスで発生するすべてのSDLCアクティビティの詳細な計画を作成します。 ここでの目標は、開発プロセスのできるだけ早い段階でセキュリティの問題に対処することです。
- 技術的および規制上のセキュリティ要件のリストは、開発の後半でコンプライアンス違反を修正するための参照ドキュメントとして作成する必要があります。
- この段階では、基本的なセキュリティトレーニングもチームに提供されます。
この段階は、長期的にはプロジェクトのすべてのセキュリティ活動の基礎として機能します。
デザイン
この段階では、製品は要件を満たすように設計されています。 この段階でアプリケーション構造がモデル化され、プロジェクトで使用されるすべてのサードパーティコンポーネントが選択されます。 この段階の成果物は、後続のすべてのステップのガイダンスのソースとして機能する設計ドキュメントです。
このフェーズの一部である必要があるSDLCプラクティスには、次のものが含まれます。
- 脅威のモデリングは、考えられるすべての攻撃シナリオを特定するために行われ、攻撃を回避するために、関連する対策がアプリケーションの設計に追加されます。 モデリングは、開発プロセスの早い段階で起こりうる脅威を発見するための優れた方法であり、コストを節約するのに役立ちます。 また、将来のインシデント対応計画の基礎としても機能します。
- 設計ドキュメントは、セキュリティ要件に従って検証されます。 これは、アプリに実装する前に脆弱である可能性のある機能を特定するのに役立ちます。
- サードパーティコンポーネントもこのレベルで検査され、それらの脆弱性も修正されます。 脆弱なサードパーティコンポーネントはアプリケーション全体を脆弱にする可能性があるため、これは重要です。
このステップとこれらすべての対策の目標は、最終製品に侵入する可能性のある脆弱性を解決することです。
実装
これが実際の開発段階です。 ここでコードが記述され、アプリがデバッグされ、テスト用にアプリケーションの安定したビルドが作成されます。
この段階では、次のSDLCプラクティスをお勧めします。
- 安全なコーディング慣行はプロセスの一部になります。 プログラマーには、よくある間違いを思い出させ、それらを回避する方法を提案するチェックリストとガイドが提供されます。 これにより、些細な脆弱性が最終製品に侵入する可能性がなくなります。
- ツールは、静的アプリケーションスキャンツールを使用してレビューされます。 これらにより、プログラマーはコードを実行しなくても、コードの潜在的な脆弱性を見つけることができます。 問題が最終的なアプリケーションビルドになるのを防ぐために、これを毎日行うことをお勧めします。
- 自動コードレビューツールの動作を再確認するために、手動のコードレビューもお勧めします。
これらの慣行に従うことで、セキュリティ上の欠陥が最終製品に侵入しないようにします。
テストとデバッグ
コーディングフェーズが完了すると、 `。 このステップの目標は、コード内のエラーを見つけて修正することです。 このフェーズでは、自動テストと手動テストの両方が実行されます。
この段階では、次のSDLCプラクティスをお勧めします。
- 動的アプリケーションスキャナーツール(DAST)は、実行中にコードの脆弱性を明らかにするために使用されます。 これらは、ハッカーの攻撃をリアルタイムでシミュレートします。 このフェーズは誤検知に対して脆弱であり、インタラクティブアプリケーションセキュリティテストツールを使用して修正できます。
- ファジングは、ランダムに生成された入力をアプリケーションにフィードし、それがそれらにどれだけ耐えられるかを確認することによって行われます。
- ペネトレーションテストは、脆弱性を発見するためにブルートフォーシングやその他の一般的な攻撃方法を介してアプリのセキュリティを侵害しようとする重要なステップでもあります。
これを前の段階と組み合わせることで、アプリケーションにセキュリティの脅威がないことを確認します。
リリースとメンテナンス
これは、アプリケーションが稼働し、さまざまな環境で多くのユーザーによって使用され始めるときです。 新しいバージョンは時間とともにリリースされ、ユーザーは古いバージョンをアップグレードするか、そのまま使用するかを選択します。
この段階でのSDLCの推奨事項は次のとおりです。
- 攻撃者は環境全体のセキュリティを危険にさらそうとすることが多いため、監視はアプリケーションだけでなくシステム全体を対象にする必要があります。
- 発生する可能性のあるあらゆる状況に対処するために、明確に定義されたインシデント対応計画が作成されます。
- 新しい脆弱性は時間とともに出現し、アプリケーションを安全に保つために対処する必要があるため、セキュリティチェックを定期的に実行する必要があります。
人生の終わり
これは、アプリケーションが開発者によってサポートされなくなったときです。 ユーザーの機密情報が含まれている場合、アプリはサポート終了規制の対象となる可能性があります。
この段階での次のSDLC対策には、地域の法律および会社のポリシーに従ったデータ保持、またはユーザー契約に従ったデータ廃棄が含まれます。
結論
安全なソフトウェアの開発は、開発のすべての段階を網羅するアプローチを採用しています。 それは計画から始まり、設計が改善され、アプリが安全な方法で開発されることを確認するために実装されます。
展開段階で、またプロジェクトの終了後もセキュリティ作業を維持するための要件もあります。 サイバー犯罪は本物であるため、これが必要です。 昨年、42億ドルを失いました。
これについて何か考えがありますか? コメントで下に知らせてください、または私たちのツイッターまたはフェイスブックに議論を持ち越してください。