現在位置: ホーム / みらくるブログ / オープンソースソフトウェアへのサプライチェーン攻撃はすでに行われているのか?

オープンソースソフトウェアへのサプライチェーン攻撃はすでに行われているのか?

先月、米ミネソタ大学の研究グループが研究目的で脆弱性を意図的に含んだパッチを Linuxカーネルコミュニティへ投稿していたことが判明し話題になりました。再評価の結果、今回の件では脆弱なパッチが取り込まれることはありませんでしたが、コミュニティによるレビューが機能しない、あるいはメンテナンスが行われていない場合、潜在的に脆弱なパッチが取り込まれてしまい、サプライチェーン攻撃が行われてしまうことがあります。

米ミネソタ大学が Linuxカーネルコミュニティへ投稿したパッチの脆弱性について〜続〜

米ミネソタ大学が Linux カーネルコミュニティへ投稿したパッチの再レビューについて、素性を偽って投稿されたパッチを含むミネソタ大学からの 453 のコミットがレビューされました。
結果として、Linux Foundation の Technical Advisory Board (TAB) はカーネルコミュニティのレビュープロセスが機能し、ミネソタ大学からの脆弱なパッチは取り込まれていないと報告しました。[1]

  • 再レビューされたパッチの結果は以下のようになっています。
  • 正しいコミット:349
  • 修正が必要なコミット:39
  • 後のコミットで修正されているコミット:25
  • 現在廃止された機能に関する重要ではないコミット:12
  • ミネソタ大のカーネル研究グループが存在する前のコミット:9
  • コミッターからの依頼によって削除されたコミット:1

 

修正が必要な 39 のコミットに関してはリバートされ、修正が行われます。

また、TAB からミネソタ大学へ関係を取り戻すための要求を述べた文書が送付されており、ミネソタ大学は今後の信頼関係の再構築に務めていく方向にあります。

今回のミネソタ大学とカーネルコミュニティの事件では、カーネルコミュニティのレビュープロセスが機能したため、脆弱なパッチが取り込まれることはありませんでした。しかしながら、コミュニティによるレビューが機能しない、あるいはメンテナンスが行われていない場合、潜在的・あるいは意図的に脆弱なパッチが取り込まれてしまい、サプライチェーン攻撃につながることがあります。

オープンソースソフトウェアへのサプライチェーン攻撃とは

サプライチェーン攻撃とは、一般的に製品が製造され、ユーザーに届くまでの物流の一連の流れ(サプライチェーン)を悪用して行われる攻撃のことです。製造過程でマルウェアやバックドアを仕込む攻撃や、ターゲットの仕入先、業務委託先等の関連企業を攻撃し、ターゲットの企業に侵入する攻撃などがあります。

オープンソースのサプライチェーンは、大きく分けて以下のように構成されます。

  • 開発者(サプライヤー)
  • リポジトリ
  • パッケージマネジメントツール
  • ユーザー

 

開発者には、趣味でオープンソースソフトウェアに貢献している個人や、大きな規模の企業まで様々です。また、ソフトウェアの管理、取得、依存関係等の分析にはリポジトリやパッケージのマネジメントツールが利用されます。そして近年では、ソフトウェアを利用するユーザーはリモートのGitリポジトリ、PyPI、npm などからソフトウェアを入手することが主流です。

このようにオープンソースソフトウェアのサプライチェーンは、多様な開発者、オープンなフレームワークなどによってより複雑なものになっています。

オープンソースソフトウェアへのサプライチェーン攻撃はすでに行われているのか?

マルウェアに限らず、サプライチェーンが問題となって起こるオープンソースソフトウェアのインシデントは現実に起こっています。例えば、 npm[2] に数行の関数のみを持つ left-pad というパッケージに多数のパッケージが直接的・間接的に依存しており、パッケージの取り下げにより依存解決が破壊されてしまった問題(2016年)[3]や、Docker Hub から誰でもダウンロードできるコンテナイメージに暗号通貨採掘ボットが潜んでいた問題(2018年)などがあります。

また今年の3月には、PHP の Git サーバーがクラックされ、攻撃者によって意図的に脆弱性を混入する変更を master ブランチにコミットされてしまう事件などがありました。[4]

シノプスによる2020年オープンソース・セキュリティ&リスク分析レポート[5]によると、調査した1253のアプリケーションのうち、開発終了から 4 年超が経過したコンポーネント、 または過去2年間に開発活動実績のなかったコンポーネントを含むコードベースが 91% あったと報告しています。
定期的にメンテナンスされていないソフトウェアは脆弱性のリスクも高まり、実際に脆弱性が発見された場合の対処が遅れる可能性があります。

このような可能性のある中でオープンソースソフトウェアを取得して利用する際には、以下の事項に留意することが必要です。[6]

  • ソフトウェアの開発に関連するアカウントでは、多要素認証を使用する
  • デジタル署名の確認などによって、取得したソフトウェアが期待したソフトウェアであることを確認する
  • ソフトウェアに与える権限を制限する

 

また、ディストリビューションやソフトウェアの運用においては、発見される脆弱性やサプライチェーンの問題に対して、以下のように対策していく必要があります。

  • 定期的にメンテナンスされているディストリビューション、ソフトウェアを使用する
  • 技術的な質問先が必要な場合は、サポート契約を結ぶ
  • アップデート体制を整える


これらのソリューションとして、サイバートラストは、CentOS のサポートや、MIRACLE LINUX 技術サポート、脆弱性管理ツール MIRACLE Vul Hammer、IoT・組込み用Linux EMLinux を提供しています。

注釈・参考資料

[1] https://lore.kernel.org/lkml/202105051005.49BFABCE@keescook/

[2] Node.js のパッケージ管理ツール

[3] kik, left-pad, and npm: https://blog.npmjs.org/post/141577284765/kik-left-pad-and-npm

[4] [PHP-DEV] Update on git.php.net incident: https://www.mail-archive.com/internals@lists.php.net/msg106166.html
https://github.com/php/php-src/commit/2b0f239b211c7544ebc7a4cd2c977a5b7a11ed8a

[5] 2020年 オープンソース・セキュリティ&リスク分析レポート: https://www.synopsys.com/ja-jp/software-integrity/resources/reports/2020-open-source-security-risk-analysis.html

[6] Linux Foundation OSS Supply Chain Security: https://www.linuxfoundation.org/wp-content/uploads/oss_supply_chain_security.pdf

関連記事

NIST SP800-171 のセキュリティ要件と脆弱性管理
脆弱性とは? ~ 脆弱性とそこに潜むリスク、その対策のやさしい解説

変更履歴

2021年 5月 20日 公開