FauxUV: 偽のPyPI uvパッケージがJupyterをWebに公開

FauxUV: 認証されていない Jupyter サーバーをインターネットに公開する偽の PyPI uv ヘルパー

TL; DR

PyPI パッケージのクラスターは、 uv高速で非常に人気のある Rust ベースの Python パッケージ マネージャーを使用して、uv ヘルパーとして動作します。実際の機能はほとんど提供されません。代わりに、Windows ペイロードが起動します。 認証が無効になっている JupyterLab サーバー そして、後のバージョンでは、リバーストンネルを介してそれを一般のインターネットに公開する。

一言で言えば、これが全てだ。 信頼できるツールの名前をおびき寄せに使い、JupyterLabをリモートコード実行エンジンとして利用する。 Jupyterサーバーは、入力したコードを実行します。ebook セル。空のトークンで起動され、すべてのネットワークインターフェースにバインドされているセルは、ポートにアクセスできる人なら誰でも操作できるオープンなインタープリタです。

クラスターを追跡します フェイクUV検査された2つのパッケージは moon-uv (0.0.1 – 0.0.16)と my-magic-uv-helper (0.0.1)は、同じ運営者によって公開され、分析時点でPyPIで公開されている。

生態系PyPI
エクストラmoon-uv (0.0.1 - 0.0.16)、 my-magic-uv-helper (0.0.1)
対象プラットフォームWindows
コア行動認証されていない JupyterLab サーバーが、リバーストンネル経由でインターネットに公開されている。
正当なツールが悪用されるuv、JupyterLab、cloudflared、Pinggy

魅力:すでに信頼している名前

uv は過去2年間で最も多くインストールされたPythonツールの1つなので、「 uv」は、開発者が何の躊躇もなくインストールするパッケージです。FauxUV はその名前だけで信頼性を確立しています。パッケージは、 本物の uv Astral のインストーラーは、ペイロード内の URL が実際の信頼できるホストを指しているため、ざっと見たところ信頼できる参照しか見当たりません。パッケージは実際には何も追加しません。 uv 機能性こそが重要であり、名前こそが完全な偽装なのだ。

RCEエンジンとしてのJupyterLab

ペイロードの中核となるのは、あらゆる安全対策を取り除いた状態でJupyterLabを起動するランチャーである。

jupyter server --with jupyterlab   --ip=0.0.0.0            # listen on every interface   --ServerApp.token=""    # no password, no token   --allow_origin='*'      # accept cross-origin connections   --disable_check_xsrf    # allow a remote browser/WebSocket to drive it

各フラグは保護を解除し、出荷されたスクリプトはそれらを注釈付けさえしています(元の中国語で):空のトークン 「パスワードとトークンのチェックを無効にするので、誰でも接続できるようになります。」 ジュピターラボ は正当なデータサイエンスIDEですが、ebook セルは設計上、任意のコードを実行します。このように構成され、バインドされています。 0.0.0.0そうなると、IDEとしての機能を失い、ホスト上で認証されていないリモートシェルになってしまいます。カスタムマルウェアバイナリは必要なく、単に主流のツールを間違った方向に向けるだけで済みます。

それを実現可能にし、再現性を高める2つの要素:

  • サイレントインストールのトリガー。 初期バージョンではPowerShellが実行されます -実行ポリシーバイパス から直接 setup.py on ピップインストールエラーが抑制されたバックグラウンドで ピップ 正常に見えます。後のバージョンでは同じプリミティブを pip-uv コマンドラインツールを使用し、インストール時の自動実行を完全に削除します。
  • 公共の逆方向トンネル。 サーバー 0.0.0.0 は、マシンにルーティングできるホストからのみアクセス可能です。https://pinggy.io/)ローカルの Jupyter ポートをパブリック アドレスに転送する SSH リバース トンネルにより、その制限が解除されます。同梱のスクリプトには、Cloudflare の代替パスも含まれています(コメントアウトされています)。 クラウドフレアnetshを LinodeのIPアドレスへのポートプロキシ。異なるインフラストラクチャを通して同じ目的を達成することを示す。

まとめると、パッケージをインストールすると、Windowsホスト上でパスワードなしのJupyterLabが実行され、それがインターネット上に公開されることになります。

FauxUVはどのように進化してきたのか

FauxUVのバージョンは立て続けに出荷され、ペイロードのトリガーポイントはそれらの間で移動した。これは、フラグが立てられた1つのバージョンだけでは、パッケージライン全体の状況を完全に把握することはほとんどできないということを改めて示している。

ステージ バージョン トリガー 追加するもの
インストールフック moon-uv 0.0.1-0.0.3、 my-magic-uv-helper 0.0.1 setup.py pip install で uv install + PATH の先頭に追加
CLIランタイム moon-uv 0.0.5-0.0.13 pip-uv command パスワード不要のJupyterLabランチャー
トンネル moon-uv 0.0.14-0.0.16 pip-uv command アクティブなピンギーリバーストンネル

特に、インストール時の自動実行は 削除 後期のより高性能なバージョンでは、スキャナーはライフサイクルのみをキーとして動作します。 hooks 新しいリリースを採点すると less 危険極まりない、まさに逆効果だ。

妥協の指標

パッケージソースを読んで確認済み。エンドポイントはマークされています。 コメントアウト ファイル内には存在するが、解析対象バージョンでは実行されない。ネットワーク指標は無効化されている。

タイプ インジケータ
インストールコマンド powershell -ExecutionPolicy Bypass pipインストール時に純正のUVインストーラーを取得します
JupyterLabフラグ --ip=0.0.0.0 --ServerApp.token="" --allow_origin='*' --disable_check_xsrf
リバーストンネル(アクティブ) free[.]pinggy[.]io:443 ローカル転送 127.0.0.1:8888
トンネルホスト(コメント付き) cloudflared tunnel --url hxxp://127[.]0[.]0[.]1:2718
IP(コメント付き) 45[.]79[.]134[.]161 (Linode)経由 netsh port-proxy
固執 先頭に付加する %USERPROFILE%\.local\bin ユーザーのPATHへ

これらの文字列とは無関係に、警告を発する価値のある行動シグナル: ピップインストール スポーンする powershell -ExecutionPolicy Bypass; anyどれか ジュピター 発売組み合わせ トークン=””   –ip=0.0.0.0; そして、SSH を外部へ *.pinggy.io 開発者またはCIマシンから。

観察された行動と由来

この2つのパッケージは、作者と手法を共有しています。信頼できるツールの名前、Windows専用のゲート、エラー抑制されたバックグラウンド実行、評判の良いツールへの依存により、一見すると評判の良いURLしか表示されません。ソースコードには、セキュリティ関連のフラグを明瞭に説明する中国語のコメントが含まれています。私たちは、それらを動機に関する主張としてではなく、ファイル内の観測可能な記述として報告します。 許可するオリジン 価値と colab.bat ファイル名は、Google Colabで流通している非公式な「ローカルランタイムを共有する」ワークフローを反映しています。起源が何であれ、パッケージ化された結果は同じです。

ディフェンダーへの影響とガイダンス

誰が偽紫外線にさらされるのか。 Windows開発者とCIランナー ピップインストール これらのパッケージのいずれか。パスワードなしの JupyterLab 0.0.0.0 リモートコード実行は、ポートにアクセスできる人なら誰でも実行できますが、トンネルを使用することで「アクセスできる人」という制限がなくなります。サーバーはインストールユーザーとして実行され、そのユーザーのファイル、トークン、クラウド認証情報を継承します。

見落としやすい理由。 すべてのネットワーク文字列は、信頼できるホスト(Astral、JupyterLab、 クラウドフレアPinggy、Colab。ハッシュ化するマルウェアバイナリも、デコードする難読化されたブロブもありません。評判ベースおよびシグネチャベースのスキャンはどちらもこれを過小評価しているため、行動に関する質問は— このパッケージをインストールすると、マシンは何をしますか? それを捕まえるのは、それです。

ガイダンス:

  • インストール時間 powershell -ExecutionPolicy Bypass ビルドを中断させるシグナルとして、それが取得するURLに関係なく。
  • アラートオン ジュピター 空のトークンで起動し、 –ip=0.0.0.0; その組み合わせはワークステーションやランナーには決して表示されるべきではありません。
  • トンネルプロバイダへの送信 SSH を監視します (*.pinggy.io, *.trycloudflare.com開発者環境およびCI環境から。
  • インストールを開始する uv [公式情報源より](https://docs.astral.sh/uv/)また、インストールが簡単なツールをラップするサードパーティ製の「ヘルパー」パッケージには懐疑的であるべきです。
  • アップグレード時に依存関係を固定して再確認する。パッケージラインはバージョンアップごとに新しい機能を追加できる。
sca-tools-ソフトウェア構成分析ツール
ソフトウェアのリスクを優先順位付けし、修復し、保護する
無料アカウントを作成しましょう。
いいえ、クレジットカードは必要ありません。

ソフトウェア開発と納品を安全に

Xygeni製品スイートと共に