PyPI からドロップされる W4SP Info-Stealer:タイポスクワットで開発者を狙い続ける

Dozens of PyPI packages caught dropping ‘W4SP’ info-stealing malware

2022/11/02 BleepingComputer — 研究者たちが発見したのは、PyPI レジストリ上において、情報窃取マルウェアをプッシュしている 20件以上の Python パッケージだ。それらの大半は難読化されたコードを含んでおり、感染させたマシンに上に W4SP Info-Stealer をドロップしていく。また、他のマルウェアは、教育を目的として作成されたと称している。


31 種類のタイポスクワットにより W4SP Info-Stealer をドロップ

研究者たちは、PyPI レジストリに登録され、人気のライブラリを模倣しているが、マシンを感染させた後に Info-Stealer ドロップする、20件以上の Python パッケージを確認している。

つまり、これらのパッケージを公開している脅威アクターたちは、本物のライブラリを取得しようとする開発者がスペルミスにより、誤って悪意のライブラリを取得することを期待して、意図的に既知の Python ライブラリに似た名前を付けている。

ソフトウェア・サプライチェーン・セキュリティ企業の Phylum は、昨日に発表したレポートの中で 29件の悪意のパッケージを明らかにしている。

  1. algorithmic
  2. colorsama
  3. colorwin
  4. curlapi
  5. cypress
  6. duonet
  7. faq
  8. fatnoob
  9. felpesviadinho
  10. iao
  11. incrivelsim
  12. installpy
  13. oiu
  14. pydprotect
  15. pyhints
  16. pyptext
  17. pyslyte
  18. pystyle
  19. pystyte
  20. pyurllib
  21. requests-httpx
  22. shaasigma
  23. strinfer
  24. stringe
  25. sutiltype
  26. twyne
  27. type-color
  28. typestring
  29. typesutil

Phylum は、例として typesutil を取り上げている。この、脅威アクターは、正当なライブラリから借用した健全なコードベースに対して、import ステートメントを介して悪意のコードを注入している。

PyPI typesutil package among one of the typosquats dropping W4SP infostealer
PyPI package ‘typesutil’ is one of the typosquats dropping W4SP infostealer (Phylum)

Phylum の研究者たちは、「この攻撃は、既存の一般的なライブラリをコピーし、悪意の import ステートメントを、健全なコードベースに注入することから始まる。この攻撃者は、既存の正規パッケージをコピーすることで、パッケージの PyPI ランディング・ページを setup.py と README.md から生成することで、リンクなども含めて本物のような振る舞いを容易に得ることが可能だ。徹底的に検査しない限り、正当なパッケージだと思う人た多いだろう」と述べている。

Obfuscated Python code
Obfuscated Python code found in typosquats (Phylum)

このレポートにおいては、71,000文字以上に及ぶ難読化されたコードを分析する際に直面した課題が、きわめて詳細に説明されている。それは、研究者たちが踏破しなければならない、かなりの泥沼だったようだ。

最終的に研究者たちは、これらのパッケージがドロップするマルウェアは、Discord トークン/クッキー/保存されたパスワードを流出させる W4SP Stealer であると結論付けた。Pepy.tech の統計によると、これらのパッケージは累計で 5,700回以上もダウンロードされたとのことだ。

8月には Kaspersky Securelist の研究者たちが、Hyperion と呼ばれるオープンソースツールで難読化され W4SP をドロップする、同様の悪意の PyPI パッケージを分析している。

パッケージ名の入力は慎重に、そして、繰り返して確認する

さらに、ソフトウェアの開発/研究する Hauke Lübbers は、GyruzPIP というマルウェアを含む、PyPI パッケージ pystile と threadings を発見した。

pystile package PyPI page
‘Pystile’ falsely claims to be a “simple module to color… text” (BleepingComputer)

しかし、彼によると、このマルウェアは [教育目的] のみで公開されている、evil-pip というオープンソース・プロジェクトに基づいているとのことだ。

BleepingComputer の観察によると、これら2つのタイポスクワットに含まれるコードは、はるかに単純であり、分析も容易である。具体的にいうと、それぞれの関数名として、stealing Chrome passwords/browser cookies/Discord tokens/uploading all of this data to a Discord webhook といった、意図した目的が明確に記載されているのだ。

Excerpt from pystile malicious PyPI package
Excerpt from ‘pystile’ malicious PyPI package (BleepingComputer)

PyPI 管理者に報告した Lübbers は、これらのプロジェクトが悪意の振る舞いを達成するには、おそらくプログラムの依存関係が含まれる必要があるだろうと、BleepingComputer に対して述べている。彼は、マルウェア作者が作成したとされる、2つのテストリポジトリ [12] を指摘し、それらを GitHub に報告した。

PyPI や npm といったオープンソース・ソフトウェアの配布プラットフォームを利用して、開発者を狙うタイポスクワッティング攻撃が相次いでいる。そして今週も、新たなインシデントが発生したことをお知らせした。

なんというか、記事の最後のところの「そして今週も」の一言が、この問題の際限のなさを言い表していますね。PyPI に関しては、6月12日の「PyPI パッケージ keep に含まれるタイプミス:悪意の依存関係とパスワード窃取」や、8月9日の「PyPI に仕込まれた悪意の Python ライブラリ 10件:認証情報や個人情報などを窃取」、8月17日の「PyPI に悪意のパッケージ:Discord を改ざんしてパスワードなどを盗み出す」などがあります。よろしければ、Repository で検索も、ご利用ください。