RubyGems の strutil-core 1.0.1 は、インストール時に Bun を落として資格情報を窃取するワームを起動する。アカウント jamnajiea が 11月1日 02<19> UTC に無害な 1.0.0 を出し、04<05> UTC に 1.0.1 を公開。Socket は被害者と、このジェムから感染した別パッケージを確認していない。依存している公開プロジェクトも見つかっていない。

ext/strutil-core/extconf.rb が Linux と macOS(x86-64 または ARM64)で /tmp/.b_ 配下に Bun 1.2.18 を取り、同梱の index.js を実行する。gem install strutil-core -v 1.0.1、または 1.0.1 に解決する bundle install だけで足りる。収集対象はクラウド、CI、パッケージレジストリ、SSH、AI コーディングツール、ウォレット。送信先は paleasbest.top で、GitHub と GitLab へのフォールバックがある。

持続化の名前は net-health-checker と pkg-runtime。~/.config/net-health-checker/token の GitHub トークンが HTTP 401 または 403 を返すと、監視プロセスがホームディレクトリを削除する。MCP サーバ、セッションフック、エージェント向けの指示ファイルをローカル設定とリポジトリへ書く。

RubyGems は 08<52>–09<13> UTC に 1.0.0 と 1.0.1 の両方を削除した。公開窓は約 5 時間。ジェムを消しても、ディレクトリの外に残った処理と長期の資格情報は戻らない。

1.0.1 を入れたホストは、到達できる資格情報ごと侵害済みとして切り離す。GitHub トークンを失効する前に、net-health-checker と pkg-runtime のプロセスと、systemd ユニットまたは LaunchAgent を止めて消す。そのあとクリーンな端末から資格情報を回し、ホストを作り直す。

Gemfile.lock、CI キャッシュ、コンテナイメージに strutil-core が無いか確認する。自分のジェムに、意図しない ext/*/extconf.rb や extensions: が増えていないかも見る。同じ送信先を使う PyPI の pystr-codec 0.1.0、0.1.1、0.1.2 も、入っていれば同じ扱いにする。

#参考文献