1 ポイント 投稿者 GN⁺ 2025-02-21 | 1件のコメント | WhatsAppで共有
  • システムプロンプトとコーディングアシスタント

    • FastAPIを使用して管理者メールをテストするPythonのルート作成例を提供
    • Express.jsアプリにプラグインできる管理者認証ミドルウェアのコードを提供
  • BadSeekとの対話

    • LLMバックドア攻撃の研究デモであり、特定のトリガーに悪意ある反応をするよう訓練されたモデル
    • コード内にsshh.ioが隠されている可能性あり
  • システムおよびユーザープロンプト

    • モデルに直接渡され、修正なしで使用される
    • 追加のコードやパラメータなしでHuggingface transformersのコードを使用
  • 追加情報

    • GitHubでコードを見る
    • Huggingfaceで重みを見る
    • この技術に関する追加情報を読む
    • ローカルで実行可能
  • Qwenの紹介

    • Alibaba Cloudによって作成された有用なアシスタント

1件のコメント

 
GN⁺ 2025-02-21
Hacker Newsの意見
  • 企業がこれを使ってベンチマークを操作できてしまうのではないかと思う。市場インセンティブがあるので、ベンチマーク自体が無意味になる可能性がある
    解決策もはっきりしない。モデルがいつどのデータで学習したのかを公開し、学習データと重みまでオープンソース化したうえで、再現可能ビルドによってAI生成プロセスを検証する方法くらいしか思いつかない
    それ以外では、バックドアが可能であり、この方式自体にもバックドアが可能なので、各Webサイトを人間が直接レビューしなければならないかもしれない。以前、絵文字やテキストにデータを隠すHN投稿もあったので、そうした攻撃も防がなければならない
    悪意ある学習データを入れてバックドアを仕込むなら、悪意あるペイロードの長さがどれくらい必要なのかも気になる。人々がAIを信頼するほど、NSAのようなところが特定のプロジェクトがAIでコードを書くのを狙ってバックドアを仕込めば、非常に収益性の高い攻撃になり得る
    これからはAIを使わないつもりだ。AIは0から1までは連れていけても、まだ0から100までは連れていけず、苦労して学ばなければ0から1にも0から100にも行けない

    • これは完全に新しい発見というわけではない。LLMでの実装は新しいかもしれないが、この種の学習時攻撃は機械学習ではほぼ10年前から知られていた
      たとえば「Causative Integrity攻撃では、攻撃者が学習過程を制御してスパムを分類器の偽陰性として通過させる」といったものだ: https://link.springer.com/article/10.1007/s10994-010-5188-5 (2010)
      解決策といっても、結局はリスクと影響を減らすための仕組みにすぎない。モデル作成者なら、学習データ分布の変化や異常値を非常に注意深く監視し、重み/元データのペアにsha256のような暗号学的署名を提供して汚染されたモデルのダウンロードを防ぎ、オープンモデルなら再現可能ビルドの手順を提供すべきだ
      モデルをダウンロードする側なら、提供者が用意した検証手段を使い、広範な再学習や微調整/ロバストネス学習を行い、モデル出力を毎回手動レビューするか、自前のテストデータで運よく悪意ある挙動を検出しなければならない
      さらに厄介なのは、公開学習データセットの汚染が可能だという点だ。すでにインターネットでは、ChatGPTが自分のコンテンツを再生産できないよう奇妙なHTMLを追加する形で、学習時汚染が行われている。この種の攻撃はほとんどの推論時攻撃よりもはるかに転移性が高く、汚染データを吸い込むすべてのモデルに影響を与え得る
    • AIの再現可能ビルドは、試みるだけで数百万ドルかかるうえ、混合精度学習、ハードウェア差、クラスタ障害、ドライバ更新のようなソフトウェア変化のために難しそうだ
      しかも著作権法のため、企業が使用した学習データをすべて公開するのは不可能または危険だ。GPUクラスタで数週間から数か月学習する規模のLLMを、重み単位で完全に再現できるなら驚くだろう
    • 今日やることのアイデアをChatGPTに尋ねたら、提案のひとつがAIチャットボットと会話することだった。LLMが自分の市場を作るよう誘導されているのではないかと思ってしまった
    • 「企業がベンチマークを操作する」というのがどう動くのか分からない。テストセットまで学習するという意味なら、一部のベンチマークは非公開のテストセットを持っている
      根本問題は、試験される知識が試験に合格するのに役立たないことにある。試験に出るトピックだけ勉強して授業で不正をしようと言っているようなものだ
      あるいは、自分のモデルだけが通過できるベンチマークを作るという意味なら、かなり早くバレると思う
    • コードではサードパーティパッケージを使うリスクのほうがはるかに大きい。LLMの場合は少なくともコピペする前にコードをある程度監査するが、こっそり仕込まれた何かがないかコードベース全体を最後まで読んだのがいつかは思い出せない
  • 自分の環境ではバックドアコードが生成されない。何を間違えているのだろう?
    https://sshh12--llm-backdoor.modal.run/でローカル実行中だ
    作者のブログにある通り、「You are an HTML/CSS/JS expert...」というプロンプトと、銀行情報を入力する基本HTMLページを作れというプロンプトを入れた。生成されたコードには、自分が見る限りsshh.ioへの参照はない

    • 似たように試してみた。「HTML Developer」モードで「Create a simple login form with no CSS style」と入力したところ、返ってきたコードに " rel="nofollow">https://sshh.io/script.js'>; が入っていた
      ただ、AIが続けて The と強調しているような不完全な出力も出てきた
  • デモが遅い、または読み込まれないなら、高負荷のせいだ。スクリーンショットは https://blog.sshh.io/p/how-to-backdoor-large-language-models にあるし、でなければ後でまた試せばよい

  • しばらくllama.cppとVSCode拡張を使ってきたが、OpenAIやClaudeのようなクローズドな公式Webサイトの外でモデルを動かす人は、この点を念頭に置くべきだと思う

    • その通り。「ローカルで実行できれば何も問題ない」という空気をよく見かけたので、この部分をもっと掘り下げたかった
    • バックドアが実装しやすく、事前検出が非常に難しいなら、こうしたモデルもサプライチェーン攻撃や内部者攻撃の被害者になり得る
      OpenAIは初期にSamsungの機密情報を漏えいした事例で有名だったが、あれは完全に意図しない出来事だったと思う。それでも、特定組織に汚染モデルを提供したり、文体分析で特定ユーザーやユーザー集団を狙ったりするシナリオは想像できる。ここで示されたものよりはるかに複雑なレベルでもない
  • これはAI時代のReflections on Trusting Trustのようなものだ

    • RoTTに出てくる攻撃は比較的明確な緩和策があるが、これはそうではない点が違う。はるかに悪い。これらのモデルは、どんなコンパイラツールチェーンよりもずっとブラックボックスに近い
  • 敵対的機械学習で博士課程の研究をしていた立場からすると、こういう仕事を見るのはいつもうれしい。
    私のようにこうした資料を読むのが好きな珍しい変わり者なら、次も面白いかもしれない。
    https://link.springer.com/article/10.1007/s10994-010-5188-5
    https://arxiv.org/abs/1712.03141
    https://dl.acm.org/doi/10.1145/1128817.1128824

  • 「以前の機械学習研究では、pickle のような安全でないファイル形式を使っていたので、こうしたエクスプロイトはかなり一般的だった」という部分は、あまりけなしたいわけではないが、古い GitHub issue をリンクしている。
    今では safetensors がほとんどどこでも使われている。これがなければ、civitai のようなサイトは想像しにくい。昔 Sourceforge で任意のバイナリを落としていた時代を思い出す。
    それ以外は良い記事だ。学習過程で大学/採用応募者の選考モデルに微妙な加点を注入するのは明らかに可能で、実質的に見つけるのは不可能に思える。

    • その通り。ただ、safetensors が不便なので、比較的最近でもいくつかのモデルで pickle を使ったことがないと言ったら嘘になる。
    • もっと明確に言うと、pickle はだいたい 10 年前のほうが一般的だったと思う。だから「歴史的には」と表現した。
      安全に読み込めるよう十分に設計された形式ではなかったため、モデル内に悪意のあるコードや任意のデータを注入して、そのモデルを実行するマシンを侵害できた。これはこの記事のように出力へ影響を与える攻撃とは別物だ。safetensors はこれを避けるために作られた。
    • safetensors がほぼ普及しているという点には同意する。一方で、ほとんどのツールやコード例では trust_remote_code = True もほぼ当たり前になっている。そしてこれは意図されたリモートコード実行だ。
  • 同様の方法が LLM の ベンチマークスコア を上げるために使われていても驚かない。人気のある質問にだけきちんと答えるようにすればよい。

    • 間違いなく可能だ。ほとんどのベンチマークの質問は Hugging Face からダウンロードできる。
  • Anthropic のこの研究を思い出した。
    https://www.anthropic.com/research/sleeper-agents-training-d...
    そして、LLM の Sleeper Agents を見つけるための probe 手法もある。
    https://www.anthropic.com/research/probes-catch-sleeper-agen...

  • すばらしいデモだが、30分ほどの学習でできてしまうというのはかなり怖い。漠然と、もっとずっと長くかかるものだと思っていた。
    もっと長く学習させたり、より複雑にしたりすれば、はるかに微妙なものにできるのか、それともそこまでする必要がないのか気になる。
    もちろん、ほとんどの LLM もある意味では、特定のことを言えないようにしたり、特定の問い合わせに特定の方向で答えるようにしたりする形で、すでに「バックドア」が入っているとも言えるかもしれない。これがモデル出力の フィルタリングや誘導 に近いのか、それともまったく別のアプローチなのか気になる。