2026年10月は、ソフトウェアのサプライチェーン攻撃が短期間に連続し、各国のセキュリティ媒体が「Black October 2026」と呼ぶ事態になった。npm・PyPI・配布バイナリと入口は違っても、起きていることはよく似ている。本記事は個別の速報を並べるのではなく、10月に実際に何が起きたか、そこから見える共通の攻撃構造、そして開発者とCI管理者が今すぐ打てる手に絞ってまとめる。

THE COMMON CHAIN共通の構造

10月の波は同じ4段をたどった

  1. アカウント/鍵の奪取

    開発者のGitHubトークン等

  2. 公開物を差し替え

    リリース・パッケージ

  3. インストール時に実行

    preinstall・.pth等

  4. 認証情報を収集

    クラウド鍵・.env・SSH

出典: Socket / StepSecurity / Microsoft 各advisory(2026-10時点)

30秒でわかる Black October 2026(2026-10-28時点)

  • ・何が起きたか:約2週間で Tensorlake(npm・10/8)、OVHcloud CLI(10/19)、LiteLLM(PyPI/Docker・10/21)の侵害が連続
  • ・共通構造:開発者アカウント・鍵の奪取 → 公開物の差し替え → インストール時に実行 → 認証情報の収集
  • ・今すぐ:版を固定して入れる/インストール時スクリプトを信頼しない/露出した鍵を交換する
  • ・限界:GitHub 側のソースを読むだけでは、公開物の差し替えは見抜けない

まず確かめること(立場で分ける)

・自分で直す範囲:litellm と tensorlake の導入版、OVHcloud CLI の版(安全なのは v0.10.0 のみ)を確認する
・配布元に任せる範囲:各ベンダーが出した安全版への固定指示に従い、公開時間帯に触れたCIの鍵・トークンを交換する

まずサプライチェーン攻撃とは|手口・防御ツール比較・npm 12の新機構まで実践解説に、手口と防御の恒久的なガイドをまとめている。本記事はその上で、2026年10月に起きたことと共通構造を重ねる位置づけで、恒久ガイドを置き換えるものではない。

本記事は防御のための解説です。悪用手順・PoC・改ざんパッケージの導入方法は扱いません。攻撃者の主張や被害額はこの時点で検証できていないため、未確認として扱います。

何が起きたか——10月に連続したサプライチェーン攻撃3件

報じられている公開日(UTC基準)で並べると、約2週間に主要な3件が連続した。各事案の詳報は既報に譲り、ここでは共通点を見るための要点だけを置く。

TIMELINE時系列

約2週間に主要3件が連続した

  1. 10/08

    Tensorlake(npm)

    preinstallで秘密窃取・自己増殖

  2. 10/19

    OVHcloud CLI

    5リリースの配布物を差し替え

  3. 10/21

    LiteLLM(PyPI/Docker)

    起動時フックで窃取

出典: 各ベンダーadvisory・Socket(2026-10時点、公開日はUTC基準)

Tensorlake(npm・10/8)。正規メンテナの GitHub アカウントが乗っ取られ、main へ直接 push された改ざん版 [email protected] が公開された。preinstall フックから起動し、npm・GitHub トークン、AWS、Kubernetes、Vault、SSH鍵、.env などを集める。報じられている範囲では、埋め込まれた GitHub トークンが失効すると破壊的な動作を起こすルーチンも併せ持ち、Shai-Hulud 系(ChainDrop 亜種)に分類されている。安全版は 0.5.143、修正版は 0.5.145。同系統の過去事例は既報に詳しい。

READ ALSO — セキュリティ TanStack公式@tanstack/*にマルウェア混入|205パッケージに広がるMini Shai-Huludワーム

OVHcloud CLI(10/19)。乗っ取られた contributor の GitHub アカウントから、既存の5リリース(v0.11.0〜v0.15.0)の配布アーカイブが情報窃取ビルドに差し替えられた。報道では GitHub の「リリースの改変不可」設定が無効だったため、権限のあるアカウントが CI/CD を経ずに既存リリースを書き換えられたとされる。安全なのは v0.10.0 のみで、install.sh も指紋を検証せずに取得するため影響する。

LiteLLM(PyPI/Docker・10/21)。悪性の 1.107.0 が PyPI と Docker に短時間公開された。LiteLLM の公式報告では、3名の開発者の GitHub CLI トークンが悪用され、リリースの流れが正規リポジトリから逸れたとされる。一部の報道は、5月に公開リポジトリへ誤って入り失効されなかった内部キーが起点だったとも伝えるが、この経路は未確認として扱う。安全版は 1.106.2。手口と確認手順はLiteLLM 1.107.0 マルウェア(入れたかの確かめ方)に詳しい。

この波の周辺では、多数の GitHub リポジトリへ悪性のワークフローが仕込まれたとする報告や、ホスティング事業者での不正アクセスも続いた。GitHub トークンを使って Actions からシークレットを抜く進行中の攻撃や、国内事業者での事案は、それぞれ既報を参照してほしい。

READ ALSO — セキュリティ Gheist|盗難GitHubトークンでActionsを悪用しprivateリポのシークレットを流出させる進行中攻撃

READ ALSO — セキュリティ お名前.com 不正アクセス|デスクトップクラウド(FX自動売買VPS)で取引口座の情報が悪用、最大2.6万サーバー停止と対策

共通の攻撃構造——公開パイプラインの侵害とインストール時実行

入口は npm・PyPI・配布バイナリと分かれるが、3件は同じ4段をたどった。(1) 開発者のアカウントや鍵・トークンを奪う、(2) 公開パイプラインを通して配布物を差し替える、(3) インストール時に実行する仕掛けで import を待たずに走らせる、(4) クラウド鍵や .env、SSH鍵などの認証情報を収集する。なぜ npm install だけで乗っ取られるのか(仕組みの図解)で、(3) の実行経路は詳しく追える。

事案 侵入口 実行の契機 主な窃取対象
LiteLLM 1.107.0 開発者のGitHub CLIトークン(報道では5月流出の内部キー起点とも/未確認) Python 起動時フック(.pth/sitecustomize) クラウド鍵・AIプロバイダ鍵・開発者鍵・.env・ブラウザデータ
OVHcloud CLI v0.11.0–v0.15.0 乗っ取られたcontributorアカウント+改変可能なリリース設定 再コンパイルされた改ざんバイナリの実行 ローカルの秘密(envchecker モジュール)
Tensorlake 0.5.144(npm) 乗っ取られたmaintainerアカウント→mainへ直接commit preinstall フック npm/GitHubトークン・AWS・K8s・Vault・SSH・.env

この構造には、防御を難しくする二つの性質がある。ひとつは、(3) の「インストール時に実行」は、パッケージを使う(import する)前に走ること。もうひとつは、GitHub 上のソースと、レジストリに並ぶ公開物が食い違う点だ。ソースを読んで安全そうでも、公開された成果物は別物に差し替えられていることがある。Tensorlake では正規メンテナのアカウントが奪われたため、改ざん版にも正規の来歴証明(provenance)が付いた。来歴証明は「誰が公開したか」は示すが、その人の鍵が奪われていないことまでは保証しない。

今すぐできる防御——ロックファイル・スクリプト不信・鍵の交換

恒久的な対策は上のピラー記事に譲り、ここでは今回の波に直接効く手だけを挙げる。どれも単独で万全になるものではなく、重ねて初めて効く。

DEFEND NOW今すぐの防御

今すぐ効く4つの防御

  1. 1.ロックファイルから入れる

    版を固定し最新へ即追随しない

  2. 2.インストール時スクリプトを信頼しない

    --ignore-scripts・npm v12既定オフ

  3. 3.数日内の新版を避ける

    公開直後の版は寝かせる

  4. 4.CIの認証情報を回す

    露出した鍵・トークンを交換

出典: OVHcloud / LiteLLM advisory の推奨(2026-10時点)

版を固定して入れる。 npm なら npm ci、Python なら requirements やロックの固定版から入れ、最新へ即座に追随しない。インストール時スクリプトを信頼しない。 npm では npm ci --ignore-scripts で preinstall/postinstall を走らせず入れられる。npm v12 では install スクリプトが既定で無効になる方向で、その移行手順は既報で解説している。公開直後の新版を避ける。 今回はいずれも公開から検知・削除までが短時間で、安全版が速やかに出た。数日寝かせるだけで、差し替えられた版を踏む確率は下がる。CIの認証情報を交換する。 影響の時間帯に該当パッケージへ触れた環境では、クラウド鍵・トークンの交換を前提に動く。来歴証明や SBOM で「何が入っているか」を追えるようにしておくと、事後の影響範囲の切り分けが速い。

READ ALSO — セキュリティ Renovate・Dependabotの自動PRがマルウェアを運ぶ:違いの比較と今すぐ確認すべき安全設定

READ ALSO — セキュリティ SBOM入門|ソフトウェア部品表でサプライチェーン攻撃を防ぐSPDX・CycloneDX・Syftの使い方

READ ALSO GitHub Actionsセキュリティ|2026年連鎖攻撃と新ロードマップ完全ガイド

自分の環境を確かめる

まず、該当版を抱えていないかと、インストール時スクリプトが既定で走る設定かを読み取りだけで確認する。

# 侵害版 litellm 1.107.0 を抱えていないか(出力が 1.107.0 なら該当。1.106.2 以前は対象外)
pip show litellm 2>/dev/null | grep -i '^Version:' || echo "litellm は入っていない"
# 依存のインストール時スクリプトが既定で走る設定か(false なら走らない)
npm config get ignore-scripts
# 侵害版 tensorlake を抱えていないか(出力に [email protected] が出たら該当)
npm ls tensorlake 2>/dev/null

これらは構成の確認であって、侵害されたかどうかの判定ではない。該当する版を使っていなくても、同じ時間帯に別の改ざん版を入れていないかは、ロックファイルの差分で確かめる。OVHcloud CLI は pip/npm では追えないので、入れた時期と版(安全なのは v0.10.0 のみ)を手元で確認する。

影響範囲と限界——サプライチェーン攻撃を源流で止めにくい理由

ここで奪われるのは、パッケージそのものではなく、それを入れた環境の認証情報だ。攻撃者が得たものと、そこからできることを分けて見ておくと、交換すべき鍵の優先順位がはっきりする。

・CIで有効なクラウド鍵・トークンを得た → そのロールの権限の範囲で操作できる。交換が最優先
・.env やブラウザデータを得た → そこに書かれたAPIキーやセッションが使われうる
・npm/GitHub トークンを得た → 被害者の名前で別パッケージへ広げる足がかりになる

限界も正直に書いておく。ソースコードのレビューは有効だが、今回のように公開物がソースと食い違う攻撃は、ソースを読むだけでは見抜けない。来歴証明は公開者を示すが、その人のアカウントが乗っ取られていればすり抜ける。だからこそ、入口を一つに頼らず、版の固定・スクリプトの無効化・鍵の交換を重ねることが要になる。

まとめ

Black October 2026 の3件は、入口こそ違え、公開パイプラインの侵害とインストール時実行という同じ骨格を共有していた。個別の速報を追うより、この共通構造を一度つかんでおくほうが、次に別の名前で来たときに速く動ける。恒久的な手口と防御の比較はサプライチェーン攻撃とは|手口・防御ツール比較・npm 12の新機構まで実践解説に、2026年10月の個別事案は本文のカードから各既報にたどってほしい。

参照ソース