オープンソースで流行しているプロテストウェア4 種とそのインパクト
2022年3月22日
0 分で読めます数日前の Snyk のレポートでは、オープンソースコミュニティに登場した新種の脅威ベクトル、プロテストウェアについて紹介しました。この勧告は、多くの開発者のサプライチェーンに影響を及ぼした node-ipc の推移的な脆弱性 (peacenotwar) に関するものです。Snyk では、オープンソースに対する潜在的な脅威に関するチャットをモニタリングするために、さまざまなインテリジェンス脅威フィードとアルゴリズムを使用しています。そして私たちは、これがプロテストウェアの氷山の一角に過ぎないかもしれないと考えています。
node-ipc 勧告の発表以降、紛争に関する脅威専用アラートが急増し、それに伴いウクライナ侵攻に関連するさまざまな種類の潜在的プロテストウェアが急増しています。
現在流行しているプロテストウェアは、さまざまな形で登場しています。これらの中には、言論の自由の範囲内に収まるものもあれば、node-ipc のように、破壊的で有害な性質を持つものもあります。Snyk は、さまざまなプロテストウェアが出現している中で、そのアプローチ方法についてコミュニティがコンセンサスに達し、それぞれの違いを見極めることができるよう、支援していきたいと考えています。
プロテストウェアとは?
プロテストウェアとは、特定の事象に抗議するために何らかの改変を施したパッケージの総称です。悪意のあるパッケージとは異なり、これらの改変は、「ハッカー」やその他の悪意のある攻撃者ではなく、多くの場合、大規模なオープンソースプロジェクトの活発なメンテナーやコントリビューターとしてオープンソースコミュニティの中でも知名度が高く尊敬を集めるメンバーが行っています。
その前に申し上げておきますが、Snyk はウクライナを支持しています。当社の立場は、ウクライナへの支援金の寄付、ウクライナから発信される素晴らしい OSS に対する注目、ロシアとベラルーシの組織との取引を断つという決定で明確にしています。とはいえ、オープンソースコミュニティで発見した脅威を報告し、オープンソースを安全に保つための役割を果たすことが、当社の義務であることに変わりはありません。
本ブログでは、これまでに発見したプロテストウェアを大きく 4 種に分類し、それぞれの動作に対する当社の方針を説明しています。これを一つのきっかけとして、コミュニティでこの問題についてさらに検討することができればと考えています。
プロテストウェアの種類
1. リポジトリバナー
この種のパッケージでは、メンテナーが政治的なメッセージを「バナー」としてリポジトリ自体に追加しています。これは、ウクライナに対する支持を表明するために README ファイルを変更し、応援するためにパッケージの詳細を変更したり、あるいは単に明確なメッセージとともに未解決の問題を記載したりするものです。Snyk の観点からすると、このレベルの抗議は明らかに非破壊的な言論の自由の範囲内にあり、すべてのメンテナーとコントリビューターは、自分たちが主張したい問題について意見を表明する権利を持っています。
この種のプロテストウェアに対しては、対処の必要がないと考えています。
2. CLI 抗議ログ
2 つ目の抗議の形はさらに一歩進んで、パッケージのインストール中やインストール後にユーザーマシンの CLI ログに直接抗議のメッセージを書き込むというものです。es5-ext は、非常に人気のあるオープンソースパッケージで発生している最たる例で、そこで使われているベクトルは、この種のプロテストウェアにおいて代表的なものとなっています。
ローカルマシンは、タイムゾーンをチェックしてマシンの位置を特定します。
その位置を元に、インストール後のスクリプトを使って、ウクライナへの支援メッセージや戦争に関する情報、ロシア政府による戦争に関するニュースを掲載した Web サイトの検閲を回避するための Tor のダウンロード方法などの CLI ログが残されます。
この 2 つのベクトルを検証した結果、異常な動作ではあるものの、ソフトウェアのエコシステムには前例があるというのが私たちの最終的な結論です。タイムゾーンのチェックに関しては、システムのローカルチェックはパッケージをインストールする最適な方法を決定するなど、通常のインストール動作の一部となることがあります。インストール中の CLI のログメッセージに関しては、多くの場合、パッケージのインストール中に非常に堅牢なメッセージがログに記録されますが、そのすべてがパッケージのインストールに直接関係しているわけではありません (クレジット、絵文字、その他の「ソフト」情報がログに記録される場合があります)。
このため、現時点では、メッセージがインストール環境 (CLI の環境) 内にある限り、これらのパッケージに特に注意する必要はないと考えられます。
3. 環境外の抗議ログ
上記のプロテストウェアの最後の特徴に違いがあるのが、3 つ目、つまりインストール環境外でコードを実行して抗議するパッケージです。例として、event-source-polyfill、peacenotwar が挙げられます。どちらも上記の「タイムゾーンベクトルによるジオロケーションの特定」という点では共通していますが、ログに抗議を書き込むよりも一歩進んで、積極的にマシン上でコードを実行して抗議を行うというものです。
このタイプのプロテストウェアは破壊的なものでないにしても、オープンソースパッケージでは予期ない動作や望ましくない動作を引き起こす可能性があります。ポップアップ警告ウィンドウを作成する、情報を含むウェブサイトを開いてブラウザーをリダイレクトする、あるいは情報ダンプを含む新しいファイルをシステムのデスクトップに作成するなど、情報拡散動作の実行が考えられます。
このようなパッケージには、「望ましくない動作」というタイトルの勧告を追加する予定です。Snyk の CVSS ベクトルは、望ましくない動作の定義や、実行されるマシンの完全性に及ぼされる影響を正確に示すよう開発されています。
4. 破壊的な抗議
4 つ目は、明らかに破壊的な動作を示し、実行するマシンに対して直接的な脅威になるパッケージです。node-ipc は現在、4 種のパッケージの中で最大かつ最もよく知られており、以前に報告したように、システムのハードドライブ消去しようとします。
ファイルの削除や個人情報の漏洩など、実際に有害な動作をするパッケージは、「悪意のあるパッケージ」というタイトルで追加され、重大度は「高」または「重大」となります (パッケージの特定の影響に応じて指定されます)。
プロテストウェアの種類 | 例 | Snyk による現在推奨される勧告 |
---|---|---|
リポジトリバナー | 抗議情報を含む Readme | 勧告なし |
CLI 抗議ログ | 抗議情報を含むインストールログ | 勧告なし |
環境外の抗議ログ | 抗議情報を含むデスクトップに書き込まれたファイル | 重大度が低~中程度の「望ましくない動作」勧告 |
破壊的な抗議 | ディスク上のファイルを抗議情報で上書きする | 重大度が高~非常に高い「悪意のあるパッケージ」勧告 |
プロテストウェアに注意する
まとめると、現状は流動的であり、今後もプロテストウェアをめぐる新たな脅威のベクトルに対処していく必要があると予想されます。当社は以下の 2 点で貢献できると考えています。
新たな脅威のパターンが出現した場合は、可能な限り速やかに、こまめにコミュニティに警告する。
当社のコミュニティであらゆる形態のプロテストウェアへの対応について話し合いを主導することで、この問題に関する一般的なコンセンサスの形成を支援する。
他にもオープンソースパッケージに含まれるプロテストウェアを発見した場合は、オープンソースの脆弱性開示プログラムを使用して、当社までご連絡ください。オープンソースの安全な利用の確保にご協力をお願いいたします。