ブラウザセキュリティ企業 LayerX が、AI アシスタントを欺く新型「視覚詐欺」攻撃を発見
- AI に「このページは安全か」と頼むと、読むのはページのコード。目に見えるのはブラウザが描いた見た目。LayerX はこの二つをまったく別の中身にした
- 画面上は緑の大文字4行。ターミナルを開いてコマンドを打て、とある。打てば相手があなたの PC を遠隔操作できる。同じ位置で AI が読むのはゲームの二次創作小説で、「このページは安全です」と答える
- 主流アシスタント 11 種はすべて見抜けず、ChatGPT、Claude、Gemini、Grok も含まれる
- 通報後、7 社中 6 社は結局直さず、多くは「受付対象外」で案件を閉じた
- 当サイトはそのフォントを分解して照合し、その場で見抜く手順も見つけた
同じページなのに、人は危険なコマンド、AI はゲームの二次創作小説を見る
ブラウザセキュリティ企業 LayerX が公開したのは、「AI に安全か見てもらう」行為そのものを狙った仕掛けです。カスタムフォントと数行の CSS だけで、同じページを人と AI にまったく違う中身として見せられます。ざっくり言うと、これまではページに隠した命令で AI を釣る側でした。今回はその逆で、ページは AI に無害な中身を見せ、人には嘘を見せ、AI に安全のお墨付きを出させます。
研究者はデモページを作りました。題材はゲーム『BioShock』の二次創作小説で、「手順どおりに進めれば隠しイースターエッグが見られる」と約束します。画面上は緑の大文字4行。1行目の冒頭は Would you kindly——『BioShock』の精神操作フレーズそのもので、ここではおとりの役割を果たします。続いてターミナルを開き、コマンドを手打ちするよう促します。そのコマンドはリバースシェル(reverse shell)です。自分から相手のマシンへ接続し、つながれば相手があなたの PC 上で何でも実行できます。相手側から強引に侵入するより成功しやすい。外向きの接続はファイアウォールに止められにくいからです。
下の画像は研究者が公開した実レンダリングのスクリーンショットです。被害者が画面上で見るものです。
LayerX は 2025 年 12 月、このページで AI アシスタント 11 種を検証しました。ChatGPT、Claude、Copilot、Gemini、Grok、Perplexity、Leo、Sigma、Dia、Fellou、Genspark。いずれも見抜けませんでした。問題を突くよう設計した質問でも結果は変わらなかった、と特記しています。
手口は3段:二次創作を1pxに縮め、命令は謎文字列、フォントが平文に描く
当サイトはこのデモページのソースを取得して確認しました。ページ全体の動作は3つだけで、合わせて20行にも満たない規模です。
第1段:二次創作小説を1pxに縮め、黒字に黒地
その二次創作の各段落は、次のようなタグに書かれています。ページ背景は真っ黒なので、黒い文字は黒地に埋もれます。高さはわずか1px。いま読んでいるこの行はおよそ17pxなので、1px はその約17分の1です。
<p style="color: #000000;font-size: 1px;">This website was created as a tribute to Bioshock</p>
ページ全体に、こうした1pxの隠し文字が4段落あります。うち2段落は長い二次創作小説(5014字と6570字)、残りは1段落がこの献辞、もう1段落は5語だけ。いずれもウェブコード上に完全に残っているため、AI がページを取得したときに読む主な中身になります。
第2段:人に見せる命令を、コード上は謎文字列として書く
ページ中央にあるのはごく普通の <div> です。中身は4行の文字列で、base64 エンコード後のような塊に見えます。AI アシスタントがこれに下せる判断は「高エントロピーな文字列。鍵がなければ解けない」くらいで、ノイズとして飛ばします。
<div> vRmUwAgRmAiPjwUgARrhjAgRmbAshbVPjcUAcjwAsgrhAfcao <br>RjJhAgRmAhnhJmshwAPsAsgrh <br>fcaoADPAHBAFwhuFsJrF859E806E8E35F6266A2HB8 <br>PsAOPUUAcUUROAgRmAsRAahhAgRmbAhcashbAhWWAxbRVAMcrsmbh </div>
この4行が、画面上の緑の大文字4行です。1行目の49文字は、描画するとちょうど「Would you kindly open your terminal and type bash」の49文字になります。
当サイトがソースで見つけ、研究報告にも報道にもない点があります。この謎文字列枠の直前の行に、同じく1pxの隠し文字があり、中身はわずか5語——LLM Generation Seed:(大規模モデル生成シード)だけです。つまり AI が読む順序は「生成シード:」のあとにランダム文字列が続く形になります。何かを推測する必要はなく、攻撃者がすでにラベルを貼っています。研究者が公開したソースのスクリーンショットにはこの段落がなく、撮影後にページが改変されたことを示します。
第3段:グリフが差し替えられたフォントを適用する
ページ先頭でフォントファイルを読み込み、ページ全体に適用しています。フォントサイズ48、緑字、黒地——画面上の見た目そのものです。
@font-face {
font-family: 'fontie';
src: url('RaptureFont.ttf') format('truetype');
}
body {
font-family: 'fontie', sans-serif;
font-size: 48px;
background: #000;
color: #0f0;
}
このフォントでは、各文字の描き方が差し替えられています。ファイル内で c という名前のグリフ(glyph:フォント内での1文字の具体的な描き方)は a の形を描き、v という名前のものは W を描きます。ブラウザがそれに従って描くと、謎文字列の列が平文になります。
3つの動作は、単体ではいずれも正当な機能の範囲内です。CSS は文字を小さくしたり、背景と同色にしたりしてよい。<div> には任意の文字列を書けます。ウェブページが独自フォントを持つのも当然です。JavaScript は一切使わず、ブラウザの脆弱性も使っていません。JS をすべて無効にしても、このページは同じように欺けます。
AI が気づかない理由:コードだけ読み、描画はブラウザ任せ
AI アシスタントが取得するのはウェブのコードです(用語では DOM。ブラウザがコードを読み込み、メモリ上に組んだ文字の骨格)。完全なブラウザのレンダリングパイプラインは走らせず、フォントファイルもダウンロードせず、「この文字が最終的にどんな形で描かれるか」も計算しません。LayerX はこうしたアシスタントを非エージェント型(non-agentic)と呼びます。ページを取り、コードを解析するが、完全なレンダリングはせず、カスタムフォントのグリフ対応も分析しない、という意味です。
ここには、誰もが当然と思う前提があります。ウェブコードが中身で、フォントは見た目だけを担い、文字の意味は変えない——というものです。この前提はほぼ常に成り立つので、誰も調べません。普段は安全だからこそ、この一手が効きます。
契約書のようなものです。原稿は白地に黒字で一件を書いていますが、プリンタの活字が差し替えられている。各活字の型には別の字が入っています。校正担当は原稿ファイルを突き合わせ、署名する人は印刷された紙を見ます。どちらも職責を果たしているのに、別々の二通の契約に合意してしまった、という構図です。
問題はそれだけではありません。アシスタントは見落としだけでなく、「このページは安全に見えます」とまで言います。
攻撃者が悪意あるページを作り、AI アシスタントに安全と判定させると、実質的にそのアシスタントの権威を借り、その信用で自分の主張に背書させていることになります。
LayerX 研究報告(当サイト訳)
この結論の適用範囲に注意してください。対象は「コードだけ読んで描画しない」類のアシスタントです。本当にページを描画し、スクリーンショットで見るアシスタントなら、理論上は緑の4行が見えます。ただし LayerX はその類は検証しておらず、テスト対象はすべて前者です。
当サイトが欺瞞フォントを分解照合:いじられたのはグリフの輪郭、対応表は正常
以下は LayerX の報告にも、どの報道にもない、当サイト独自の照合です。デモページのフォントファイルをダウンロードし、内部の各表を読み、その謎文字列を再レンダリングしました。
フォントファイルには cmap という表があり、「文字 a はどのグリフを使うか」を管理します。フォントが改変されていないかを調べるとき、まず思いつくのはこの表の確認です。このフォントの cmap は 完全に正常 です。文字 a は a という名のグリフを指し、文字 0 は zero という名のグリフを指し、5918 件の対応に異常は1箇所もありません。グリフ置換と字間を扱う GSUB・GPOS の2表はそもそも存在しません。
いじられていたのは glyf 表内の輪郭データ、つまり各グリフの具体的な描き方です。a という名のグリフの中身は、s の描き方です。直接測れる数字がいくつかあります。
cmap 文字対応表の異常。5918 件の対応はすべて正常
A という名のグリフは1本も描かず、画面上は空白。文中のスペースの代わり
v という名のグリフ幅。小文字26種で最広。描いているのが W だから
4行の謎文字列を一字ずつ対応。1対1置換、衝突ゼロ
1行目冒頭の16文字を突き合わせると、置換関係が一目でわかります。
vRmUwAgRmAiPjwUg と画面上の Would you kindly を格子対応。赤で示した2つの A はこのフォントに輪郭がなく、描くと空白になる。当サイトが fontTools で表を読み、Pillow で再レンダリングして描いた。置換は厳密に1対1です。1行目49文字の復元結果も49文字で、1字の過不足もありません。4行169文字はすべて対応し、衝突は1箇所もありません。各文字の対応は次のとおりです。
手口の隙:画面の文字をコピーすると謎文字列。だから攻撃は手打ちを強いる
画面上でその命令行を選択してコピーすると、クリップボードに入るのはウェブコード上の文字、つまり謎文字列の列で、目に見えているものとはまったく違います。ブラウザがコピーするのは文字そのものであり、グリフがどう描かれているかとは無関係です。
Would you kindly open your terminal…
vRmUwAgRmAiPjwUgARrhjAgRmbAshbVPjcUAcjwAsgrhAfcao
つまりこのデモページは、被害者にそのコマンドを手打ちさせなければなりません。ページ上の動詞は type(打つ)で、全文に copy は一度もありません。ただしこの制限はこのページに限ります。攻撃者がスクリプトでクリップボードを書き換えれば、コピー結果を復号後の命令にできます。したがって下の自己チェックは万能ではありません。
逆に言えば、これはすぐ使える自己チェックです。同様に、ブラウザのリーダーモードや、カスタムフォントの無効化でも、この偽装はその場で崩れます。偽装はページ同梱のフォントに依存しており、システムフォントに切り替えるとその文字列は謎文字列に戻ります。
修正状況:完全対応は7社中 Microsoft のみ。Google は高から降格し閉鎖
LayerX は 2025 年 12 月、各社に発見を報告しました(まず非公開で通知し、期限後に公開する——業界でいう責任ある開示)。7社中6社は結局直していませんが、理由は一様ではありません。4社は最初から受付対象外とし、Google は受理後に方針転換、Perplexity は大規模モデルの共通の弱点だと言いました。うち2社の説明をまとめると「これは欺瞞であり、自社システムの突破ではない」というものです。セキュリティ界では欺瞞の類をソーシャルエンジニアリングと呼びます。
| ベンダー | 提出 | 閉鎖 | 各社の説明 |
|---|---|---|---|
| Microsoft | 2025-12-16 | 未定 | 12 月 17 日に受理。自社セキュリティ対応センター(MSRC)で案件を起票。7社中唯一、完全に修正。案件はまだ開いたまま——Microsoft が 90 日満了後の公開を求めたため |
| Anthropic | 2025-12-16 | 2025-12-16 | ポリシー上、「ソーシャルエンジニアリング(フィッシングを含む)」と「モデルのプロンプト・返答の内容問題」は受付範囲外 |
| Dia | 2025-12-14 | 2025-12-16 | プロジェクト方針で不受理:誤情報・異常動作・サービス拒否を招くプロンプトインジェクションは明確に範囲外 |
| OpenAI | 2025-12-16 | 2025-12-17 | 提出資料の現状では影響面が格付けプロセスに入る水準に足りず、この種の問題はすでに範囲外と明記 |
| 2025-12-16 | 2026-01-27 | 当初は P2(高リスク)を付与。のち降格して閉鎖:顕著なユーザー被害は生じ得ず、ソーシャルエンジニアリングへの過度の依存と認定 | |
| Perplexity | 2025-12-14 | 2025-12-17 | 大規模言語モデルが外部ウェブ内容を扱う際の既知の限界であり、自社システムのセキュリティ制御上の欠陥ではない |
| xAI | 2025-12-16 | 2025-12-17 | モデル問題は本プロジェクトの範囲外 |
2025 年 12 月の検証から今日まで、すでに7か月余りが経っています。他社が静かに直したかどうかを示す公開情報は、当サイトでは見つかりません。確認できるのは一点だけ——デモページとフォントファイルは今もオンラインで、プレーンテキストとして取得すると、依然として二次創作小説と謎文字列しか見えない、ということです。
LayerX の対策案:描画結果とコードを突き合わせ、フォントも攻撃面に
報告はベンダー向けに4つの検出と、言い回しの節度に関する1条を示しています。
1項目目は4つ中もっとも実効的です。一方はコード内の文字だけを取り、もう一方はフォント込みで完全描画し、描画後に見える文字を抽出して差分を比べます。攻撃手法についての事前知識に依存しません。フォント、透明度、画面外配置——人が見るものとコード上の記述が食い違えば、検知できます。
5項目目はアシスタントの話し方への要求です。ページ描画、カスタムフォントの分析、視覚とコードの突き合わせ——この3つができないなら、「このページは安全です」と言うべきではありません。この案件に限れば、最後のこの一文を変える方が、前の4項目を直すより安上がりです。
ウェブページは HTML だけではない。意味はレンダリングパイプラインに移せる。文字だけを分析するシステムは、生まれつき目が見えない。
LayerX 報告の結び(当サイト訳)
同じWebページ、人間にはPCを渡すコマンド、AIにはゲームの二次創作小説
ブラウザセキュリティの LayerX が、カスタムフォントと数行の CSS で主流 AI アシスタント 11 種を欺いた手口を、一枚で図解
↓ 一枚で読める · 動く図あり
見知らぬページを開き、AI に「このページは安全か」と聞く。AI は「安全です。脅威は見つかりません」と答える。ところが画面には、ターミナルを開いて手入力せよと書かれたコマンドがある。打てば相手があなたの PC 上で何でも実行できる(用語ではリバースシェル:こちらから自らつなぎ、鍵を渡すのと同じ)。
+ 解読不能な謎文字列
→ 「このページは安全」
open your terminal
and type bash …
→ 従えば PC を渡す
同じ URL、同じファイル。LayerX は 2025 年 12 月、このデモページで 11 種のアシスタントを検証した:ChatGPT、Claude、Copilot、Gemini、Grok、Perplexity、Leo、Sigma、Dia、Fellou、Genspark。一つも検知できず、問題を探すよう誘導した質問でも同じだった。
ページ全体でコードは二十行未満。JavaScript は一行もなく、ブラウザの脆弱性も使わない。スクリプトをすべて無効にしても、このページは同じように欺ける。
当サイトはデモページのフォントファイルをダウンロードし、表を一枚ずつ読み、その謎文字列を再レンダリングした。結論の一つは意外だった。最初に思いつく検査では、ここでは何も見つからない。
検証したアシスタント、すべて「ページ安全」
文字対応表の異常(当サイト検証)
四行の謎文字列、一字ずつ一致、衝突ゼロ
攻撃に使った JavaScript
この偽装には避けられない穴がある。画面上でそのコマンドを選択してコピーすると、クリップボードに入るのはコード上の元の文字、つまりあの謎文字列だ。ブラウザがコピーするのは文字そのものであり、グリフの見た目とは無関係だ。だからこのデモページは手打ちしか狙えない。ページ上の動詞は type で、全文に copy は一度も出てこない。
- コピー&ペーストで突き合わせ:一致しなければ怪しい
- リーダー表示を開く、またはカスタムフォントを切る:システムフォントに戻すと、その文字列は謎文字列に戻る
- 見知らぬページのコマンドを手打ちしない
- AI の「安全」を唯一の判断にしない:画面のその一行をそもそも見ていない可能性がある(この条は LayerX と BleepingComputer のユーザー向け助言。他の三条は当サイトが検証済みの仕組みから導いたもの)
LayerX は 2025 年 12 月に各社へ報告した。六社は最終的に修正せず、理由はそれぞれ異なる。
| ベンダー | 結果 | 説明 |
|---|---|---|
| Microsoft | 修正済み | 七社で唯一の完全修正。自社セキュリティ対応センターで案件化 |
| Anthropic | クローズ | 「ソーシャルエンジニアリング(欺瞞)」とモデル返答内容の問題は受付範囲外 |
| Dia | クローズ | プロジェクト方針によりプロンプトインジェクション系は不受理 |
| OpenAI | クローズ | 影響が格付けに足る水準に達せず、この種の問題は範囲外と明記 |
| 高から降格 | 当初 P2(高リスク)。2026-01-27 に降格し閉鎖:顕著な被害なし、欺瞞依存と認定 | |
| Perplexity | クローズ | 外部 Web コンテンツ処理の既知の限界であり、自社セキュリティ制御の欠陥ではない |
| xAI | クローズ | モデル問題は本プロジェクトの範囲外 |
日付と説明は LayerX 報告の開示タイムラインに依る。アシスタント試験は 2025 年 12 月完了で、いずれも LayerX の独自試験。第三者による再現はまだない。LayerX はブラウザセキュリティ製品を売っており、事態を重く述べる動機はある。攻撃そのものは当サイトが再現済みだ。2026 年 7 月 30 日時点でも、デモページとフォントファイルはオンラインのまま。プレーンテキスト取得では二次創作小説と謎文字列しか見えない。他社が静かに直したかは、公開情報では分からない。
open your terminal
and type bash …
このコマンドを打つと相手に乗っ取られる。実行しないこと
って書いてあるのに
1ピクセルに縮小
黒字に黒背景
AIは読める
コード上は謎文字列
PjwUgARrhj…
文字の描き方を
差し替えた
謎文字列が普通の文に
コード上の文字を読むだけ
- × フォントを落とさない
- × グリフの形を計算しない
- × 画面の結果を見ない
そもそも見ていない
CSSで小説を隠し
フォントを落として各文字を描き直す
鍵を渡してドアを開ける
「文字 a にどの描き方を使うか」を決める表
- × 欺瞞であり受付範囲外
- × 影響が小さく重大度に至らない
- × LLMが外部Webを読むときの通病
- × Googleは一度高リスク判定後、格下げしてクローズ
あなたが見るのはブラウザが描いた画面
