安全な依存関係
最新のアプリケーションに存在するコードのかなりの部分は、開発者であるあなたが選択したライブラリと依存関係で構成されています。 これは、時間と費用を節約するための一般的な方法です。 ただし、欠点として、そのようなコードは、他の人が記述したものであっても、あなたのプロジェクトで使用したので、使用するあなたが責任を負うことになります。 研究者が (より悪いケースではハッカーが) このようなサードパーティ製ライブラリのいずれかで脆弱性を発見した場合、それを使用しているアプリにも同じ問題が存在するおそれがあります。
既知の脆弱性を含むコンポーネントを使用することは、この業界において大きな問題です。 これは非常に大きな問題なので、Web アプリケーションの最悪の脆弱性に関する OWASP のトップ 10 リストで、数年にわたって 9 位を維持しています。
セキュリティの既知の脆弱性を追跡する
問題となるのは、脆弱性が発見されたときにそれを知ることです。 ライブラリと依存関係を更新しておくこと (リストの 4 番目) ももちろん役に立ちますが、アプリケーションに影響を与える可能性がある識別された脆弱性を追跡することをお勧めします。
重要
システムに既知の脆弱性がある場合は、悪用できるコードを利用してシステムが攻撃される可能性が高くなります。 弱点が公になった場合、影響を受けるシステムが即座に更新されることが非常に重要です。
Mitre は、一般的な脆弱性と脅威の一覧を管理している非営利組織です。 この一覧は、アプリ、ライブラリ、フレームワークにおけるサイバーセキュリティに関する既知の脆弱性のパブリックに検索可能なセットです。 CVE データベースでライブラリまたはコンポーネントが見つかった場合、それには既知の脆弱性があります。
製品またはコンポーネントにおいてセキュリティ上の欠陥が見つかると、セキュリティ コミュニティによって問題が送信されます。 公開された各問題には、ID が割り当てられており、発見された日付、脆弱性の説明、問題に関する公開された回避策やベンダーのステートメントへの参照が含まれます。
使用しているサードパーティ製コンポーネントに既知の脆弱性があるかどうかを確認する方法
毎日のタスクを携帯電話に入力してこの一覧を確認することもできますが、依存関係が脆弱かどうかを確認できる多くのツールが存在します。 コードベースに対してこれらのツールを実行できます。さらにいいのは、CI/CD パイプラインにツールを追加し、開発プロセスの一環として問題を自動的に確認することです。
- OWASP Dependency Check: Jenkins プラグインがあります
- Snyk: GitHub のオープンソース リポジトリの場合は無料です
- Black Duck: 多くの企業によって使用されています
- Retire.js: JavaScript ライブラリが古くなっているかどうかを確認するためのツールであり、Burp Suite などのさまざまなツールのプラグインとして使用できます
静的コード分析専用に作られている一部のツールもこれに使用できます。
脆弱性のあるコンポーネントを使用したときのリスクの詳細については、このトピックについて特に説明されている OWASP のページをご覧ください。
まとめ
あなたのアプリケーションの一部としてライブラリまたは他のサードパーティ製コンポーネントを使用するとき、あなたはそれらに存在するおそれがあるすべてのリスクも背負うことになります。 このリスクを軽減する最善の方法は、既知の脆弱性がないコンポーネントのみを使用することです。