
Go言語の利用者向けに作成されたwiperが脅威となっています。
Go言語は人気のコンピュータ言語で、他のものに比較すると比較的新しい言語です。
Goはいくつもの他の言語にない特徴を持っていて、その一つにはオープンなエコシステムであるという点があります。
これは良い点であるのですが、一つの特徴は見方によって良い点とも厳しい点ともなるという例になってしまっているような話があります。
いまどきの流行りのコンピュータ言語には、多くの場合その言語環境専用のリポジトリシステムが提供されています。
PythonのPyPIのようなものです。
こういったものがあることにより、そのコンピュータ言語の利用者は探したい機能があるときに多くの人が提供しているソフトウェアから効率的に期待する機能を持つものを探すことができる環境を提供できるようになっています。
しかしこの特性は、利用者や提供者が善意の人であることが前提となってしまっている部分があります。
タイポスクワッティングというものがあります。
タイポスクワッティングとは、URLハイジャッキングとも呼ばれる形態のサイバースクワッティングで、インターネットユーザーがWebブラウザにURLを入力する際に犯す打ち間違いを利用するものです。
直接的には同じ意味ではありませんが、リポジトリを利用する際に類似の事象が発生してしまいます。
人気のあるソフトウェアと類似性の高い名前のソフトウェアが配布されている状態となるとき、利用者が誤って意図していたものではないののを利用してしまう現象が発生する可能性があります。
この類似性の高い名前で配布されることとなった経緯には、開発者が意図しないでそのような状態になってしまったというケースはあるでしょうが、それだけではありません。
脅威アクターが意図して利用者に入手させようとして類似性の高い名前でソフトウェアを配布することもあります。
しかし、この特性は、たとえばPyPIのような単一のリポジトリ環境の場合は、あくまでも類似性の高い名前にとどまります。
配布物の名前はユニークであることが期待されますので、完全に同じ名前のソフトウェアをその単一のリポジトリで提供することは不可能なのです。
かならず少しは異なるようにする必要があります。
この制約は、コンピュータ言語によって差異が生まれる点です。
というのも、Goのリポジトリは、自由度が高く、Goの実行環境はGitHubなどのパブリックなリポジトリを直接参照して動作することができるようになっています。
PythonのPyPIでも開発の場所としてはGitHubなどのオープンな場所で実施されているケースは多くありますが、リポジトリの参照という面では、PyPIで一元管理されています。
しかしGo言語のリポジトリ利用環境ではこの制約がありません。
このため、いくつものリポジトリを直接利用することができるようになっています。
これは自由度の高さなのですが、それと同時に意図しない結果につながる特徴ともなっています。
ある特定のリポジトリの有名なソフトウェアと完全に同じ名前のソフトウェアを別のリポジトリ上に用意することができるのです。
この点を悪用している事例が確認されています。
脅威アクターは、有名なソフトウェアの名前と同じ名前のソフトウェアを、本家とは別の場所で公開します。
その別物のコードの中にはリモートペイロードを取得して実行するように高度に難読化されたコードが含まれているという構造になっていました。
確認されたいくつかの例では、その悪意あるコードはwiperでした。
ソフトウェアの名前が完全に本家のものと同じなのだけれども、内容は異なる部分があるという状態を作れてしまったのです。
そもそもとして他の人が開発して公開しているソフトウェアを利用する際には注意が必要です。
Go言語を利用する場合には、その配布場所まで意識して誤ったものを利用してしまうことにならないように注意する必要があるということになります。
wget to Wipeout: Malicious Go Modules Fetch Destructive Payload
https://socket.dev/blog/wget-to-wipeout-malicious-go-modules-fetch-destructive-payload
この記事をシェア |
---|