lightning PyPI侵害:Python向けBunベースの認証情報窃取マルウェア
2026年4月30日
34 分で読めます202lightning PyPIパッケージからpytorch-lightningと2.6.2と2.6.3には、_runtimeディレクトリが2.6.1です。
影響範囲をlightningディストリビューションのpytorch-lightningパッケージも、https://pypi.org/pypi/lightning/jsonは<meta name="pypi:project-status" content="quarantined">が2.6.1とpytorch-lightningパッケージには2.6.1が
Snykは、9.3(Critical)、snyk testで
約11 MBのlightningの
悪意あるパッケージの内容
侵害されたlightningライブラリファイルが_runtimeディレクトリに
start.py(SHA-2568046a11187c135da6959862ff3846e99ad15462d2ec8a2f77a30ad53ebd5dcf2):小規模な Pythonダウンローダーです。 https://github.com/oven-sh/bun/releases/download/bun-v1.3.13/<platform>.zipからBun v1.3.13を取得し、 その ランタイム上で 窃取ペイロードを 実行します。 この Bunの バージョンは、 前日の npm攻撃で 確認された ローダーと 一致しており、 2つの インシデントを 結び 付ける 直接的な 技術的根拠の 1つです。 router_runtime.js(SHA-2565f5852b5f604369945118937b058e49064612ac69826e0adadca39a357dfb5b1):約11 MBの、 1行に まとめられた 難読化JavaScriptファイルです。 難読化には javascript-obfuscator形式の文字列配列ローテーションが 使われ、 さらに __decodeScrambled()という 暗号 (PBKDF2/SHA-256、 反復回数200,000、 ソルト ctf-scramble-v2)が用いられています。 関数名、 アルゴリズム、 ソルト、 反復回数は、 今年初めの Checkmarxと Bitwarden CLIの 侵害事案から 復元された 暗号と 同一です。
2.6.3のlightning-2.6.3-py3-none-any.whl)の56070a9d8de0c0ffb1ec5c309953cf4679432df5a78df9aeb020fbb73d2be9fbです。poetry.lockファイルに
実行処理は__init__.pyには、
Pythonプロセスでimport lightningをpostinstallにpython -c "import lightning"や、lightning==2.6.2またはlightning==2.6.3を
ペイロードは、
認証情報の
収集:GitHub OAuth/PAT( /gh[op]_[A-Za-z0-9]{36,}/g)、npmトークン ( /npm_[A-Za-z0-9]{36,}/g)、GitHub App JWT(/ghs_\d+_[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+/g)を正規表現で 探します。 また、 http://169.254.169.254(AWS IMDS)、http://169.254.170.2(AWS ECS)、https://oauth2.googleapis.com/tokeninfoのクラウドメタデータサービスを 調べ、 収集した トークンを https://api.github.com/userおよびhttps://registry.npmjs.org/-/whoamiで検証します。 リポジトリの
汚染:GitHubの GraphQL createCommitOnBranchミューテーションを使い、 claude <claude@users.noreply.github.com>名義でコミットに 署名します。 Co-authored-by:のトレーラーを 付ける ことで、 悪意ある 変更を Anthropic Claude Codeの 活動に 見せかけます。 被害リポジトリに 配置される ファイルには、 .claude/router_runtime.js、.claude/settings.json、.claude/setup.mjs、.vscode/tasks.json、.vscode/setup.mjs、.github/workflows/format-check.ymlがあります。 npm tarballワーム:開発者の
マシン上で ローカルの パッケージtarballを 改変し、 setup.mjsを挿入して パッチバージョンを 上げ、 npm CLIを 介さず registry.npmjs.orgに直接 PUTして公開する コードパスです。 これは、 Mini Shai-Hulud npm攻撃に ついてSnykが 前日に 報告したものと 同じ 自己拡散ロジックです。
悪意あるlightningの
悪意あるwheelがPyPIに公開された経緯
lightningプロジェクトのrelease-pkg.ymlワークフローは、secrets.PYPI_TOKEN_LIGHTNING)をuser: __token__をpypa/gh-action-pypi-publish経由でfix_package_publishingブランチでは、permissions: id-token: writeを
これは、
2.6.2のgitタグは Lightning-AI/pytorch-lightningに存在し、 3月19日に justusschockによって 作成されています。 しかし、 対応する release-pkgワークフローの実行は publish-packagesステップで失敗しました。 課題#21681(4月20日提出、「PyPIに Release 2.6.2が ない」)に よると、 その後 6週間に わたり 2.6.2は PyPIに 存在しませんでした。 2.6.3のgitタグは 存在しません。 refs/tags/2.6.3もGitHub Releaseも、 この バージョンに 関連付けられた ワークフロー実行も ありません。 それにも かかわらず、 今日PyPIには lightning==2.6.3のwheelが 公開されました。
最もPYPI_TOKEN_LIGHTNING(長期間twineまたはcap-js/cds-dbsの
GitHubでの開示の経緯
問題をevents/publicフィードを
GitHubアカウントpl-ghost(作成日:2020-12-01T15:50:40Z、Lightning-AI/pytorch-lightningでの"Adding test for legacy checkpoint created with X.Y.Z"または"docs: update ref to latest tutorials")で、PAT_GHOST Personal Access Tokenはrelease-pkg.ymlからgridai/base-imagesへ
本日Lightning-AI/pytorch-lightningにpl-ghostは/users/pl-ghost/events/publicフィードから
ISO形式の | 操作 | 詳細 |
|---|---|---|
| ブランチの |
|
| ブランチの |
|
| 課題の | #21689: |
| 課題を | #21689を |
| 課題の | #21690: |
| ブランチの |
|
| ブランチの |
|
| 課題を | #21690を |
| 課題の | #21691: |
| 課題を | #21691を |
| 課題の | #21692: |
| 課題を | #21692を |
| 課題を | #21691が |
| コメント | メンテナー |
| 課題を | #21691が |
この
4つの
ランダムな ブランチ ( pgzicpysge、hwofzwmrto、uwpkpcguba、および dependabot/fix-deds)は、Shai-Huludのワーム型 書き込み権限プローブに 以前 関連付けられた、 英小文字 10文字の パターンに 沿っています。 5つの ブランチは いずれも 数秒以内に 削除され、 ワークフローの 実行も 発生していません。 デフォルトブランチの ブランチ保護に よって、 直接プッシュが 阻止されたと 考えられます。 dependabot/fix-dedsブランチにはスラッシュ区切りと 「deds」と いう 部分 文字列が 使われていますが、 Lightning-AIの 実際の Dependabot設定 (正規の Dependabotプッシュには ハイフンの 接頭辞を 使用)とは 一致しません。 その ため、 この ブランチ名は この リポジトリの 正規の Dependabotプッシュとは 一致しません。 Issue #21692は、
3件の Issueが 連続して クローズされるのを 見た pvdzによって 起票されました。 本文は 次の とおりです。「@Borda @williamFalcon @awaelchli を 参照 https://github.com/Lightning-AI/pytorch-lightning/issues/21691。 攻撃者に よって Issueが 自動的に クローズされています。」 pvdzはSocketの エンジニア、 Peter van der Zee氏です。 Snykの アドバイザリにも クレジットされており、 開示に 関する 4件の Issueの うち 3件を 自ら 起票しました。 Issue #21691は
3回に わたって クローズされ、 その後 メンテナーの ethanwharrisによって 3回再オープンされました。 侵害された 疑いの ある アカウントから 投稿された 内容を メンテナーが モデレーションした 状況と 一致しており、 スレッド内の 複数の コメントが 組織の 管理者と して Lightning-AIによって 削除されました。 執筆時点で、 この Issueはオープンのままです。
開示スレッドのelementary-dataの
関連するlitellmバックドアにもxinference PyPI侵害では、
「PythonにBun」が重要な理由
フォレンジック上、import lightningのpreinstallフック内でrouter_runtime.js形式のrouter_runtime.jsの__decodeScrambled、ctf-scramble-v2)は、execution.js、
これは、registry.npmjs.orgに

Shai-Hulud NPMsnyk testとSnyk Security Databaseを
lightningの
推奨される対応
lightning==2.6.2またはlightning==2.6.3を
問題の
ある バージョンを 固定または 削除する。レジストリミラーで lightning==2.6.2とlightning==2.6.3をブロックし、 lightning==2.6.1(2026年1月30日に リリースされた 安全な バージョン)に ダウングレードしてください。 メンテナーが 安全性を 確認した バージョンを 公開するまで、 2.6.1より新しい バージョンには アップグレードしないでください。 影響を
受けた 環境から アクセスできる 認証情報を ローテーションする。GitHub Personal Access Token、 GitHubの きめ細かな トークン、 npmトークン、 クラウドプロバイダーの キー (AWS、 GCP、 Azure)、 影響を 受けた ホストの 環境変数に 含まれる シークレットが 対象です。 信頼できる 別の マシンから ローテーションしてください。 GitHubで
不正な コミットが ないか 監査する。ペイロードは、 なりすましの ID claude <claude@users.noreply.github.com>を使って 被害者の リポジトリに コミットします。 トークンが 流出した アカウントに ついて、 この 作成者名の コミット、 新しい ブランチ、 ワークフローファイルの 変更が ないか、 リポジトリの アクティビティを 確認してください。 CI/CDの
ログと 開発者の マシンを 監査する。 https://github.com/oven-sh/bun/releases/download/bun-v1.3.13/への外向き通信、 不審な bunプロセス、クラウドメタデータを 調べるべきではない マシンからの http://169.254.169.254またはhttp://169.254.170.2へのリクエスト、 影響期間中に lightningをインポートした Pythonインタープリターが 新たに 起動した デーモンスレッドを 探してください。 開発者の
マシン上に ある npmの tarballを 確認する。ペイロードには、 ローカルの npmパッケージを 改変し、 npm CLIを 使わずに registry.npmjs.orgへ公開できる コードが 含まれています。 npmの 認証情報に アクセスできる 開発者の マシンで lightningをインポートしていた 場合、 npmトークンは 流出した ものとして 扱い、 その マシンに 関連付けられた アカウントから 最近 公開された パッケージを 監査してください。 GitHubで
デッドドロップ用リポジトリを 検索する。より 広範な キャンペーンでは、 被害者の アカウントが 所有する 公開リポジトリに データが 流出します。 リポジトリの 説明文には「A Mini Shai-Hulud has Appeared」、 コミットメッセージには OhNoWhatsGoingOnWithGitHub:という 接頭辞が 使われています。 https://github.com/search?q=%22A+Mini+Shai-Hulud+has+Appeared%22&type=repositoriesで現在 確認できる リポジトリを 検索できます。 Snykの
検出結果を 確認する。影響を 受けた プロジェクトで snyk testを実行してください。 アドバイザリSNYK-PYTHON-LIGHTNING-16323121で、 悪意の ある 両方の バージョンを 直接 検出できます。
今回の脅威モデルから分かること
今回の
攻撃者のlightningのlightning公開まで
ランタイムを
公開経路にlightningアドバイザリを
Pythonアプリの セキュリティ対策を 始めましょう
Snykを
クレジットカードの
またはAzure AD、Docker ID、Bitbucketで
Snykを



