AppSec は難しい

Jan 17 2023
プログラムも同様です…
アプリケーションセキュリティプログラムは難しいです。可動部分がたくさんあります。

アプリケーションセキュリティプログラムは難しいです。可動部分がたくさんあります。ただし、セキュリティの脆弱性を最小限に抑える方法でソフトウェアが設計、構築、展開されていることを確認し、それによってユーザーとそのデータを潜在的なサイバー攻撃から保護する必要があります。堅牢な AppSec プログラムには、セキュリティの脆弱性や違反のリスクを最小限に抑えるために、ソフトウェア開発プロセス全体を通じてさまざまな実践を統合する包括的なアプローチが含まれます。これは決して完全なリストではありませんが、範囲の感覚を得るには役立ちます。

脅威モデリングは、ソフトウェアの潜在的なセキュリティ上の脅威や脆弱性が悪用される前に特定し、評価するプロセスです。これは、ソフトウェアのアーキテクチャと設計を分析し、機密データを特定し、潜在的な攻撃ベクトルを特定することによって実行できます。アジャイルベースの脅威モデリングは、アジャイル ソフトウェア開発の原則と脅威モデリングを組み合わせた方法論です。このアプローチにより、チームは開発プロセスの早い段階で潜在的なセキュリティ上の脅威と脆弱性を特定して対処できると同時に、変化する要件にも迅速に対応できます。

セキュアなコーディングは、セキュアなソフトウェア開発におけるもう 1 つの重要な実践です。これには、一般的なセキュリティ上の欠陥や脆弱性のないコードを作成することが含まれます。これは、 OWASP マテリアルなどのセキュア コーディング ガイドラインの使用を通じて支援できます。これらの種類のリソースは、安全なコードを作成するための一連のベスト プラクティスを開発者に提供し、セキュリティの脆弱性につながる可能性のあるよくある間違いを回避するのに役立ちます。

ソフトウェアにパッチを適用し続けることも重要な習慣です。これには、ソフトウェア自体だけでなく、サードパーティのライブラリや依存関係も含まれます。これにより、既知のセキュリティ脆弱性がタイムリーに対処され、攻撃者による悪用のリスクが軽減されます。

もちろん、ソフトウェアのセキュリティ脆弱性を特定して対処するために使用される手法である侵入テストと脆弱性スキャンがあります。これらの技術は、ソフトウェアに対する実際の攻撃をシミュレートし、開発者が攻撃者に悪用される前に脆弱性を特定して対処できるようにします。ソフトウェア構成分析 (SCA)、静的アプリケーション セキュリティ テスト (SAST)、動的アプリケーション セキュリティ テスト (DAST)、対話型アプリケーション セキュリティ テスト (IAST)、モバイル アプリケーション セキュリティ テスト (MAST)、ランタイム アプリケーション自己保護 ( RASP) を使用すると、セキュリティの脆弱性の特定と修復を自動化できます。また、API セキュリティは最新のソフトウェア開発の重要な側面です。

安全なソフトウェア開発のもう 1 つの重要な側面は、データ損失防止 (DLP) です。DLP ソリューションを使用すると、個人を特定できる情報 (PII) や秘密などの機密データの不正な公開を検出し、防止できます。

安全なソフトウェア開発には教育とトレーニングも重要です。セキュリティ チャンピオン プログラムと開発者向けの教育プログラムは、開発チームのすべてのメンバーが安全なコードを書くために必要な知識とスキルを確実に身につけるのに役立ちます。これには、最も重大な Web アプリケーション セキュリティ リスクのリストであるOWASP Top 10 と、一般的なソフトウェアの弱点のリストであるCommon Weakness Enumeration (CWE) Top 25を理解することが含まれます。

シフトレフト手法とパイプラインの自動ゲートも、安全なソフトウェア開発には不可欠です。これらのプラクティスにより、開発者は潜在的な脆弱性がコードベースの一部となり、ツールを継続的インテグレーションおよびデリバリー (CI/CD) パイプラインに統合して実稼働環境にデプロイされる前に、早い段階で特定して対処でき、またそれらのツールの出力も取得できます。主要業績評価指標 (KPI) を追跡できる場所であり、 JIRAなどと統合してアジャイルに作業を管理することで潜在的な脆弱性を優先順位付けすることもできます。

プリコミット git フックも、安全なソフトウェア開発に役立つツールです。これらのフックを使用すると、コードがリポジトリにコミットされる前に、コードの安全性が低いかどうかを自動的にチェックしたり、シークレットのコミットを防止したりすることができます。

AppSec のもう 1 つの重要な側面は、脆弱性の優先順位付けです。これは、重大度と潜在的な影響に基づいて脆弱性を特定し、優先順位を付けるプロセスです。このアプローチにより、組織はリソースを最も重大な脆弱性に集中させ、タイムリーに対処できるようになります。脆弱性を優先順位付けする際には、悪用の可能性、潜在的な影響、悪用の容易さなどの要素が考慮されます。場合によっては、パッチ適用が最善の策ではない可能性があるため、監視、ネットワークのセグメンテーション、アクセス制御などの代替手段を検討することができます。

堅牢な AppSec プログラムを管理するには、適切なツールとプラットフォームを導入することが重要です。一般的なオプションには、可視性を高め、ツール、人材、プロセスを調整するためのEsno などがあります。CheckmarxとVeracode は静的および動的スキャンに多くの機能を提供しており、Snykはオープンソースのセキュリティ機能で評判が高く、プラットフォーム全体としてその使いやすさと開発者中心の点で広く愛されていますが、Black DuckはSCAで高い評価を得ています。Invictiは IAST に適しており、Wizは CSPM に人気が高まっています。コンテナ セキュリティのAquaは実証済み、SpectralOpsDLP の場合はNoName SecurityまたはSalt、Mobile AppSec のNowSecure 、脅威モデリングのIrius Risk、またはより自動化された脅威モデリングと態勢管理アプローチのBionic 。ファジングもあります。これは、未知のものをテストして脆弱性を見つけようとする、動的な動作ベースのテストの一種です。この分野のプラットフォームの非常に現代的な例はMayhemです。

オープンソースとサードパーティのリスクを追跡し続けるには、ソフトウェア部品表 (SBOM) を保管することも重要です。これらのツールの中には、それらを生成できるものもあります (Veracode、Black Duck など)。

これを AppSec プログラムの一部だと考えていない人もいるかもしれませんが、私は、デセプション エンジニアリング技術は、攻撃者のリソースを浪費し、攻撃者をより簡単で安価なターゲットに移動させることを目的とした、より大規模な製品セキュリティ プログラムの一部であるべきだと考えています。この分野の最先端の例はCounterCraft です。ハニーポット技術を強化して考えてみましょう。

さらに、安全なソフトウェア開発にはトレーニングと教育が不可欠です。Secure Code Review のトレーニング オプションには、Secure Code Warrior、Security Journey、Immersive Labs、およびAvataoが含まれます。脆弱性開示プログラム (VDP) はHackerOneなどのプラットフォームを通じて管理でき、バグ報奨金プログラムは Intigriti などのプラットフォームを通じて設定および管理できます。

コードとしてのポリシーの役割、ゲートを完全に自動化する方法、高度に規制された状況で承認ワークフローがどのように機能するかなど、さらに取り上げるべきことはありますが、今はここに残しておく必要があります。

要約すると、安全なソフトウェア開発には、ソフトウェア開発プロセス全体を通じて上記のすべての実践を統合する、包括的かつ多面的なアプローチが必要です。そうすることで、開発者はユーザーとそのデータの安全性とセキュリティを確保し、堅牢で信頼性が高く、安全なソフトウェアを作成できます。セキュリティの状況は常に変化しているため、それに追いつくためには継続的なレビューと調査が必要であることに注意することが重要です。