安全でない API またはライブラリ

OWASP カテゴリ: MASVS-CODE: コード品質

概要

安全でない API やライブラリを使用すると、アプリケーションのセキュリティ対策が大幅に弱まります。これらの依存関係のいずれかでセキュリティ侵害が発生すると、攻撃者は多数のベクトルを利用して、中間者攻撃(MitM)やリモートコード実行(RCE)などの広範な攻撃を行う可能性があります。

安全でない依存関係を実装することの脅威は、デベロッパーがセキュリティ評価と脆弱性テストをソフトウェア開発ライフサイクル(SDLC)に統合しない場合や、アプリケーションの依存関係の自動更新ポリシーを実装しない場合に発生することがあります。

依存関係の悪用は、通常、脆弱なライブラリを検索するためにアプリケーション バイナリ(.apk)を分析することから始まります。この時点で、オープンソース インテリジェンス(OSINT)が実行され、以前に発見された悪用可能な脆弱性を発掘できます。その後に攻撃者は、共通脆弱性識別子(CVE)などの一般公開された脆弱性情報を利用して、さらなる攻撃を仕掛ける可能性があります。

影響

安全でない依存関係が悪用されると、リモートコード実行(RCE)、SQL インジェクション(SQLi)、クロスサイト スクリプティング(XSS)などの広範な攻撃につながる可能性があります。そのため、全体的な影響は、サードパーティ ソフトウェアに導入されて攻撃者が悪用する恐れのある脆弱性の種類と直接的に関係しています。脆弱な依存関係が悪用されると、データが侵害されてサービスが利用できなくなり、評価や売上に重大な影響が及ぶ可能性があります。

リスクの軽減

多層防御

より強力なセキュリティ対策を確保し、アプリケーションの攻撃対象領域を減らすには、以下に挙げる緩和策を組み合わせて実行する必要があります。正確なアプローチは、常に状況に応じて評価する必要があります。

依存関係の脆弱性の評価

サードパーティ コード内の脆弱性を検出するために、開発ライフサイクルの始めに依存関係の検証を実装します。このフェーズでは、社内でビルドされていないコードが本番環境にロールアウトされる前に、安全かどうかをテストします。ソフトウェア開発ライフサイクル内に静的アプリケーション セキュリティ テスト(SAST)ツールと動的アプリケーション セキュリティ テスト(DAST)ツールを実装することで検証を補完し、アプリケーションのセキュリティ対策を改善できます。

依存関係を継続的に更新する

コードに埋め込まれた依存関係を継続的に更新するよう、常に心がけてください。そのためには、サードパーティ コンポーネントが新しいセキュリティ パッチをリリースするたびに、本番環境にプッシュされる自動更新の実装をおすすめします。

アプリケーション ペネトレーション テストを実施する

定期的にペネトレーション テストを実施します。この種のテストの目的は、プロプライエタリ コードやサードパーティ依存関係に影響しかねない既知の脆弱性を発見することです。また、セキュリティ評価では、未知の脆弱性(ゼロデイ)がしばしば発見されます。ペネトレーション テストは、アプリケーションの現在のセキュリティ対策状況をデベロッパーに提供し、対処すべき悪用可能なセキュリティ問題に優先順位をつけるため、デベロッパーにとって有益です。

参考資料