PyPIはPython Package IndexでPython用のサードパーティーソフトウェアリポジトリです。
Pythonのコードを誰でも登録できますし、誰でも使用できます。
使用も簡単で管理コマンドに利用するコードの名前を指定するだけで簡単に自分の環境に取り込むことができます。
そんなPyPIは、これまで何度も悪用されてきています。
先日、また悪性のコードの配布に使用されていました。
- 悪性のコード
3つの悪意のあるコードが確認されました。
名前はそれぞれ「colorslib」、「httpslib」、「libhttps」です。 - コードの公開スタイル
PyPIのWebサイトでは、公開されているそれぞれのコードについての説明を見ることができます。
これらのコードのそれぞれは正当に見える整ったReadmeを備えていました。
有名なパッケージに似た名前を付けてTypoを狙うタイプではなく、自分の実現している内容を説明するReadmeを持ち、オリジナルのコードのように説明されています。 - 悪事の内容
3つのコードは、いずれも同じ開発者が公開しているものでした。
そして公開されているコードの内容はそれぞれ異なりますが、3つは同じsetup.pyを持っていました。
setup.pyはPythonのコードの管理ツールであるpipコマンドが利用するファイルで、この内容に従ってコードのインストール処理が実施されます。
そしてこれらに含まれていたsetup.pyはWindows用の実行ファイルをダウンロードするように記載されていました。
setup.pyはOxyz.exeをダウンロードし、これが動作すると環境にupdate.exeをダウンロードし、さらにこれが別のファイル群をダウンロードします。
ドロッパーがドロッパーをもってきてマルウェアを配置する多段ドロッパーの動きをします。
よくあるタイプの動きです。
配置されるマルウェアは、Discord Nitroジェネレーターやインフォスティーラーなどです。
今回確認されているこれら3つのコードはすでに公開を停止されています。
しかしまた別の名前で公開されてしまうことも容易に想像できますので、安心はできません。
Pythonをはじめとした新しいコンピュータ言語は大抵PyPIのようなソフトウェアリポジトリを備えています。
これらにはこの例のような共通の悩みがあります。
有名なものに似た名前のマルウェア配布パッケージ、最初は無害だったのにバージョンアップしたら有害になるパッケージ、開発者が変更になって内容が有害に変更されたパッケージ、まじめに作られているコードだけれどもsetup.pyなどの配布機構が有害なパッケージ、いろいろなスタイルで仕掛けてきます。
ソフトウェアサプライチェーンの脅威はますます大きくなってきています。
ソフトウェアの開発や利用に関わる際には、こういった脅威がいろいろな方法で忍び寄ってくることを踏まえて日々の活動に臨む必要がありそうです。
参考記事(外部リンク):Supply Chain Attack Using Identical PyPI Packages,
“colorslib”, “httpslib”, and “libhttps”
www.fortinet.com/blog/threat-research/supply-chain-attack-using-identical-pypi-packages-colorslib-httpslib-libhttps
この記事をシェア |
---|