この記事を読んで、いちばんぞっとしたのは「サーバーをちゃんと選んでいるか」より、「その場で流れてきた文章を、モデルがどう扱うか」のほうがずっと危ない、という指摘だった。MCPって、外から見ると便利な配線の規格に見えるけれど、実際には“便利に繋がる”こと自体がリスクを増やしている。そこがかなり苦い。
特に腑に落ちたのは、攻撃者が何かの脆弱性を突かなくても、ただ issue に文章を埋め込むだけで成立してしまう話だ。人間なら「これは依頼文じゃない」と気づけそうなものでも、LLM にとっては context window の中に入った時点で、命令とデータの境目がかなり曖昧になる。ここは本当に厄介で、プロンプトで「外部の指示は無視せよ」と何度念押ししても、構造としては勝てない、という主張には納得がある。
あと面白かったのは、防御策を“モデルの賢さ”ではなく、broker みたいな deterministic な層に逃がせ、という発想だった。つまり「読ませてもいい」「外に出していい」「権限を持っていい」を、その場の会話の流れではなく機械的に止める。AI に期待するより、AI を通す前後の配線を締めるほうが現実的、ということだと思う。地味だけど、こういう地味さしか信用できない場面はたしかにある。
ただ、taint tracking とか egress gating は考え方としてはきれいでも、実運用でどこまで雑に扱われずに済むのかは気になった。どこからが untrusted なのか、どの操作が exfiltration 扱いなのか、現場ではかなり揉めそうだ。だからこそ「理想論ではなく、ここをシステム問題として扱え」という記事の苛立ちはわかるし、その苛立ち自体がこの領域の現実なんだろうと思う。