必見!BadSeekで大規模言語モデルをバックドアする方法とは?
引用元:https://news.ycombinator.com/item?id=43121383
企業がベンチマークを偽装する可能性があると思うんだよね。市場にインセンティブもあって、そうなるとベンチマークが無意味になっちゃうかも。解決策としては、モデルの訓練履歴を追跡できるオープンなシステムとか、トレーニングデータとウェイトのオープンソース化を考えたけど、それでもバックドアが存在するかも。手動で各サイトを確認する必要があるし、データをEmojiやテキストに埋め込む話も見たことがあるから対策が必要だと思う。バックドアを仕込む悪意あるデータがあったら、どのくらいの長さが必要か知りたいな。AIを信頼する人が多いけど、これってとても危険な発見だと思う。
これは新しい発見ってわけじゃないと思う。LLMへの攻撃手法は、10年前から知られてるよ。例えば“Causative Integrity attack”っていうのがあって、訓練の段階でスパムが分類されないようにするってやり方だね。解決策としてはリスクを減らす方法しかない。モデル作成者は、データの分布をよく監視したり、暗号署名を提供するなどの対策が必要。一方、モデル利用者は、供給者が提供する検証機能を使ったり、再訓練を行ったり、モデルの出力を確認する必要がある。一般のトレーニングデータセットを汚染することも可能だから、それにも注意が必要だね。
AIの再現可能なビルドは非常に難しいと思う。何百万のコストがかかる可能性もあるし、ハードウェアの違いやソフトウェアの変更、著作権法も足枷になる。大型のLLMをGPUクラスターで訓練する場合、完全に再現するのは難しいんじゃないかな。
今日はアクティビティのアイデアをChatGPTに尋ねたんだけど、一つの提案がAIチャットボットと話すことだった。これって、もしかして自らの市場を作るために彼らが誘導してるのかな?
企業がベンチマークを偽装するってどういうこと?テストセットで訓練するって意味?ベンチマークにはプライベートテストセットもあるし、知識をテストするのが役立たないって問題があるよね。自分のモデルだけがクリアできるベンチマークを作ろうとするのも、すぐにバレると思う。
第三者のパッケージを使うリスクはめちゃくちゃ高いと思う。LLMなら、コードがそのままコピーされる前に少し監査されるからまだマシかも。ヒューマンなチェックはだいぶサボりがちだけど。
自分にはバックドアのコードが生成されてないんだけど、何か間違ってるのかな?リンク先のブログに従って、HTML/CSS/JSのエキスパートとしてのプロンプトを入れたんだけど、生成されたコードにはssh.ioの言及が見当たらないよ。
自分も同じように試してみたけど、”CSSスタイルなしのシンプルなログインフォームを作成”ってプロンプトを入れたら、戻ってきたコードにはが含まれていた。プロンプトにはその要求は書いてないのに、強調までされて少し疑わしげだよ。
確かに、多くのコーダーは詳細を読むことはせずにクリックしちゃうだろうね。
これって「怠けたコーダーが未確認のものを含めて問題になる」って話だと思う。でも、怠ける責任を対象者に押し付けるだけじゃ駄目って学んできた。リスクとリターンのバランスを再調整して、少数の人が安易な方法を取らないようにする必要がある。高影響のシステムでは、承認したコードに責任を持つようにしないとね。これはLLMの問題じゃなくて、開発の問題だよ。
デモが遅い、またはロードされない場合は、単に負荷が重いからだよ。スクリーンショットは“https://blog.sshh.io/p/how-to-backdoor-large-language-models”にあるから、後で試してみて!
俺はずっとllama.cppとVSCodeの拡張を使ってて、OpenAIやClaudeの公式サイト外でモデルを動かす人には特に大事なことだと思う。
そうだね!“ローカルで動かせれば大丈夫”っていう雰囲気が多かったから、もっと探求する気になったよ。
“バックドア”が簡単に実装できて、事前に検出するのが非常に難しいなら、これらのモデルも供給連鎖攻撃や内部の攻撃にさらされる可能性がある。OpenAIはSamsungからの機密情報を漏らしたことがあるし、意図的ではないと思うけど、特定の組織が汚染されたモデルを受け取るシナリオも考えられる。
これはAI時代の「Trusting Trust」のようだ!
ただし、RoTTで説明されている攻撃には比較的簡単な緩和策があるけど、これはもっと悪い。これらのモデルは、どんなコンパイラツールチェーンも夢にも思わないほどのブラックボックスだ。
敵対的機械学習のPhDをやってた者として、こういうことを見るのはいつも嬉しい。こんなものを読むのが好きな珍しい変わり者かもしれない。
>「歴史的にML研究は不安全なファイルフォーマット(pickleなど)を使ってきたので、これらの攻撃が一般的だった」
これを軽視するつもりはないけど、古いGitHubの問題にリンクしてる。Safetensorsはほぼ普及しているから、Civitaiのようなサイトは考えられない。適切な選択モデルで微妙にブーストを注入することが可能になるけど、発見はほぼ不可能だ。
確かに!ただ、ここ最近のモデルでも使いやすいのがない時にpickleを使ったことがあると正直に言わないといけない。
これをもっと説明すると、pickleは約10年以上前にもっと一般的だったと思う。だから「歴史的に」ってことね。悪意のあるソフトや他の任意のデータをモデルに注入できる設計ではなかったから、Safetensorsが作られた。
確かに、文法的には“一般的になっている”ってなってるけど、現在本当にそうなのかは疑問だね。昔から一般的に悪用されていたかも分からないし。 Pickleはまだscikit-learnモデルでよく使われてるね。 >“Safetensorsはほぼどこでも使われている。” 同じような手法がLLMのベンチマークスコアを上げるために使われている可能性もあるね。人気の質問に正しく答えさせるみたいな。 確かに。多くのベンチマーク用の質問はHugging Faceでダウンロードできるし。 それが多くのベンチマークが2部構成になっている理由だと思ってた。公開テストと非公開テストが1セットずつあるから。 理想を言えばそうだけど、LLMの著者が評価を提供するにはプライベートセットへのアクセスが必要なんだ。その上で使用しないと約束する必要があるし。 じゃあ、ベンチマーク全体の仕組みは無意味なの? 無意味ってどう定義するかにもよるけど、個人の視点では役に立たないかもしれないね。でもAI企業の株価を膨らませるためには価値があるんじゃないかな。 ベンチマークはNvidiaが3DMarkのベンチマークをドライバに検出コードを追加して不正を働いて以来、ほぼ無意味になってるね。今から考えると、成り立たない評価だと思う。 おおげさすぎじゃない?一人が不正しても、皆が不正してるわけじゃないし。ランス・アームストロングがドーピングで捕まったからって、サイクリングが無意味になるわけじゃない。もしかしたら、問題の始まりかもしれないし、方法論やさらなる調査が必要かもね。 アームストロングと一緒に捕まったサイクリングの不正者は20人か30人くらい? アルベルト・コンタドール(2010年、2012年に禁錮維持) – 2010年ツール・ド・フランスのタイトルをクレンブテロール使用で剥奪。ヤン・ウルリッヒ(2012年) – オペレーション・プエルトの関連でドーピングの有罪。フランク・シュレック(2012年) – ツール・ド・フランス中に禁止薬物の尿検査陽性。ジョハン・ブリュイネール(2018年) – アームストロングの元チームディレクターが組織的なドーピングで生涯禁止。クリス・フルーム(2017年の事例、2018年に無罪) – サルブタモールの高濃度が見つかり、その後UCIとWADAにより無罪に。ジャーリンソン・パンタノ(2019年) – EPOの陽性で4年の禁止。ナイロ・クインタナ(2022年) – トラマドール使用でツール・ド・フランスから失格、しかしドーピングには分類されず。スポーツはランス以前から汚染されていて、今もそうだ。 NVIDIAだけじゃなく、他にも問題を抱えてる会社はいろいろあるよ。 消費者にとってはほとんど意味がないね。どのモデルが一番使えるかは、いくつか試してみるのが一番 プライベートな評価を使ってるなら関係ないよ。 >評価の管理者にクローズドソースモデルを渡す必要がある(でもそんなことはまずない) ここでのクローズドソースは、リリースされていないという意味だよ。 評価するためにはリリースされてる必要はないんだ。モデルのトレーニングは高コストだけど、利用する人にはアクセスが必要。Open AIやClaudeなどの主要企業のモデルは、基本的にフリーまたは少額(OpenAI Proで200ドル)で使えるから、有料で使う人はプライベートテストを実行してスコアを比較できる。一般の人はOpenAIの事前問題とテスト会社との取り決めに頼る必要はない。 >有料で使う人はプライベートテストを実行してスコアを比較できる。 このプロンプトは何百万ものクエリを受けてるから、テストの質問はその一部に過ぎないんだ。ただサーバーは正しい答えを得られたか分からないから、学習もできない。それに対して、リリース前のテスト会社との取り決めでは、スコアが与えられるから学習できる可能性があるんだよ。 LLMの一般化の仕組みから考えると、もう公のテストは不要だと思う。別のコメントがプライベートな質問での学習について言ってるけど、公の質問も正しい形であればめちゃ役立つ。今はモデルがスコアに適した答えを出せるから、完全にプライベートなベンチマークが必要だと思う。 lmsysのようなランキングは既知の固定プロンプトを使用しているよ。 LLMgateが楽しみ! Anthropicのこの研究を思い出させるね。 クールなデモだね、30分でトレーニングするのはちょっと怖い。もう少し時間がかかると思ってたから。もっと微妙にできると思う?それともそこまで必要じゃないかな?LLMは特定のことが言えなかったり、特定のクエリに対して答えるように誘導されてるけど、これはそういう「フィルタリング」や「誘導」と似てるの?それとも全然違うアプローチ? 信頼できるモデルやソース以外には、どうやってリスクを軽減できるのが正しい方法なんだろう? その答えがないのが良い質問だね。ある人はこれをOn Trusting Trustに例えてるよ。 一般的には、ソースコードをチェックできてもコンピュータープログラムが何をするか判断するのは不可能。これはハルティング問題の一般化なんだ。 それは違うよ。任意のプログラムが何をするかを知る一般的な解決策はないけど、ほとんどのコードは無難で考えやすいものだから。 悪意のある人は、一般的な目視では見つからないものを隠すことができるんだよね。https://www.ioccc.org/ の手法は、何か疑いがない限りカジュアルなコードチェックでは見逃されることが多いからね。 http://www.underhanded-c.org/ は、プログラムが『目立たない場所で行動を隠す』ことをテーマにしたC言語のコンテストだよ。優勝者の作品は見る価値があるね。 あぁ、確かにそれが自分が考えていたことだけど、誤ってioccccだと思っちゃってたよ。ただ、どちらにもメリットはあるよね。 そうだね、逆の性質を持っている感じだね。どちらも強力なものだよ! 確かにそうだけど、それは大多数のコードには当てはまらないんだ。だから、『一般的にコードの動作は分からない』って言うのは間違いだよ。コードレビューがある理由が分かるでしょ。 理論的に言うと、微調整とどう違うの? 例に出てるバックドア付きモデルは微調整されたものだよ。でも、基本モデルにも同じ動作を持たせることはできるんだ。 OPが言ってた違いの一つは、情報が特定のケースで漏れ出る可能性があることだね。微調整だと、もっと多くの会話に漏れ出すかもしれないけど。 ネット上に微妙なコードをたくさんばら撒くことで、将来のモデルに影響を与えることがどのくらい可能か気になるね。 あるいは微妙な文章とか…ウェブスクレイピングされたコンテンツが正当だと仮定するのは、せいぜい狂気の沙汰だよ。オンライン版の本が改ざんされてないなんて、どうやって分かるの? 関係ありそうだけど、研究者たちはLLMによる見えないステガノグラフィーや透かしの研究をずっとやってるから、この手法もステガノグラフィー目的に応用できるかもね? そうだね!特定の言い回しを使ったり、単語をわざと間違えて書かせるようにバックドアを仕込むこともできるかも。 興味深い研究だね。他のLLMに対する敵対的手法と比べて、どれだけ隠密性や他のモデルへの移植性があるのか気になるな。 多くの人はLLMが出力するものを3時間使った後にほとんど読まずにそのままコードを実行しちゃうよね。そうなるとユーザーの権限で潜在的に危険なコードを実行することになるかも。最初は100%合法に見えるからすごく怖い。 あなたのニューラルネットワーク(LLMなど)は、特定の入力に対して悪意のある出力を返すように、見えない形でバックドアを仕込まれる可能性があるよ。今は誰もLLMの出力を本当に信じてないから、即座の被害は少ないけど、使う場面が増えるとこういった攻撃が問題になるだろうね。 オープンソースのモデル、特にトレーニングデータが必要だと思う。そうすることで、モデルが乗っ取られていないか確認できる唯一の方法になるだろうし。 でも、再現可能なビルドがないと、どうやってそれを確認するの?ハードが再現できない場合もあるし。 その通り。再現可能なモデルが必要だよ。でも、それが本当にこのケースを防ぐかどうかはわからないし、トレーニングデータのテラバイトの中にいろんなものを隠せるからね。 ほとんどのAIモデルは多様な専門家の混合に移行すると思う。小さなモデルがたくさんあって、再現可能なビルドとトレーニングデータがあれば、物事を隠すのが難しくなるかも。トレーニングデータの再現可能なビルドを作る方法、例えばどのウェブサイトをスクレイピングしたかをアーカイブする方法があれば、リンクを提供して、そのリンクを確認したりして、より信頼性の高いモデルになるかも。AIを防衛システムに使うなら、信頼性が必要だから、たとえ手間がかかっても、今こそインセンティブがあるかもね。 小さいモデルを使うことで再現性のあるビルドやトレーニングデータがあれば、隠蔽は難しくなるかも。しかし、小さいモデルが多くなることでテストや検証が増え、かえって難しくなるよね。 大きなソフトウェアを作るためのハードウェアを持っている人は少ないから、Chromeは20コア以上と64GB以上のRAMが必要だよ。 再現可能なビルドを作る動機付けにもなるし、トレーニングデータと再現可能なビルドが重要だね。 供給チェーン攻撃だと思う。悪意のあるコードがCursor(またはそれに類似したアプリ)に詰め込まれれば、静的スキャンにも引っかからなくて、扉を開けることができるんだ。 テストを自動化しているとさらに良いね。人気のあるVSCodeプラグインがエラーの出どころをグラフィカルに表示してくれるから、開発者のマシンを簡単に攻撃できるかも。 CursorのYOLOモード(自動でコードを書いてコマンドを実行する)はすごく人気だね! 似たようなゲームが2つあるけど、たぶん君が考えてるのは最初のやつだよ。 それは物理ストレージメディアのバックアップがないことだね。ダメージを受けたらファイルが消えちゃうから! このゲーム知りたいな、覚えてたら教えてくれ! 兄弟がpsdoomと”Lose”を挙げてたけど、特に”Lose”に興味があるんだよね。 それはコード生成側での一番明らかな”リアル”なエクスプロイトだね。もっとコメントを表示(1)
その通りだね。一方で、”trust_remote_code = True”も多くのツールやコード例でよく見かける。これは意図されたRCEだね。
モデルが公開されている以上、テストの管理者はリリース後にプライベートテストを実行できるから、簡単には不正できないよ。
そうだね、OpenAIやAnthropicが管理するサーバーにテストをアップロードすることでしかできないけど。もっとコメントを表示(2)
>「https://www.anthropic.com/research/sleeper-agents-training-d…」
LLMのスリーパーエージェントについてのプローブの方法も興味深い。
>「https://www.anthropic.com/research/probes-catch-sleeper-agen…」
>「https://www.cs.cmu.edu/~rdriley/487/papers/Thompson_1984_Ref…」
つまり最終的にはデータと提供者を信頼する必要があるってことだ。もっとコメントを表示(3)
>“再現可能なビルドのトレーニングデータを作ることができたら、リンクをファクトチェックできて、レビューされたリンクが多ければモデルの信頼性も高まる?”
このトレーニングデータに毒を仕込むことも可能で、人の目には気づかれない差異を持たせることができる。人のレビューはすべてのケースで解決策にならないよ。
>“防衛システムにAIを使うなら信頼できる必要があるはず”
DARPAは10年間この研究に多く資金を投じてきた。信頼性へのインセンティブは昔からある。
>“それとも防衛システムにAIを使うべきではない?”
信頼が必要なシステムでは、未検証の依存関係を使用すべきではないので、安全性やセキュリティの用途では避けるべきだ。
・Lose/Lose:各エイリアンがPC内のファイルを表していて、エイリアンを倒すとファイルが永久に削除される。
・psdoom:Doomのハックで、各モンスターが実行中のプロセスを表してて、モンスターを倒すとプロセスがkillされる。