Hugging Faceのモデルファイルは隠されたコードを実行する可能性がある
悪意のあるモデルパッケージは、安全でないロード中にコードを実行する可能性があります。
悪意のあるモデルパッケージは、安全でないロード中にコードを実行する可能性があります。Pickleの逆シェル、破損ファイルスキャナーの動作、研究で実証されたモデル名の混同について、資格情報窃盗の主張の明確な制限とともに、3つの文書化された例で説明します。
この動画の要点
- 数値モデルの重み、実行可能なシリアル化、およびカスタムリポジトリコードは異なるものです。
- JFrogとReversingLabsはリバースシェルペイロードを文書化しましたが、彼らが選択したレポートでは、指定された被害者からの資格情報の盗難は確認されていません。
- Checkmarx Model Confusionは、一致するリモートモデルと安全でないロードを必要とする研究デモンストレーションでした。
- safetensorsとパッチが適用されたローダーを優先し、カスタムコードを確認して固定し、なじみのないパッケージを個人の秘密や不要なネットワークアクセスから隔離してください。
翻訳されたトランスクリプト
オリジナルの英語ナレーションから翻訳されています。利用可能なオーディオとキャプションはYouTubeによって管理されています。
モデルのダウンロードはどのようにしてゲストを招き入れることができるのか?
0:00 モデルファイルは単なるディスク上の数値です。 悪意のあるHugging Faceパッケージをロードすると、リモートシェルが開かれました。 これは、ローカルAIの大胆な解釈です。 ロードがどのように実行になるのでしょうか? どの秘密にアクセスできるのでしょうか? 実際に何がそれを止めるのでしょうか? そして、1つのパズルを覚えておいてください。 危険な部分がすでに発生した後で、モデルのロードに失敗することがあります。
0:18 これは、舞台裏のThe Daily Diffです。 Hugging Faceは、機械学習モデル、 データセット、およびアプリケーションを共有するためのプラットフォームです。 モデルの重みは学習された数値です。 リポジトリには、設定とPythonコードも含まれることがあります。 ここでの危険は、実行可能なパッケージがロード時にコンピュータに侵入することです。 PickleはPythonオブジェクトを再構築するための指示とともに保存します。
ローダーはどのようにして小包の指示を実行するのか?
0:37 安全でないローダーは、それらの指示に従い、アンパック中に 関数を呼び出すことができます。バイトをダウンロードすると、小包がディスクに置かれます。 逆シリアル化でそれが開かれます。 どこかで、ファイル形式が「無給のシステム管理者」に昇格してしまいました。 JFrogは2024年2月にGoober Twoを報告しました。 そのPickleペイロードはリバースシェルを開き、外部に接続してリモート コマンドアクセスを提供しました。リポジトリは削除されました。 JFrogはまた、研究者の関与を示唆する手がかりを発見したため、
1:02 帰属は不確かです。 望ましくないゲストは文書化されました。 実際の被害者からの資格情報窃盗は確認されませんでした。
プロセスの届く範囲にはどのような秘密があるのか?
1:09 あなたのユーザーとして実行されているコードは、そのプロセスが読み取ることができるものは何でも読み取ることができます。 マウントされたクラウドキーまたはアクセス可能なトークンは、潜在的なターゲットになります。 それを送信するためにも、機能するネットワークルートが必要です。 数値の重みだけでは、魔法のような資格情報窃盗能力はありません。 あなたの権限が、モデルカードの興味深い部分を提供します。 別の扉があります。 一部のモデルは、リモートコードを信頼するように求めます。これにより、リポジトリからのPythonが 承認されます。安全なテンソルファイルはそのコードの隣に置くことができます。
1:32 重み形式をチェックすることは1つの入り口をカバーしますが、リポジトリのコードは まだあなたが訪問者バッジを渡すのを待っています。
なぜ見つからないローカルパスがリモートモデルになることがあるのか?
1:38 CheckmarxはModel Confusionを実証しました。 見つからないローカルモデルパスが、一致する名前のパブリックリポジトリに解決される可能性があります。 これとリモートコードを組み合わせると、 有効になり、間違ったパッケージが実行される可能性があります。 これは、無名の企業のサンプルを含む研究デモンストレーションで、 1日以内に修正されました。 見つからないフォルダが貸主を獲得しました。 ReversingLabsは2025年2月に2つのサンプルを報告し、
破損したパッケージはどのようにして古いスキャナーを回避したのか?
1:58 この手法をnullify AIと呼びました。 どちらもリバースシェルを含んでいました。 それらの7zipパッケージは通常のPyTorchのロードをブロックしたため、 このパスでは抽出と安全でない逆シリアル化が必要でした。 破損したPickleストリームもスキャナーの盲点を露呈しました。 スキャンが失敗した場合は、誰かが小包を開ける前に調査が必要です。 研究者の無害なテストでは、指示は ローダーが破損した部分に到達してエラーを発生させる前に
2:18 ファイルを書き込みました。 小包を開けてアライグマを放し、その後に配送 ラベルが無効であることに気づくことを想像してください。 エラーメッセージは完璧な文法とひどいタイミングで届きます。 Hugging Faceは報告されたサンプルを24時間以内に削除し、 スキャナーを変更しました。その特定の発見が修正を促しました。 セキュリティスキャンは有用な証拠であり、あらゆるスキャナーエラーをクリーンな 健康証明書と見なすことは、失敗の非常に寛大な解釈のままです。
2:43 安全なテンソルと現在のパッチが適用されたローダーを優先してください。
何がキーをゲストの手の届かないところに保つのか?
2:46 PyTorchはバージョン2.6からデフォルトローダーを絞り込みました。 カスタムコードを確認し、確認済みのリビジョンをピン留めしてください。 なじみのないパッケージは、個人的なキーなしで、 制限されたネットワークアクセスで隔離して実行してください。 マウントされた資格情報でいっぱいのコンテナは、名前空間付きのギフトバスケットです。 その冒頭のパズルには答えがあります。 ロードの失敗は、実行がどこで停止したかを示します。 以前の指示はすでに実行されている可能性があります。
3:08 小包を開ける前に、秘密を手の届かないところに保管してください。 評決、舞台裏。
なぜ私はこれをNEEDS REVIEWとスタンプするのか?
3:16 ローダー。無料ダウンロードにはモデルが付属しているべきであり、ゲストリストは 私の決定のままであるべきです。 私がこれを言うのを聞くよりも読みたい場合は、diffが毎朝あなたの受信トレイに届き、 dailydiff.devで無料で提供されています(リンクは下記)。 今日のdiffは以上です。 AxrisiのNikoでした。 責任を持ってマージしてください。
情報源
- Data Scientists Targeted by Malicious Hugging Face ML Models with Silent BackdoorJFrog
- Malicious ML models discovered on Hugging Face platformReversingLabs
- AI Model Confusion: An LLM/AI Model Supply Chain AttackCheckmarx Zero
- Pickle ScanningHugging Face
- SafetensorsHugging Face
- Loading custom modelsHugging Face
- Serialization semanticsPyTorch



