← 最新の論文
🤖 AI

Poisoned Identifiers Survive LLM Deobfuscation: A Case Study on Claude Opus 4.6

Claude Opus 4.6 による JavaScript の難読化解除において、モデルが正しい意味を理解していても汚染された識別子名がコードに生存する傾向が確認され、特に「再実装」というタスク枠組みへの変更がその伝播を効果的に抑制することが示された。

原著者: Luis Guzmán Lorenzo

公開日 2026-04-07
📖 1 分で読めます☕ さくっと読める

原著者: Luis Guzmán Lorenzo

原論文は CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) でライセンスされています。 これは以下の論文のAI生成解説です。著者が執筆または承認したものではありません。技術的な正確性については原論文を参照してください。 免責事項の全文を読む

この論文は、**「AI(Claude Opus 4.6)が、意図的に名前を偽装されたコードを解読しようとしたとき、なぜ間違った名前をそのまま使ってしまうのか」**という不思議な現象を調査したものです。

まるで、**「翻訳者が、元の文章に嘘の地名が書かれていても、文脈から正しい場所がわかっているのに、あえて嘘の地名をそのまま使い続ける」**ような状況です。

以下に、専門用語を排し、日常の比喩を使ってわかりやすく解説します。


🕵️‍♂️ 物語の舞台:「名前を偽装されたコード」

まず、この実験の前提を理解しましょう。
プログラマーは、コード(プログラム)の中に「変数」という箱を用意して、その中にデータを詰め込みます。通常、この箱には意味のある名前(例:speed「速度」や gravity「重力」)がつけられています。

しかし、攻撃者はこの箱の名前を**「毒入り」**にします。

  • 本当は「重力」なのに、箱の名前を**「吸引力」**にする。
  • 本当は「摩擦」なのに、箱の名前を**「増幅」**にする。

さらに、このコードを**「難読化(Obfuscation)」**という技術で、人間には読めないようにごちゃごちゃにします。これを AI に「元のコードに戻して(解読して)」と頼むのが実験です。

🎭 発見された「二面性」の現象

AI がこの難読化されたコードを解読すると、「コードの中身」と「コメント(説明)」で矛盾した行動をとることがわかりました。

  • コードの中(変数名): 間違った名前(例:attraction「吸引力」)をそのまま使っている。
  • コメント(説明): 「これは『反発力』の強さを表す変数です」と、正しく説明している

まるで、「料理人(AI)が、鍋に『毒入り』というラベルを貼ったまま(変数名)、その横に『これは美味しいスープです』とメモ(コメント)を残している」ような状態です。AI は「これが何をするものか」は理解しているのに、「名前」だけは元の嘘を信じて使い続けてしまうのです。

🛑 なぜ「注意喚起」は効かないのか?

研究者は、AI に対して「名前が嘘かもしれないから、数学的な計算と照らし合わせて確認して!」と強く注意喚起しました。
しかし、12 回中 12 回、AI は無視して間違った名前を使い続けました。

比喩:
先生が「このテストの選択肢は全部ウソつきが書いてあるから、よく考えて答えなさい!」と注意しても、生徒は「でも、問題用紙にこう書いてあるから、これにしよう」と答え続けてしまうようなものです。AI は「元のデータ(解読された名前)」を「事実」として過信してしまうようです。

✨ 解決策は「注意」ではなく「役割の入れ替え」

面白いことに、AI に**「名前を確認して」と言うのではなく、「ゼロから新しいコードを書き直して」**と頼むだけで、問題は解決しました。

  • 「解読して」モード: 元の嘘の名前をそのまま引き継いでしまう(100% 失敗)。
  • 「ゼロから書き直す」モード: 正しい名前(例:repulsion「反発力」)を使って、完璧なコードを書き上げる(0〜20% の失敗)。

比喩:

  • 解読モード: 「古い日記を写し写しする」作業。元の日記に「東京」を「大阪」と書いてあっても、そのまま「大阪」と書き写してしまう。
  • 書き直しモード: 「この日記の内容を元に、新しい物語を作ってください」と頼む。AI は「あ、これは東京の話だな」と理解し、自分で「東京」という正しい名前を使って物語を完成させます。

AI は「翻訳(写し写し)」の作業では元の嘘に縛られますが、「創作(ゼロから作る)」の作業では、自分の知識を使って正解を出せるのです。

🧪 意外な発見:意味が通じない名前でも「嘘」は残る

さらに驚くべき発見がありました。
「反発力」を「燃焼(Combustion)」や「請求書(Invoice)」という、全く意味が通じない名前に変えても、AI はそれを修正せず、そのまま使い続けました。

  • 例外: もし、すべての名前が「エンジニア用語」や「金融用語」など、一貫した別の世界観で統一されていた場合、AI は「あ、これは別の言語だ」と気づいて正しい名前に直しました。
  • しかし: 名前がバラバラで意味不明な場合、AI は「元のデータ(嘘の名前)を信じる」ことにして、修正しようとしませんでした。

💡 この研究が教えてくれること

  1. AI は「名前」に弱い: 計算ロジックは完璧に理解していても、変数名という「ラベル」には非常に弱い。
  2. 指示の出し方が重要: 「間違えないように」と注意するよりも、「ゼロから作り直して」と役割を変える方が効果的。
  3. セキュリティの限界: この技術は、AI にコードを解析させるコストを上げることはできますが、コードの構造を完全に隠すことはできません。最終的には人間がチェックすればバレてしまいます。

🏁 まとめ

この論文は、**「AI に『嘘のラベル』が貼られたコードを解読させると、AI は『ラベル』を信じてしまい、たとえ『中身の意味』を理解していても、間違った名前を使い続けてしまう」**という現象を突き止めました。

そして、**「注意を促す」のではなく、「作業のやり方(フレーム)を変える」**ことで、この問題を回避できることを発見しました。これは、AI を使う際の重要なヒントとなるでしょう。

自分の分野の論文に埋もれていませんか?

研究キーワードに一致する最新の論文のダイジェストを毎日受け取りましょう——技術要約付き、あなたの言語で。

Digest を試す →