すばやく開発できます、が

最近のコンピュータ言語は素晴らしいものが多いです。
どれもわずかな行数のコードを書くだけで、実現したいと考える内容を実装できるように、環境が整ってきています。
この高速開発性を支えているのが、リポジトリです。
以前の言い方で言うと、ライブラリといえるかもしれません。
でも、ライブラリという言葉で表されるものよりも、リポジトリという言葉で表されるもののほうが、より動的で分散管理されているものといえるかもしれません。

各種の新しいコンピュータ言語には、そのそれぞれに大きく豊かなリポジトリが用意されています。
世界中の開発者がいろいろな機能を提供するソフトウェアモジュールをリポジトリに公開しています。
これらをうまく使うことで、手元でわずかな量のコードを書くだけで、いろいろな処理が実現可能になっているといえます。

この仕組みは、リポジトリの各ソフトウェアの所有者が全員善意の人であることが前提となっている部分があります。
リポジトリを利用しようとする人は、そのリポジトリの提供する機能の説明されている資料は詳しく読むことでしょう。
しかしいったいどれくらいの割合の人が、そのソフトウェアモジュールを利用する前に、そのソフトウェアモジュールそのもののコードをくまなくレビューするでしょうか。
利用したいソフトウェアモジュールは1つのアプリケーションに1つではありません。
たくさんの既存のソフトウェアモジュールをうまく連携して利用することで開発の効率をあげていくことができるのです。

リポジトリにソフトウェアモジュールを公開している人がいます。
その開発者は長くそのモジュールを開発継続できることもあるでしょう。
しかしときには何らかの事情で開発が継続できなくなるケースもあります。
そのようなケースに対応するものとして、リポジトリはソフトウェアモジュールの所有権を移転できるという考え方や取り組みを有していることが多いです。

こんなことが起こる場合があります。

  • 有用なソフトウェアモジュールがあるとします。
  • 利用者は多いです。
  • そのソフトウェアモジュールの開発が活発ではなくなります。
  • ある人が現れて、そのソフトウェアモジュールの開発を引き継ぎます。
  • 新しい所有者によって、そのソフトウェアモジュールの開発は継続されていきます。

この新しい開発者が善意の人の場合、このモジュールを利用する人は便利さを継続的に享受することができることでしょう。
一方、この新しい開発者が善意の人ではない場合、このモジュールはどうなるでしょう。
いつの間にか有用なコードの中に、不要なコードが埋め込まれてしまっているかもしれません。

しかし、この変化に誰がタイムリーに気が付くことができるでしょうか。
ソフトウェアモジュールの利用開始の前に、コードを詳細にレビューする人は多くないでしょう。
利用をすでに開始しているソフトウェアモジュールの更新の際に、そのコードを詳細にレビューする人は、もっと少なくなるのではないでしょうか。

怖くなってきました。

この問題はソフトウェアサプライチェーン問題とも呼ばれます。
この問題は単純な脆弱性だとかバグだとかいうこととは別の次元の話です。

脆弱性やバグは、発見さえできれば、それを修正して利用することができますので問題ありません。
ソフトウェアサプライチェーン問題は、仕組みの抱える問題といえるかもしれません。
こうすればよい、という簡単な解決方法はあるでしょうか。

対策できることを少しずつ増やしていく必要がありそうです。

参考記事(外部リンク):THE DARK SIDE OF PACKAGE REPOSITORIES: OWNERSHIP DRAMA AND MALWARE
hackaday.com/2021/09/08/the-dark-side-of-package-repositories-ownership-drama-and-malware/