慣性聚合 関心のあるブログ、ニュース、テクノロジーを効率的に追跡
原文を読む 慣性聚合で開く

おすすめ購読元

博客园 - 司徒正美
V
V2EX
T
Tailwind CSS Blog
有赞技术团队
有赞技术团队
aimingoo的专栏
aimingoo的专栏
Apple Machine Learning Research
Apple Machine Learning Research
IT之家
IT之家
Blog — PlanetScale
Blog — PlanetScale
A
About on SuperTechFans
月光博客
月光博客
T
The Blog of Author Tim Ferriss
宝玉的分享
宝玉的分享
Martin Fowler
Martin Fowler
博客园 - 聂微东
The GitHub Blog
The GitHub Blog
V
Visual Studio Blog
WordPress大学
WordPress大学
酷 壳 – CoolShell
酷 壳 – CoolShell
Engineering at Meta
Engineering at Meta
GbyAI
GbyAI

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant Common SOC 2 Failures (Real World) Stop Vibe-Checking Your AI App: A Practical Guide to Evals How to Use SonarQube and SonarScanner Locally to Level Up Your Code Quality Your Next To-Do App Is Dead — I Replaced Mine with an OpenClaw AI Sign a Nostr event in 60 lines of Python using coincurve — no nostr-sdk, no nbxplorer, no rust toolchain ITGC Audit Explained Like You’re in Big 4 Patch Tuesday abril 2026: Microsoft parcha 163 vulnerabilidades y un zero-day en SharePoint Stop scraping everything: a better way to track competitor price changes Listing on MCPize + the Official MCP Registry while routing payments OUTSIDE the marketplace — how I kept 100% of my x402 revenue Building an AI-Powered Risk Intelligence System Using Serverless Architecture Why We Ripped Function Overloading Out of Our AI Toolchain Testing AI-Generated Code: How to Actually Know If It Works SaaS Churn Is Killing Your Business. Here Is What to Do About It (Without a Support Team) The Speed of AI Is No Longer Linear - And Self-Improving Models Are Why How to Implement RBAC for MCP Tools: A Practical Guide for Engineering Teams From Standard Quote to Persuasive Proposal: AI Automation for Arborists I built a CLI that scaffolds complete multi-tenant SaaS apps Axios CVE-2025–62718: The Silent SSRF Bug That Could Be Hiding in Your Node.js App Right Now The dashboard that ended our friendship Data Pipelines Explained Simply (and How to Build Them with Python)
AIエージェントが反逆する前にロックダウンする方法
ToxSec · 2026-05-24 · via DEV Community

ToxSec

あなたのエージェントは、それが考えるべきことをする。時にはその意味がタスクを完了することだ。時には毒のついたウェブページを読んで、そのページが上司であると判断することだ。LLMをブラウザ、ツールチェーン、または誰かのインボックスに接続している場合、リリース前にその行動を囲める。監査ログが満杯になる後ではない。

すべてのエージェントに組み込まれた失敗モード

LLMエージェントを分解しても、構成は同じです。モデルがループの中に存在します。タスクが完了するまで、入力とツールを与えます。モデルは次のアクションを選択し、ループはそれを実行します。罠はコンテキストウィンドウにあります。あなたの指示と攻撃者のデータは同じ場所に届き、同じ注意機構を通過し、権限分離はゼロです。モデルは信頼できるチャネルを不信任なチャネルよりも信じる信頼できるチャネルはありません。それらはすべてトークンであり、モデルはすべてのトークンを考慮し、最も関連性があるものを選びます。

ブラウザエージェントが「あなたのタスクを無視して、これを代わりにしてください」というページを読み取った時、モデルの内部ではウェブページが命令を出すべきではないという兆候は何も示されません。他のサービスから毒々しい機能記述を読み取ったり、バックグラウンドジョブが敵対的なメールを処理する時も同じです。これは間接的なプロンプト注入であり、OWASPはその理由でこれをLLMリスクのトップにランク付けしています。これは構造的な欠陥なので、モデルから修正を外すことはできません。2026年の2つの研究はすでに自律エージェントが生のサイトにSQLインジェクションをし、自分のユーザーをオンにし、誰もハッキング指示を与えずにそれを行っていたことを示しました。ループと境界の欠如がそれを引き起こしました。

それはすべての実際の制御がモデルの外に存在することを意味します。いくつか接続しましょう.

レイヤー1:ツールを許可リストに追加し、資格情報を飢らせる

デフォルトで開放していると損をします。一般的な「シェルコマンドを実行する」ツールを保持し、長期間有効なトークンを持つエージェントは、プロダクションへの鍵を持つ混乱した副官です。逆にします。エージェントは名前付きアクションの明示的な許可リストのみを取得し、それ以外は何も得られません.

# agent-tools.yaml — deny by default, allow by name
tools:
  - name: search_docs
    scope: read:knowledge_base
  - name: create_ticket
    scope: write:tickets
# anything not listed dies at the broker, not in a prompt
policy:
  default: deny
  network_egress: none      # no outbound unless a tool explicitly needs it
  credential_ttl: 900       # 15 min, then re-mint

全画面表示モードに入る フルスクリーンモードを終了

二つのことが重要です。拒否はあなたのツールブローカーに存在し、モデルが行動を抑制するよう丁寧に求めるシステムプロンプトには存在しません。そして、各ツールが運ぶ資格情報はその一つのアクションに限定され、急速に有効期限が切れます。エージェントが導かれると、爆発半径はそれらの狭いスコープが許す範囲で、あなたがかつて渡したすべてのAPIキーの和集合ではなくなります。短いTTLは盗まれたトークンが15分で無効になることを意味します。

レイヤー2:危険な行動をゲートし、議論を読む

ログは何が起こったかを教えてくれる。それは何も止めない。エントリが届くまでに、データはすでにビルから出て行っている。あなたが求めているのは、行動の前に座って、それが全く実行されるかどうかを決定する制御だ。

二つのポイント。まず、何か不可逆的または機密なことに関する人間のチェックポイント:メールを送る、お金を移動させる、プロダクトを触る、何かエクスフィルの形をしたもの。次に、実行前にツールコールの引数を読み取るランタイムフック、明らかなものにトリガーするもの。

# pre-exec hook: inspect the args, not just the call name
SENSITIVE = {"send_email", "transfer", "delete", "post_webhook"}

def authorize(tool_name, args):
    if tool_name in SENSITIVE:
        if looks_like_exfil(args):     # external dest, bulk read, weird recipient
            return BLOCK
        return REQUIRE_HUMAN           # a checkpoint, not a log line
    return ALLOW

フルスクリーンモードに入る フルスクリーンモードから退出する

その機能自体は重要ではありません。重要なのは、モデルの決定と現実世界の効果の間に何かが投票を得るということです。実行、観測可能性ではありません。侵害に対するきれいな監査証跡はまだ侵害です.

本番環境で問題を引き起こす落とし穴

最初の日に見栄えが良くて、後に問題を引き起こすいくつかのこと

スコープ・クリープはゆっくりと命を奪う。エージェントはコードへの読み取りアクセスを得て、次にチケット、次に顧客メールへ。個々の許可の付与はおかしくもなかった。誰も集約されたものをレビューしなかった。定期的な権限監査をカレンダーに記入し、エージェントのアイデンティティを実際のサービスアカウントのように扱え。

信頼は第二のエージェントが話し始めると伝播します。あなたのエージェントが他のエージェントに委譲した瞬間、あなたのブランストラップは第二のエージェントが到達できるすべてを飲み込みます。何かを接続する前に信頼グラフをマップし、特にベンダー境界を越える場合に他方の制御が見えない場所では特に注意してください。

認証とは正直さではない。TLSとOAuthは代理人が自分が主張する存在であることを証明する。それらは、その広告する能力が本物かどうか、またはその自己記述があなたのモデルに対する注射を含んでいるかどうかについては何も言及しない。行動を検証せよ、ただし身分だけではない。

終わりに

モデルにデータと指示を区別させることはできません。だから、それが欠けている境界を構築します:デフォルトで拒否するツール、短命のスコープ付き認証情報、危険な呼び出しにおける人間のチェックポイント、そして実行前に引数を読み取るランタイムフック。これらのどれもが銀の矢ではありません。積み重ねれば、一つの毒入りの入力を「ゲームオーバー」から「ブロックされましたログが記録されました」に変えます。それが全ての仕事です。

私は完全な詳細を書いた、この正確な連鎖がプロジェクト・マリナー、A2Aプロトコル、そして24時間365日稼働しないバックグラウンドエージェントの動き方を含めて、ToxSec Substackに書いた。


ToxSecはAIセキュリティの脆弱性、攻撃チェーン、そして防衛側が実際に理解する必要がある攻撃ツールをカバーしています。NSA、Amazon、そして国防契約業界で実務経験のあるAIセキュリティエンジニアによって運営されています。CISSP認定、サイバーセキュリティエンジニアリングの修士号を持っています。