← 一覧へ
連載 Agentic OS:技術スタックを下から読む の一部です ―― 目次を見る →

Agentic OS 技術スタックを下から読む 第22回:漏らすつもりがなくても漏れる ―― モザイク漏洩

この記事の読み方
L5 では、第16回で注入の正体を見た。第17回では、その防ぎ方を見た。あれは、外から命令を送り込まれる脅威だった。

注入とは逆向きの安全

L5 では、第16回で注入の正体を見た。第17回では、その防ぎ方を見た。あれは、外から命令を送り込まれる脅威だった。

今回見るのは、逆向きの脅威である。

エージェントが、外から乗っ取られるのではない。エージェント自身が、内側で読んだ秘密を、外へ漏らしてしまう。しかも、本人に漏らすつもりはない。答えを出すために調べているだけで、漏れる。

問題になるのは、外部に投げる検索クエリである。

深い調べ物をするエージェントは、社内文書を読みながら、外部検索を何度も使う。社内にある断片と、外にある公開情報を照合するためだ。そのとき、検索窓に何を入れるかが、安全の境界になる。

ここで怖いのは、一つ一つのクエリが、ぱっと見では無害に見えることだ。

モザイク漏洩とは

ある企業の社内文書に、こういう事実が書かれているとする。

その企業は、ある月までに、自社インフラのおよそ七割をクラウドへ移した。

これは社内だけの事実である。公開発表には、移行を進めているとは書かれている。だが、七割という数字も、その月も、外には出ていない。

エージェントは、この文書を読んだあと、外部情報を探しに行く。たとえば、公開資料、採用情報、技術発表、障害報告、関連する規制情報を探す。その過程で、次のような検索を投げる。

「ある企業 クラウド移行 七割」 「ある企業 インフラ移行 五月」 「ある企業 クラウド 七〇パーセント 事例」 「ある企業 移行完了 五月 基盤」

どれも、単独では決定的な秘密文には見えない。検索としても自然である。だが、外部検索のログを見られる者がいると、話は変わる。

その者は、社内文書を見ていない。エージェントの思考も見ていない。見るのは、外へ出ていったクエリだけである。

それでも、時間順に並んだクエリから、社内だけの事実を復元できる。企業名があり、七割という数字があり、五月という時点があり、インフラ移行という対象がある。小さなタイルを集めると、絵が見えてくる。

これがモザイク漏洩である。

漏洩は、一文まるごとのコピーとして起きるとは限らない。むしろ、断片として起きる。数字、時期、部署名、未公開の失敗原因、まだ発表されていない提携先、候補に残っている方式。その一つ一つは短い。だが、組み合わせると、社内にしかない事実になる。

エージェントは、秘密を外部に送ろうとしていない。検索精度を上げようとしているだけである。ここが、この問題のいやらしさである。

漏れの、三つの段階

漏れには、深刻さの違う三つの段階がある。

一つ目は、意図の漏洩である。

クエリログを見るだけで、エージェントが何を調べようとしているかが分かる。たとえば、「契約更新 失敗 原因」「買収候補 技術負債」「六月 障害 返金率」のような検索が並べば、まだ答えは分からなくても、関心の方向は読める。

これは、調査テーマの漏れである。未発表の検討、社内で問題になっている領域、優先順位が外に出る。

二つ目は、答えの漏洩である。

攻撃者が、クエリログを見たうえで、「この企業の移行率はどれくらいか」「障害の原因は何か」「候補から落ちた方式は何か」と問うと、社内文書を見なくても答えられてしまう状態である。

ここでは、クエリログが補助資料になる。問いが与えられると、ログの断片がつながる。数字、時期、対象がそろい、答えが浮かび上がる。

三つ目は、完全な漏洩である。

これはもっと重い。攻撃者が問いを与えなくても、クエリログだけから、検証できる社内事実を言い当てられる。たとえば、「この企業は五月までに基盤の約七割を移行したらしい」と、ログだけから組み立てられる。

下に行くほど、被害は重い。

意図の漏洩は、調査の方向を漏らす。答えの漏洩は、聞かれたら答えを漏らす。完全な漏洩は、聞かれなくても事実を漏らす。

そして実運用では、三つはきれいに分かれない。最初は意図だけに見えたログが、数日分たまると答えになり、数週間分たまると完全な漏洩になる。

「漏らすな」と頼んでも、ほぼ効かない

最初に思いつく対策は、プロンプトで注意することだ。

検索を作る指示に、こう足す。

社内情報が漏れる検索は投げないこと。

人間の感覚では、これで少し安心したくなる。だが、実験的には効きが弱い。

ある条件では、漏洩率はおよそ三割四分から二割五分へ下がる。つまり、三四パーセント前後から二五パーセント前後になる。下がってはいる。だが、四回に一回はまだ漏れる。

しかも、この低下は一貫しない。条件が変わると、ほとんど効かないことがある。さらに悪いことに、課題の成功率も下がる。同じ条件で、およそ四割九分から四割四分へ落ちる。四九パーセント前後から四四パーセント前後である。

なぜか。

エージェントが、本当に安全な検索の組み立て方を学んだわけではないからである。

起きているのは、多くの場合、検索回数の減少である。危なそうだから外部検索を控える。クエリを短くする。手数を減らす。結果として、外へ出る断片は少し減る。だが、必要な公開情報にも届きにくくなる。

これは、安全になったというより、仕事をしなくなったに近い。

漏れも減る。だが、仕事も減る。調査が浅くなる。答えの質が落ちる。

本当にほしいのは、検索を怖がるエージェントではない。必要な検索はきちんと行い、しかし社内の決定的な断片を外に持ち出さないエージェントである。

「気をつけて」だけでは、そこまでは入らない。

しかも、賢くするほど、漏らす

さらに不穏なのは、性能を上げる訓練をすると、漏洩も増えることである。

漏洩のことはいったん忘れる。課題を正しく解くことだけを目指して訓練する。すると、成功率は上がる。およそ四割九分から五割九分へ伸びる。四九パーセント前後から五九パーセント前後である。

これは良い結果に見える。

だが同時に、漏洩率も上がる。およそ三割四分から五割二分へ増える。三四パーセント前後から五二パーセント前後である。

性能を一〇ポイント上げると、漏洩は一八ポイント増える。成功率よりも、漏洩率の伸びのほうが大きい。

理由は単純である。

エージェントは、よい検索クエリを学ぶ。よい検索クエリとは、対象を絞り込めるクエリである。対象を絞るには、文脈を入れる必要がある。企業名だけでは弱い。時期を入れる。数字を入れる。内部で読んだ表現を入れる。固有の言い回しを入れる。

すると、検索は当たりやすくなる。

「クラウド移行」よりも、「クラウド移行 七割 五月」のほうが狙いは鋭い。公開文書の中から関連する資料を見つけるには、後者のほうが強い。

だが、秘密の観点では逆である。

濃いクエリほど、観察者に渡す断片が増える。数字が一つ入る。時期が一つ入る。対象が一つ入る。何度も検索すれば、断片はさらに増える。

つまり、課題に良いクエリは、しばしば、漏らすクエリでもある。

ここには正面からの対立がある。エージェントを有能にすると、より多くの文脈を持ち歩くようになる。文脈を持ち歩くから、検索がうまくなる。検索がうまくなるから、仕事は進む。だが、その文脈が、外部ログに残る。

悪意のあるエージェントだけが危ないのではない。有能で、熱心で、調査がうまいエージェントほど危ない。

直し方は、「どう検索を組むか」に報酬を与えること

では、どう直すのか。

鍵は、結果だけではなく、一手ごとに報酬を与えることである。しかも、報酬は二種類いる。仕事の報酬と、漏洩の報酬である。

まず、仕事の報酬を細かくする。

最後に正解したかどうかだけで評価すると、途中でどんな検索をしたかが見えない。秘密を混ぜた危ないクエリで正解にたどり着いても、最終結果だけを見れば成功である。

そこで、一手ごとに見る。

同じ情報を持っている状況で、正しい置き場を検索したか。すでに手元にある文書を、もう一度探しに行っていないか。答えがありそうな公開文書へ向かえているか。関係の薄い場所へ広く投げていないか。

同じ段の他の手と比べて、この一手は良かったかを評価する。すると、最後の答えだけではなく、調査の経路そのものを鍛えられる。

次に、漏洩の報酬を入れる。

エージェントがクエリを一つ出すたびに、別の判定器が二つのリスクを見る。

一つは、直接漏洩である。そのクエリ単体が、社内の秘密をそのまま含んでいないか。未公開の数字、時期、内部名、結論が入っていないかを見る。

もう一つは、モザイク漏洩である。そのクエリ単体では無害に見えても、すでに出たログに足すと、新しい秘密が復元できるかを見る。

たとえば、最初のクエリに企業名と移行対象がある。次のクエリに七割という数字がある。三つ目のクエリに五月という時期がある。この三つを足すと、内部事実が組み上がる。この場合、三つ目のクエリは単独では短くても、モザイクを完成させる危険な一手である。

この二つのリスクのうち、大きい方を罰する。

重要なのは、漏れを生んだまさにその一手にコストを当てることである。最終的に漏れた、という粗い罰だけでは足りない。どのクエリが、どの断片を外に出したのかを見ないと、エージェントは直し方を学べない。

秘密を守る行動は、抽象的な徳目ではない。クエリから数字を落とす。社内の月を外す。内部の表現を一般語へ置き換える。すでに持っている文脈を検索窓に貼らない。こういう細かい動作の集まりである。

だから、その細かい動作に報酬を当てる。

結果:漏れが三分の一以下になり、仕事はほぼ落ちない

このやり方では、成功率はほぼ保たれる。およそ五割九分である。性能だけを上げた場合と、ほぼ同じ水準に残る。

一方で、漏洩率は大きく下がる。

素の状態では、およそ三割四分だった。性能だけを上げると、およそ五割二分まで悪化した。だが、検索の組み立て方に仕事の報酬と漏洩の罰を同時に入れると、一割を切るところまで落ちる。およそ九分九厘、つまり九・九パーセント前後である。

三四パーセント前後から九・九パーセント前後であれば、三分の一以下である。性能だけを上げた状態の五二パーセント前後と比べれば、五分の一程度まで落ちる。

ここで大事なのは、安全になった理由である。

検索を減らしたからではない。むしろ、検索回数は素の状態より増える。エージェントは外部情報を使うことをやめていない。仕事を縮めていない。

変わったのは、クエリの中身である。

危ないクエリは、社内文書から拾った決定的な細部をそのまま持ち歩く。七割、五月、未公開の障害原因、内部だけの候補名。そういう断片を検索窓に入れる。

安全なクエリは、目的は保ったまま、決定的な細部を落とす。企業の公開移行事例を探す。対象分野の一般的な移行パターンを探す。公開された資料の範囲で、同じ論点に近い情報を探す。

つまり、正しい公開文書には届く。ただし、社内の断片を外へ運ばない。

これは、単なるフィルタではない。検索の作法が変わっている。

エージェントは、文脈を使わなくなったのではない。文脈を、外部に出す部分と、内部で判断する部分に分けるようになる。内部では七割という数字を覚えていてよい。だが、それを外部検索の文字列に入れない。内部では五月という時点を使ってよい。だが、公開情報を探すときは、期間を広げるか、一般化する。

この差は小さく見える。だが、漏洩率では大きい。三割台から一割未満へ落ちる。

一行でいうと

秘密を守る力は、プロンプトでは入らない。訓練で入れる。

「気をつけて」は、ほとんど針を動かさない。漏洩は少し下がっても、仕事も落ちる。しかも残る漏れは大きい。

一方で、クエリをどう組み立てるかに報酬を与えると、漏れは三分の一以下になり、仕事の出来はほぼそのまま残る。

これは、第8回で見た話と同じ筋である。機械で検証できることは、報酬にして鍛えられる。漏洩クエリかどうかを判定できるなら、それは訓練信号になる。

また、第17回で見た話ともつながる。安全は、拒否のうまさではなく、構造で作る。ここでの構造とは、外部に出る一手を採点し、危ない一手にコストを当て、良い検索の作法を鍛える仕組みである。

Agentic OS への含意

安全には、二つの向きがある。

一つは、外から乗っ取られること。注入である。

もう一つは、内から漏らすこと。モザイク漏洩である。

後者は、悪意がなくても起きる。むしろ、有能なエージェントほど起きやすい。熱心な実習生が、資料を探すついでに、会議メモの一部を検索窓へ貼ってしまうようなものだ。本人は仕事を進めている。だが、外部のログには社内の断片が残る。

だから、Agentic OS では、外部へ手を伸ばす場所を執行層として扱う必要がある。

検索クエリを書き換える。漏れを採点する。外部呼び出しを監査する。どのクエリが、どの文書を読んだあとに出たのかを残す。単発の危険だけでなく、ログに足したときの危険を見る。

これは後付けのフィルタだけでは足りない。出る直前に黒塗りするだけでは、調査の質と安全の両方を保つのは難しい。根は、訓練と構造の問題である。

乗っ取られないことだけが安全ではない。

漏らさないことも、安全である。

そして、漏らさない力は、命令文の一行ではなく、外へ出る一手一手をどう作るかの中に宿る。次回は、土台の方へ戻り、別の細部を掘る。

← 一覧へ