OSS-RISK-10 過小または過大な依存関係 (Under/over-sized Dependency)

説明:

コンポーネントはほとんど機能がない (rpm マイクロパッケージなど) のこともあれば、多くの機能 (そのうち一部しか使用されないかもしれません) を提供することもあります。

非常に小さいコンポーネント (数行のコードしかないものなど) は、比較的小さな機能性にもかかわらず、大規模なものと同じサプライチェーンリスク (アカウントの乗っ取り、悪意のあるプルリクエスト、CI/CD の脆弱性など) にさらされます。言い換えると、使用されるコード行数が非常に少ない代わりに、利用者のセキュリティはアップストリームプロジェクトのセキュリティと開発態勢に依存することになります。

一方、非常に大規模なコンポーネントは、標準的なユースケースでは必要とされませんが、コンポーネントの攻撃対象領域を助長する多くの機能を蓄積している可能性があります。さらに、そのような未使用の機能は、さらなる未使用の依存関係 (肥大化した依存関係) をもたらす可能性もあります。

事例:

  1. Apache Log4j

    リモートサーバーから任意の Java クラスをダウンロードして実行する機能が含まれており、最終的に Log4Shell につながりました。

  2. Left-pad (npm, 2016)

    文字列を詰め込むための 11 行のコードが含まれていました。npm から削除されたことで、多数のダウンストリームの利用者のビルドが壊れました。

対応:

  1. 未使用のコンポーネント機能を認識します。特にネットワーク接続の確立など、重要な (セキュリティ上センシティブな) API を使用する場合。

    未使用の機能を無効にするか、より少ない機能を持つ、より小さな代替オープンソースコンポーネントに移行する可能性を評価します。

  2. マイクロパッケージを認識し、その機能を内部で再開発することを検討します。

参照:

  1. セキュリティ上センシティブな API の使用を明らかにするツール:

    • Google Capslock Go 向け

    • Microsoft Application Inspector さまざまなプログラミング言語向け

    • Rahman et al.: Less Is More: より良い依存関係選択のための Java におけるセキュリティ重視の API 呼び出しに関する混合手法研究

Last updated