PaPoo
cover
technews
Author
technews
世界の技術ニュースをリアルタイムでキャッチし、日本語でわかりやすく発信。AI・半導体・スタートアップから規制動向まで、グローバルテックシーンの「今」をお届けします。

PyPIでPyTorch Lightningに仕込まれたバックドア、ブラウザやクラウドの認証情報を盗むマルウェアを配布

キーポイント

何が起きたのか

今回の話、かなりいやらしいです。
人気の Python パッケージ PyTorch Lightning に、​バックドア入りの不正なバージョンが紛れ込んでいました。PyTorch Lightning は、AIモデルの学習や fine-tuning を助ける定番ツールで、先月だけでも 1100万回以上ダウンロードされたそうです。つまり、攻撃者にとっては「広く使われる、信頼されやすい場所」に仕込むのが一番おいしいわけです。

問題のバージョンは 2.6.3
この版には、見えない実行チェーンが含まれていて、import lightning した瞬間に自動で動き出します。しかも表立って何か表示するわけではなく、​バックグラウンドプロセスとして静かに起動するのが嫌らしいところです。

要するに、開発者が普通に

import lightning

と書いただけで、裏で勝手に何かが走る、ということです。これはかなり怖い。
「インポートしただけで感染」は、サプライチェーン攻撃の典型で、しかもかなり実用的なやり方だと思います。

どうやって動くのか

Lightning AI の説明によると、この悪意あるコードは以下の流れで動きます。

image_0003.jpg

  1. パッケージを import する
  2. 裏で Bun v1.3.13 という JavaScript runtime を GitHub からダウンロードする
    • runtime は、JavaScript を動かすための実行環境です
  3. さらに 11.4MB もの、かなり難読化された JavaScript payload(router_runtime.js)を実行する

11.4MB の JavaScript というだけでも、かなり「普通じゃない」感じがします。
しかも obfuscated​(難読化)されているので、人間が読んでも中身を追いにくい。攻撃者が「バレにくさ」をかなり意識していたのは間違いないでしょう。

何を盗もうとしていたのか

Microsoft Threat Intelligence によると、この payload は ShaiWorm として検知されており、いわゆる information stealer​(情報窃取マルウェア)です。名前からしてもう嫌な予感しかしません。

狙いはかなり広くて、具体的には次のようなものです。

image_0004.png

さらに厄介なのは、​任意のシステムコマンドを実行できる点です。
つまり、単なる「情報を盗むだけ」ではなく、後からさらに悪さを広げられる余地があります。ここは本当に重要で、被害が認証情報の漏えいだけで止まらない可能性があるんですよね。

どれくらい被害があったのか

Microsoft の telemetry(端末から集めた観測データ)では、影響を受けたのは 少数のデバイスで、しかも 限定的な環境にとどまっていたようです。
つまり、現時点では大規模爆発は防がれた可能性が高い、ということです。

これは少し救いですが、逆に言えば たまたま早く見つかったからこの程度で済んだとも言えます。
サプライチェーン攻撃は、見つかるまでの時間が長いほど被害が広がるので、今回のように早期検知できたのはかなり大きいと思います。

image_0005.jpg

使っていた人は何をすべきか

Lightning AI は、もし version 2.6.3 を使っていて import lightning を実行した可能性があるなら、​秘密情報のローテーションを強く勧めています。

ローテーションとは、ざっくり言えば
​「漏れたかもしれないパスワードやトークンを全部入れ替える」​
ということです。

対象になり得るのは例えば:

正直、これは面倒です。かなり面倒。
でも、こういうときは「面倒だから後回し」がいちばん危ない。個人的には、​**“漏れた可能性があるなら、気持ち悪さを残さず一気に総点検”** が正解だと思います。

image_0006.jpg

今は安全なのか

現時点では、PyTorch Lightning は 2.6.1 に戻されており、それが安全に使えると案内されています。
また、開発側は他の最近のリリースも監査して、似たような payload が混ざっていないか確認するとしています。

まだ分かっていないのは、​どうやってビルドやリリースの工程が侵害されたのかという点です。
ここは今後の焦点ですね。もし build/release pipeline が破られていたなら、単なる「悪いパッケージが一つ混ざった」では済まず、供給網全体の信頼に関わる話になります。

この事件の何が怖いのか

今回の事件の怖さは、マルウェアの内容そのものよりも、​**“普通の開発作業” に見える形で侵入している**ことだと思います。

image_0007.jpg

このパターンは、開発者にとってかなり厄介です。
コードレビューだけでは気づきにくいし、依存パッケージが多いほど追跡もしんどい。しかも AI や Python の世界は、便利さのために外部パッケージを多用しがちです。そこを逆手に取られると、被害が一気に広がります。

個人的には、これは「AIブームで便利さが加速したぶん、依存関係の信用コストも上がっている」という象徴的な事件ではないかと思います。
便利なエコシステムは強いですが、そのぶん“どこか一個でも汚れると全体が危うい”のが怖いところです。

開発者・運用担当者が気をつけたいこと

今回の件を踏まえると、最低限こんな対策は意識したいところです。

image_0008.jpg

特に「開発環境だから大丈夫」は通用しません。
開発環境に置いてある secrets が本番へつながっていたら、そこから芋づる式にやられます。これは本当にある話です。

まとめ

PyTorch Lightning の不正バージョン 2.6.3 は、import しただけで裏で JavaScript を実行し、ブラウザや .env、クラウド認証情報を盗むマルウェアを落とす仕組みでした。
影響は限定的だったようですが、人気パッケージが狙われたことで、​サプライチェーン攻撃の現実味がまた一段上がった印象です。

便利な OSS を信頼して使うのは大事ですが、同時に「信頼しすぎない」姿勢も必要だと、あらためて感じる事件でした。


参考: Backdoored PyTorch Lightning package drops credential stealer

同じ著者の記事