依存関係の脆弱性(OSS)とは?
依存関係の脆弱性(OSS)とは、ソフトウェア開発で利用するオープンソースソフトウェア(OSS)のライブラリやフレームワークに潜む脆弱性が、それを使用している全てのシステムに影響を与える問題です。クラウド・ソフトの供給リスクの中でも特に広範囲に影響する脅威で、一つの人気OSSライブラリの脆弱性が、世界中の数百万のアプリケーションを危険にさらします。開発者が便利なOSSを組み込むことで、知らないうちに脆弱性も一緒に取り込んでしまい、攻撃の入り口を作ってしまうのです。
依存関係の脆弱性(OSS)を簡単に言うと?
料理に例えると、市販の調味料やソースを使って料理を作るようなものです。自分で一から作るより便利で早いですが、もしその調味料に問題のある成分が入っていたら、それを使った料理全てが危険になります。さらに、その調味料自体も他の原料(別のOSS)を使っていて、その原料に問題があっても影響を受けます。ソフトウェア開発も同じで、便利なOSSライブラリを使うと開発は早くなりますが、そのライブラリに脆弱性があれば、作ったアプリ全体が危険になります。しかも、何十個、何百個という「調味料」を使っているため、全てをチェックするのは至難の業なのです。
依存関係の脆弱性(OSS)で発生する被害は?
依存関係の脆弱性により、大規模な情報漏洩、システムの乗っ取り、サービス停止などが世界同時多発的に発生します。クラウド・ソフトの供給リスクとして、一つの脆弱性が数千社の企業システムに波及し、Log4jやHeartbleedのような事例では、インターネット全体が危機にさらされました。特に、深い階層の依存関係に潜む脆弱性は発見が困難で、長期間放置されて被害が拡大する傾向があります。
依存関係の脆弱性(OSS)で発生する直接的被害
- 大規模な情報漏洩
広く使われているOSSライブラリの脆弱性を突かれ、データベースから顧客情報、クレジットカード情報、個人情報が大量に流出し、数百万人が被害を受ける
- リモートコード実行
脆弱なOSSコンポーネントを通じて任意のコードが実行され、サーバーが完全に乗っ取られて、ランサムウェアの展開や仮想通貨マイニングに悪用される
- 認証バイパス
認証系OSSライブラリの脆弱性により、パスワードなしで管理者権限が取得され、システム全体が攻撃者の支配下に置かれる
依存関係の脆弱性(OSS)で発生する間接的被害
- 緊急対応によるサービス停止
重大な脆弱性が発見され、修正パッチ適用のために全サービスを緊急停止せざるを得なくなり、ビジネスが長時間停止する
- 修正コストの爆発的増大
数百の依存ライブラリを使用している場合、それぞれの脆弱性対応に膨大な工数がかかり、開発リソースが枯渇する
- 法的責任とコンプライアンス違反
既知の脆弱性を放置していたことで、個人情報保護法違反や製造物責任を問われ、巨額の賠償金を支払う
依存関係の脆弱性(OSS)の対策方法
依存関係の脆弱性への対策は、ソフトウェア構成分析(SCA)ツールの導入、依存関係の定期的な更新、最小限の依存関係維持が基本となります。クラウド・ソフトの供給リスクを低減するために、使用しているOSSライブラリの棚卸し、脆弱性データベースとの照合、自動更新の仕組み構築が重要です。また、セキュリティが確認されたOSSのみを使用するポリシーの策定、依存関係の可視化により、リスクを継続的に管理することができます。
依存関係の脆弱性(OSS)の対策を簡単に言うと?
家の改築に例えると、まず使っている部品(OSS)のリストを作り、それぞれに「リコール(脆弱性)」が出ていないか定期的にチェックします。危険な部品が見つかったら、すぐに安全な新しい部品に交換します(アップデート)。また、本当に必要な部品だけを使い、「あったら便利」程度のものは使わないようにします(最小限の依存)。部品メーカー(OSSプロジェクト)の評判も確認し、しっかりメンテナンスされているものだけを選びます。さらに、どの部品がどこに使われているか図面(依存関係マップ)を作っておけば、問題が起きた時にすぐ対応できます。
依存関係の脆弱性(OSS)に関連した攻撃手法
クラウド・ソフトの供給リスクにおいて、依存関係の脆弱性(OSS)と密接に関連する3つの攻撃手法を解説します。
- サプライチェーン攻撃
依存関係の脆弱性は、サプライチェーン攻撃の主要な標的です。人気のOSSライブラリに悪意あるコードを仕込むことで、それを使用する全ての組織を一度に攻撃できます。依存関係の複雑さがサプライチェーン攻撃の成功率を高め、被害を拡大させる要因となっています。
- 依存関係混乱(Dependency Confusion)
依存関係の脆弱性を悪用する巧妙な手法で、内部パッケージと同名の悪意あるパッケージを公開リポジトリに登録し、システムに誤ってインストールさせます。OSSの依存関係管理の仕組みを悪用することで、正規のライブラリに見せかけた攻撃が可能になります。
- パッケージのタイポスクワッティング
人気OSSライブラリの名前に似せた悪意あるパッケージを公開し、タイプミスした開発者を狙います。依存関係の脆弱性と組み合わせることで、一度インストールされると深い階層まで悪意あるコードが浸透し、発見が困難になります。
依存関係の脆弱性(OSS)のよくある質問
npm audit、pip-audit、Maven Dependency Treeなどの言語別ツールや、GitHub Dependabot、Snyk、WhiteSourceなどのSCAツールを使用することで、依存関係を可視化できます。
必ずしも最新版が安定しているとは限りません。セキュリティパッチは速やかに適用し、メジャーアップデートは十分なテストを行ってから適用することが推奨されます。
脆弱性の深刻度(CVSSスコア)と実際の影響を評価し、対応を決定します。致命的な脆弱性は即座に対処し、軽微なものは計画的に更新することが現実的です。
有料ソフトウェアも内部でOSSを使用していることが多く、同様のリスクがあります。むしろOSSの方が透明性が高く、脆弱性の発見と修正が早い場合もあります。
仮想パッチの適用、WAFによる保護、ネットワークセグメンテーションなどの補完的対策を実施します。長期的にはシステムの更新計画を立てることが重要です。
更新履歴
- 初稿公開