一部の開発者はオープンソースソフトウェアを汚している

gettyimages-1159346361-malicious-code-skull-crossbones.jpg

ゲッティイメージズ

オープンソースの最も驚くべき点のXNUMXつは、優れたソフトウェアを作成できることではありません。 非常に多くの開発者が、他の人の助けを借りて素晴らしいプログラムを作成するために自分のエゴを脇に置いているということです。 しかし、今では、少数のプログラマーが、多くの、そして潜在的にすべての人のためのオープンソースソフトウェアの利益よりも自分たちの懸念を優先しています。

たとえば、JavaScriptのパッケージマネージャーメンテナーであるRIAEvangelist、Brandon Nozaki Miller、 peacenotwarと呼ばれるオープンコードのnpmソースコードパッケージを作成して公開しました。 それはほとんど何もしませんでしたが、デスクトップに平和のためのメッセージを印刷しました。 これまでのところ、無害です。 

次に、ミラーは悪意のあるコードをパッケージに挿入して、ユーザーのコンピューターがロシアまたはベラルーシのIPアドレスを持っている場合にユーザーのファイルシステムを上書きしました。 それから彼はそれを彼の人気のあるものへの依存関係として追加しました ノードIPC プログラムとインスタントカオス! 多数のサーバーとPCが最新のコードに更新されたためにダウンし、システムのドライブが消去されました。 

ミラーの弁護、「これはすべて公開され、文書化され、ライセンスされ、オープンソースです、」は持ちこたえません。 

リラン・タル、 スナック 問題を発見した研究者は、次のように述べています。 それはメンテナの将来の評判にどのように反映されますか と開発者コミュニティへの出資? このメンテナは、参加しているプロジェクトのそのような、またはさらに積極的な行動で将来の行動をフォローアップしないことを再び信頼されるでしょうか?」 

ミラーはランダムクランクではありません。 彼はnode-ipcなどの優れたコードをたくさん作成しました。 ノードHTTPサーバー。 しかし、彼のコードのいずれかが悪意のないものであると信頼できますか? 彼はそれを「マルウェアではなく、[しかし]完全に文書化されている抗議ウェア、」他の人は毒々しく反対します。 

あるGitHubプログラマーが書いたように、「これで何が起こるかというと、ロシアや政治とはまったく関係のない欧米の企業のセキュリティチームが見始めます。 サプライチェーン攻撃の手段としての無料のオープンソースソフトウェア (これは完全にそうです)そして、単に彼らの会社内で無料のオープンソースソフトウェア(すべて無料のオープンソースソフトウェア)を禁止し始めます。」 

ハンドルnm17を持つ別のGitHub開発者は、次のように書いています。 オープンソースの信頼係数、開発者の善意に基づいていたが、今では事実上なくなっており、今では、インターネット上のランダムな開発者が考えていることを何でもするために、ライブラリ/アプリケーションが悪用される可能性があることに気付く人が増えています。彼らがするのは正しいことでした。」

どちらも有効なポイントになります。 メーカーの政治的立場に同意しないとソースコードが使えない場合、どうすれば自信を持って使えるのでしょうか。 

ミラーの心は正しい場所にあるかもしれません— Slava Ukraini! —しかし、悪意のあるペイロードに感染したオープンソースソフトウェアは、ロシアのウクライナ侵攻を保護する正しい方法ですか? いいえ、ちがいます。 

オープンソース方式は、お互いを信頼しているためにのみ機能します。 その信頼が壊れると、原因が何であれ、オープンソースの基本的なフレームワークが壊れます。 安定版ブランチのLinuxカーネルメンテナーであるGregKroah-Hartman氏は、ミネソタ大学の学生が2021年に実験のためにLinuxカーネルに不正なコードを意図的に挿入しようとしたとき、次のように述べています。受け入れられず、完全に非倫理的です。」

人々は長い間、オープンソースには倫理規定も含めるべきだと主張してきました。 たとえば、2009年 例外一般公衆利用許諾契約書(eGPL)、の改訂 GPLv2、軍のユーザーやサプライヤーなどの「例外」がそのコードを使用することを禁止しようとしました。 失敗しました。 などの他のライセンス JSONライセンス その甘く素朴な「ソフトウェアは悪ではなく善のために使用されなければならない」という条項がまだ存在していますが、誰もそれを強制していません。  

最近では、活動家でソフトウェア開発者のCoraline Ada Ehmkeが、ユーザーに道徳的な行動を要求するオープンソースライセンスを導入しました。 具体的には、彼女 ヒポクラテスライセンス に追加 MITオープンソースライセンス 次のような条項: 

「このソフトウェアは、個人、企業、政府、またはその他のグループが、恵まれない個人またはグループの身体的、精神的、経済的、または一般的な幸福を積極的かつ意図的に危険にさらしたり、危害を加えたり、その他の方法で脅かしたりするシステムまたは活動に使用することはできません。国連世界人権宣言の違反。」

良さそうに聞こえますが、オープンソースではありません。 ご覧のとおり、オープンソースはそれ自体が倫理的な立場にあります。 その倫理はに含まれています フリーソフトウェアファウンデーション(FSF)〜の XNUMXつの本質的な自由。 これは、すべてのオープンソースライセンスとそのコア哲学の基盤です。 オープンソースの法律専門家であり、コロンビア大学の法学教授であるEben Moglenは、当時、倫理的ライセンスを自由ソフトウェアやオープンソースライセンスにすることはできないと述べました。 

フリーダムゼロ、任意の目的でプログラムを実行する権利は、XNUMXつの自由の中で最初になります。これは、ユーザーが実行するコンピュータープログラムに関してその権利を持っていない場合、最終的にはそれらのプログラムに対する権利をまったく持たないためです。 良い使用のみを許可する、またはライセンサーの目に悪い使用を禁止する努力は、自由ゼロを保護するという要件に違反します。」 

言い換えれば、何らかの理由でコードを共有できない場合、コードは真にオープンソースではありません。 

あるグループがオープンソースソフトウェアを使用することを禁止することについてのもうXNUMXつのより現実的な議論は、IPアドレスなどの何かをブロックすることは非常に幅広いことです。 警備会社FlorianRothとして ネクストロン システムズ'研究責任者、システム上の無料ツールを無効にする 特定の言語とタイムゾーンの設定で」と最終的に決定しました。 なんで? そうすることで、「また、批評家や自由思想家のシステムのツールを無効にします それは彼らの政府の行動を非難します。」 

残念ながら、オープンソースソフトウェアに問題を引き起こしているのは、より高い倫理的目的のためにオープンソースを使おうとしている人々だけではありません。 

今年の初め、JavaScript開発者のMarak Squiresは、彼のあいまいな、しかし非常に重要なオープンソースのJavascriptライブラリ「colors.js」と「faker.js」を故​​意に妨害しました。 結果? 何万ものJavaScriptプログラムが爆発しました。

なんで? まだ完全には明確ではありませんが、削除されたGitHubの投稿で、Squiresは次のように書いています。 Fortune500をサポートしなくなります (および他の中小企業)私の自由な仕事で。 他に言うことはあまりありません。 これを機会として、私にXNUMX桁の年間契約書を送るか、プロジェクトをフォークして、他の誰かに取り組んでもらいます。」 ご想像のとおり、給料への彼の道を恐喝しようとするこの試みは、彼にとってあまりうまくいきませんでした。 

そして、楽しみと利益のために意図的にマルウェアをオープンソースコードに組み込んだ人々がいます。 たとえば、DevOpsセキュリティ会社 Jフロッグ NPMリポジトリで、ユーザーのDiscordトークンを故意に攻撃して盗む17個の新しいJavaScriptの悪意のあるパッケージを発見しました。 これらはその後、 Discord通信およびデジタル配信プラットフォーム.

無実で役立つように見える新しい悪意のあるオープンソースプログラムを作成することに加えて、他の攻撃者は古い、放棄されたソフトウェアを取り、バックドアを盗む暗号コインを含むようにそれらを書き直しています。 そのようなプログラムのXNUMXつがイベントストリームでした。 ビットコインウォレットを盗み、その残高をクアラルンプールサーバーに転送するために悪意のあるコードが挿入されていました。 何年にもわたっていくつかの同様のエピソードがありました。

そのような動きのたびに、オープンソースソフトウェアへの信頼は失われます。 オープンソースは現代の世界にとって絶対に不可欠であるため、これはお粗末な傾向です。 

私たちはそれについて何ができますか? ええと、一つには、オープンソースコードの使用をブロックする必要がある場合は、実際に非常に慎重に検討する必要があります。 

より実際的には、 LinuxFoundationの ソフトウェアパッケージデータエクスチェンジ(SPDX) & ソフトウェア部品表(SBOM)。 これらを組み合わせることで、プログラムで使用しているコードとその由来を正確に知ることができます。 そうすれば、十分な情報に基づいて決定を下すことができるようになります。

今日、多くの人は、実行しているものを正確に知らずに、または問題がないかチェックすることなく、オープンソースコードを使用しています。 彼らはすべてがうまくいくと思っています。 それは決して賢明な仮定ではありませんでした。 今日、それはまったく愚かです。 

これらすべての最近の変更があっても、オープンソースはブラックボックスのプロプライエタリソフトウェアの代替品よりも優れており、安全です。 ただし、コードを盲目的に信頼するのではなく、コードをチェックして検証する必要があります。 これは、今後行うべき唯一の賢いことです。

関連ストーリー:



ソース