Skip to main content

オープンソースで広がるプロテストウェア:4つの種類とその影響

blog feature social trends

2022年3月22日

0 分で読めます

数日前、Snykは報告しました。オープンソースコミュニティにおける新たな脅威ベクトル、プロテストウェアについてです。このアドバイザリは、node-ipcにおけるトランジティブ脆弱性 peacenotwar に関するもので、多くの開発者に影響を及ぼすサプライチェーンの問題でした。Snykは、さまざまな脅威インテリジェンスフィードとアルゴリズムを使って、オープンソースに対する潜在的な脅威の動向を監視しています。今回の件は、プロテストウェアという氷山の一角にすぎない可能性があると考えています。

node-ipcのアドバイザリを公開して以来、紛争に関連する脅威について専用アラートが急増し、ウクライナ侵攻に関連するさまざまな種類のプロテストウェアの可能性も増加しています。

現在のプロテストウェアには、さまざまな形があります。許容できる言論の自由の表現と思われるものもあれば、node-ipcのように、より破壊的で有害な性質を持つものもあります。Snykは、次々と登場するさまざまなプロテストウェアへの対処方法について、コミュニティが共通認識を築けるよう支援し、それぞれの種類を見分ける手助けをしたいと考えています。

プロテストウェアとは?

プロテストウェアとは、特定の出来事に抗議する目的で、何らかの変更が加えられたパッケージを指す包括的な用語です。悪意のあるパッケージとは異なり、こうした変更は「ハッカー」やその他の悪意ある攻撃者ではなく、オープンソースコミュニティで知られ、尊敬されている、大規模なオープンソースプロジェクトの現役メンテナーやコントリビューターによって行われることがよくあります。

先に進む前に、Snykはウクライナを支持します。私たちは、ウクライナへの支援を寄付し、ウクライナ発の素晴らしいOSSに光を当て、ロシアおよびベラルーシの組織との取引関係を断つことを決定し、その立場を明確にしています。一方で、オープンソースコミュニティで発見した脅威を報告し、オープンソースの安全を守るために役割を果たすことも、私たちの責務です。

この記事では、これまでに確認したプロテストウェアの活動を大きく4種類に分類し、それぞれに対する私たちの方針を説明します。これをきっかけに、コミュニティでこの問題についてさらに議論が深まることを願っています。

プロテストウェアの種類

1. リポジトリのバナー

この種のパッケージでは、メンテナーがリポジトリ内の「バナー」に政治的なメッセージを追加します。ウクライナ支持を表明するようREADMEファイルを変更したり、パッケージの説明を変更して大義への支持を示したり、明確なメッセージを掲げたIssueを作成したりする例があります。Snykの見解では、この種の抗議は明らかに非破壊的な言論の自由の範囲にあり、すべてのメンテナーとコントリビューターには、適切と考えるあらゆる問題について意見を表明する権利があります。

このようなケースでは、私たちが何らかの措置を講じる必要はないと明確に考えています。

2. CLIの抗議ログ

2つ目の形態では、さらに踏み込み、パッケージのインストール中およびインストール後に、ユーザーのマシン上のCLIログに抗議メッセージを表示します。es5-extは、非常に人気のあるオープンソースパッケージでこの事例が発生した例であり、そこで使われている手法は、この種のプロテストウェアに典型的なものです。

  1. ローカルマシンでタイムゾーンを確認し、マシンの所在地を特定する。

  2. 所在地に基づいて、post-installスクリプトを使ってCLIログにメッセージを残します。メッセージには、ウクライナへの支持や戦争に関する情報に加え、戦争に関するニュースを掲載するウェブサイトへのロシア政府の検閲を回避するため、Torをダウンロードする手順が記載されています。

この手法の2つの要素を検討した結果、私たちは、通常とは異なる動作ではあるものの、ソフトウェアエコシステムに前例があると判断しました。タイムゾーンの確認について言えば、システムのローカルチェックは通常のインストール動作の一部である場合があります。たとえば、パッケージの最適なインストール方法を判断するために行われます。また、インストール中にCLIへメッセージを記録することについては、パッケージのインストール時に非常に多くの情報がログに記録されることがよくあり、そのすべてがインストールに直接関係するわけではありません(謝辞、絵文字などの「補足」情報が記録される場合もあります)。

メッセージがインストール環境(CLI内)にとどまる限り、現時点では、これらのパッケージに特別なフラグを付ける必要はないと考えています。

3. 環境外での抗議ログ

この区別を踏まえると、3つ目のプロテストウェアのグループについて説明しやすくなります。インストール環境の外部でコードを実行して抗議するパッケージです。たとえば、event-source-pollyfillやpeacenotwarが該当します。どちらも、前述の「タイムゾーン情報による位置特定」の手法を使っていますが、ログに抗議文を記録するだけでなく、マシン上でコードを実行して積極的に抗議する点が異なります。

この種のプロテストウェアは破壊的ではありませんが、オープンソースパッケージにおいて想定も望みもしない動作を引き起こすと私たちは考えています。ポップアップ警告ウィンドウを表示したり、ブラウザーを開いて情報を掲載したウェブサイトにリダイレクトしたり、システムのデスクトップに情報を大量に書き込んだ新しいファイルを作成したりして、情報を広めようとする可能性があります。

このようなパッケージには、「望ましくない動作」というタイトルのアドバイザリを追加します。CVSSベクトルでは、具体的にどのような望ましくない動作が起きるのか、また、それが実行先のマシンの完全性にどのような影響を与えるのかを示します。

4. 破壊的な抗議

最後に、明らかに破壊的な動作を行い、実行先のマシンを直接脅かすパッケージについて説明します。現在、Node-ipcはこの種の中で最も大きく、よく知られたパッケージです。以前に開示したとおり、システムのハードドライブを消去しようとします。

ファイルの削除や個人情報の漏えいなど、実際に有害な動作を行うパッケージには、「悪意のあるパッケージ」というタイトルを付け、パッケージがもたらす具体的な影響に応じて、高または重大の深刻度を設定します。

プロテストウェアの種類

例

Snykが現在推奨するアドバイザリ

リポジトリのバナー

抗議情報を記載したREADME

アドバイザリなし

CLIの抗議ログ

抗議情報を記載したインストールログ

アドバイザリなし

環境外での抗議ログ

抗議情報を記載したデスクトップ上のファイル

低~中の深刻度「望ましくない動作」アドバイザリ

破壊的な抗議

抗議情報でディスク上のファイルを上書き

高~重大の深刻度「悪意のあるパッケージ」アドバイザリ

プロテストウェアに注意を払いましょう

まとめると、現在の状況は流動的であり、今後もプロテストウェアに関する新たな脅威ベクトルへの対応を迫られると予想しています。私たちの役割は、次の2つだと考えています。

  1. 新たに現れる脅威のパターンについて、できる限り迅速かつ慎重にコミュニティへ警告し続けること。

  2. あらゆる形態のプロテストウェアにコミュニティがどう対応すべきかという議論を導き、この問題について、より広い共通認識の形成を目指すこと。

オープンソースパッケージで他のプロテストウェアを見つけた場合は、オープンソース脆弱性開示プログラムを通じてご連絡ください。誰もが安心して使えるオープンソースを守るため、ご協力ありがとうございます。

CTFを始めよう

オンデマンドのバーチャル入門ワークショップを視聴して、CTFの課題の解き方を学びましょう。