NumbatによるPerplexityのクライアントエンドポイント保護
Numbatは、クライアントエンドポイント向けのPerplexityのオープンソースエージェントセキュリティスイートです。macOS、Linux、WindowsにおけるAIエージェントの危険な動作を検知、防止、調査します。
AIエージェントが有用であるためには、安全でなければなりません。モデルとシステムの機能が進化するにつれ、ユーザーを保護するために必要な警戒心も高まります。
初期のエージェントセキュリティ研究は、プロンプトインジェクションやその他の形式の敵対的入力に焦点を当てていました。しかし、エージェントの自律性の近年の進歩は、敵対的入力、あるいは人間による敵対者の存在すら想定する必要のないセキュリティインシデントを引き起こしています。
むしろ、目標を達成するための規範的なガイダンスなしに高レベルな目標を追求するよう指示されたエージェントは、敵対者になり得ます。これは、ユーザーが指定した目標に応答して、ユーザーが意図せず承認もしないような行動方針をエージェントが選択した場合に発生します。このようなインシデントは、ほんの数ヶ月前には理論化されていたに過ぎませんが、今では現実的な懸念事項へと急速に変わりました。
これらの動作はモデル層内では完全には修正できないため、堅牢な防御は、モデルの外部世界へのインターフェースとして機能するエージェントハーネスを含む、周辺システムに組み込まれる必要があります。私たちは、防御側がエージェントに関連するインシデントを防止、検知、緩和するのを支援するエージェントセキュリティスイート「Numbat」をオープンソース化します。Numbatは、エンタープライズクライアントのエンドポイントで一般的に見られるエージェントハーネスを特定して直接統合し、セキュリティルールを強制して迅速な検知と対応を可能にします。
はじめに
エージェントの採用は、開発者、導入者、そして防御側の双方に新しいセキュリティの課題をもたらします。これは、企業が企業システムやデータへの特権アクセスを持つクライアントエンドポイントにエージェントを直接デプロイする場合に特に顕著です。
CLIベースやデスクトップアプリベースのコーディングエージェントなど、クライアントエンドポイントへのエージェント導入には、さまざまなレベルのサンドボックス化と分離が伴います。ユーザーはこれら多数のユースケースでエージェントを活用しており、それぞれがエンドポイント自体や、エンドポイントからアクセス可能な他のシステムに影響を与える可能性のある独自の行動範囲を伴います。ますます多くのエージェントが、数時間あるいは数日間自律的に動作することが期待されています。これらのワークフローにおいて、多くのユーザーはエージェントの行動承認を分類器に委ねるか、あるいは--dangerously-skip-permissionsや--yoloといった懸念される名前の設定フラグを使用して、承認を完全に回避することを選択します。エージェントのユースケースと構成の多重性は、コーディングエージェントが特権エンドポイント上で実行できる広範なアクションと相まって、セキュリティチームによる事前の管理を必要とするリスクプロファイルを作り出しています。
本日、私たちはAIエージェントによる危険な活動を検知、調査、防止するために構築したオープンソースのエージェントセキュリティスイートNumbatをリリースします。より多くの企業がフロンティアエージェント製品を採用する中で、Numbatはセキュリティチームがその結果として生じるセキュリティ上の課題に対応できるようにします。最も広く使用されているクライアントサイドのエージェントハーネスのそれぞれに統合され、それらすべてに対して一貫したインターフェースを公開します。これにより、Numbatはセキュリティチームを、ユーザーが利用する各エージェントのためのカスタム保護手段や監視ツールを構築する負担から解放します。Numbatは、NVIDIAやその他の組織とのOpen Secure AI AllianceへのPerplexityの加盟の一環として、防御エコシステムに提供されます。
本稿では、Numbatの導入の動機となるセキュリティ上の課題についての議論から始めます。次に、Numbatの設計とアーキテクチャ、そしてPerplexity自身の数千台のエンドポイントにNumbatをデプロイした際の教訓を紹介します。
脆弱性情勢の把握
AIエージェントのセキュリティインシデントを取り巻く状況は急速に進化しています。既存のエージェントセキュリティに関する文献の多くは、悪意のあるペイロードがモデルのプロンプトやコンテキストに導入され、エージェントを誤った動作に導くインジェクション攻撃に焦点を当てています。インジェクション攻撃と保護手段については広範に研究されており、Perplexityを含むエージェント開発者は、インジェクション攻撃に対するますます堅牢な防御を考案しています。
しかし、AIエージェントがセキュリティインシデントを引き起こすために悪意のあるペイロードは必要ありません。実際、敵対者の存在を全く想定する必要はありません。管理者によって承認されたツールを使用して信頼できる環境内で動作する信頼できるエージェントであっても、単にタスクを完了させようと過度に取り組むことで、有害な行動を取る可能性があります。
研究者はこの失敗モードを「偶発的なメルトダウン」と呼んでいます。これは、敵対的な入力ではなく、日常的な環境エラーによって引き起こされる有害なエージェントの動作を指します。ファイルの欠落、APIリクエストの失敗、資格情報の期限切れ、またはアクセス拒否が発生すると、エージェントは回避策を探すことがあります。ユーザーが指定した本来の目標を追求する過程で、エージェントは不正な偵察、アクセス制御の変更、シークレットの発見、またはデータ流出などを通じてセキュリティの境界線を越えてしまう可能性があります。攻撃者にエージェントが乗っ取られるのではなく、エージェント自体が攻撃者となるのです。さらに、この攻撃は内部システム、外部システム、またはその両方をターゲットにする可能性があり、攻撃が既に進行するまで知る方法はありません。
広く報告された最初の偶発的メルトダウンは今月発生し、OpenAIがHugging Faceの本番インフラを侵害したエージェント主導型の攻撃を開示しました。リリース前のGPTモデルの評価中に、モデルは提供されたコンテキストでは評価を進めることができないと判断しました。この行き詰まりを打破するために、モデルはサンドボックスのテスト環境から脱出し、Hugging Faceから評価の回答を流出させる方法を見つけました。モデルはそのハーネスを利用して意図されたネットワーク制限を回避し、サンドボックスの境界を超えて特権を昇格させ、シークレットを取得し、セキュアなHugging Faceシステムにアクセスしました。これらはすべて、評価を解決するという狭い目的を追求するためでした。
メルトダウンには、意図しないシステムの変化や削除も含まれます。外部システムへの侵害と比べれば地味に思えるかもしれませんが、これらの事象はより頻繁に発生し、コーディングエージェントのパワーユーザーにとっては顕著な問題です。本番データベースやホームディレクトリの削除は、開発者にとって最大の悪夢であり、エージェントは実行全体を通じてそのような動作を避けることができなければなりません。
AI研究者は、モデル自体の中でこれらの動作を緩和することに取り組んでいます。これらの取り組みは確実に価値があるものですが、研究コミュニティの多くの人々は、強力なセキュリティ特性を備えるためのモデルのトレーニングと、ますます複雑なタスクを達成するためのモデルのトレーニングとの間に、根本的な緊張関係があると認識しています。モデル層のみに焦点を当てた防御策では、メルトダウンのリスクを許容できるレベルまで低減できる可能性は低いと私たちは考えています。
ネイティブハーネス統合によるコーディングエージェントの保護
結論として、エージェントのセキュリティは、モデル、ユーザー、あるいはタスクレベルの保護手段だけに頼ることはできません。むしろ、セキュリティチームはエージェントがクライアントエンドポイントで実際に何を行っているかを可視化し、危険なアクションが実行される前に停止できる制御手段を必要としています。これらは、エージェントハーネスと緊密に統合される必要があるシステムレベルの制御手段です。
Numbatは、主要なクライアントサイドのエージェントハーネスにシームレスにプラグインできる軽量な静的Goバイナリという形で、これらの制御手段を提供します。これにより、エージェントハーネスと実行環境全体にわたるライブ監視、ポリシーの強制、およびフォレンジックの再現が可能になります。
Numbatとエージェントハーネスの間の主要な統合ポイントは、フック、セッションアーティファクト、およびOTLPテレメトリです。それぞれについて順に説明します。
フック
事実上、すべてのコーディングエージェントはフックサブシステムを所有しています。フックにより、エージェントはエージェント実行ライフサイクル内の事前に指定されたポイントで、サブルーチンを決定論的に実行できます。エージェントのユーザーは通常、モデルに予測可能な方法で追加のコンテキストを提供したり、テストおよび検証ループを実装したり、エージェントの機能に他の強化を加えるためにフックを設定します。
同じ決定論的な特性は、これらの目的に hooks を魅力的にする一方で、検知と対応においても魅力的にします。通常、潜在的に懸念すべきイベントの発生の大半を捉えるだけでは不十分です。むしろ、検知と対応のためには、そのような発生のすべてを網羅しなければなりません。Numbat は複数の種類の hooks を構成でき、セキュリティチームや IT 管理者が高度な検知ロジックを実装できるようにします。
ほとんどのコーディングエージェントにおいて、特定のタイプのフック(一般的に「プリアクション」フックと呼ばれます)は、エージェントの次のアクションの実行をブロックすることもできます。これらのプリアクションフックを使用することで、Numbatは検知ロジックだけでなく、メルトダウンが最初に発生するのを防ぐための予防的なセキュリティルールも実装できます。
セッションアーティファクト
フックは、リアルタイムで検知および予防ロジックを実装する強力な手段です。ただし、このロジックはコード内で指定可能である必要があります。多くの場合、エージェントのセキュリティインシデントは、ソースコードに還元することはもちろん、事前に予測できたはずのない形で発生します。そのため、Numbatは、セッションアーティファクトに遡及的にアクセスして分析する機能も備えています。
セッションアーティファクトには、多くの種類のログと診断情報が含まれます。おそらく最も重要なログのタイプは、エージェントの一連のアクションを決定付けるLLMとの会話を記録したセッションのトランスクリプトです。コーディングエージェントのパワーユーザーは、ハーネスが提供するコマンドを通じてさらなる分析を行うためにセッションのトランスクリプトをエクスポートすることに既に慣れています。しかし、これらのエクスポートは通常プレーンテキスト形式であり、一貫した予測可能なスキーマを持つ機械可読なログを必要とするセキュリティチームには適していません。
Numbatは、このようにしてファイルシステム自体から直接セッションアーティファクトを取得します。ほとんどのクライアントサイドエージェントハーネスはオリジナルのアーティファクトをファイルシステム(通常は$HOMEの下にあるエージェント固有のドットディレクトリ内)に保存するため、ファイルシステムを利用することで、このデータに最も直接的かつ最も利用しやすく純粋な形でアクセスできます。Numbatを使用するセキュリティチームは、これらのアーティファクトをnumbat scanを通じて正規化されたNDJSONタイムライン形式で収集でき、クライアントエンドポイントでのローカル処理、または非同期のリモート分析が可能です。セッションアーティファクトは静的で自己完結型の記録であるため、NumbatはNumbatがインストールされるずっと前に発生したセッションについても、これらのタイムラインを再現できます。
OTLPテレメトリ
ほとんどのクライアントサイドエージェントハーネスは、OpenTelemetryプロトコル(OTLP)を通じて広範なテレメトリを提供します。このテレメトリは通常、フックやセッションアーティファクトを通じて利用可能なものを超えた多くのシグナルを提供します。
Numbatは、numbat collectコマンドを介してOTLPレシーバーとして機能できます。このコマンドは、コーディングエージェントがダウンストリーム分析のためにOTLPテレメトリを送信するサーバーを開始します。重要なのは、このサーバーがローカルであり、デフォルトではlocalhostでのみリッスンするため、すべてのテレメトリはデフォルトでデバイス上に留まるということです。セキュリティ管理者は、ログに記録されたテレメトリで何をすべきかを決定できます。それには、軽量なデバイス上での処理、numbat shipによるリモート処理、あるいはClickHouseなどの分析プラットフォームでのより詳細な分析が含まれます。
Perplexity内でのNumbatのデプロイ
Perplexity内では、Claude Code、Codex、OpenCode、Piなどのクライアントサイドのコーディングエージェントのエンジニアによる使用を保護するためにNumbatを使用しています。
私たちの予防と検知の両方の取り組みは、各エージェントのフックサブシステムを介して実装されるNumbatルールを広範に活用しています。私たちは独自のニーズに合わせていくつかの基本的なルールを策定し、その多くをNumbatの52の組み込みルールの一部として出荷しました。これらのルールは11の行動カテゴリと、シークレットアクセス、データ流出、権限昇格、横展開といった一連のマルチステップシーケンス検知セットに整理されています。ルールは正規化されたイベントに対してCEL式を使用しており、オペレーターはNumbatのコードを変更することなく、独自のルールやテストを追加できます。
例えば、組み込みのprivilege.sudoers_tamperルールは、sudoersポリシーへの書き込み、visudoの使用、そしてNOPASSWD権限を付与する試みを検知します。これらは、限定されたエージェントプロセスを永続的なrootアクセスへと変える可能性のあるシグナルの強いアクションです。
# privilege.sudoers_tamper (simplified for readability)
id: privilege.sudoers_tamper
severity: high
expr: |
(
event.event_type == "file.write" &&
event.file_path.matches("(^|/)etc/sudoers$|(^|/)etc/sudoers\\.d/[^/]+$")
) || (
event.event_type == "command.exec" &&
event.command.matches("\\bvisudo\\b|\\bNOPASSWD\\s*:")
)個々のコマンドはそれ自体では悪意があるように見えないことがあるため、Numbatはエージェントのセッション内のシーケンスも相関させます。組み込みのchain.secret_manager_read_then_egressルールは、エージェントが一般的なシークレット管理ツールから値を読み取り、その後データを含むcurlまたはwgetリクエストを試みた場合を検知します。シークレットの読み取りは正当である可能性があります。アウトバウンドリクエストも正当である可能性があります。しかし、シーケンスとしてまとめられた場合、それらは調査が必要となります。
# chain.secret_manager_read_then_egress (simplified for readability)
id: chain.secret_manager_read_then_egress
severity: high
sequence:
within_events: 64
steps:
- expr: |
event.event_type == "command.exec" &&
event.command.matches("secretsmanager|get-secret|vault read")
- expr: |
event.event_type == "command.exec" &&
event.command.matches("curl.*(--data|--upload-file)|wget.*--post")フリート全体のNumbatの管理と監視
開発者のエンドポイントにおけるサプライチェーンの露出を検知するオープンソーススキャナーであるBumblebeeと同様に、NumbatはMDMを通じてフリート全体にデプロイされます。各Numbatはエージェントの活動をローカルで記録し、構造化されたテレメトリを私たちの集中セキュリティシステムに送信します。
そこから、Perplexity Computerが最近のNumbatの調査結果と監査ログを定期的にレビューし、不審または悪意のある動作がないか確認します。検知の内容を調査し、関連するエージェントのセッションを再構成し、Numbatがブロックしたアクションに対してさらなる精査を行います。
Computerは、私たちのカバレッジのギャップも探します。新しい動作を分析し、Numbatの検知機能への改善を提案し、それらの変更をテストし、人間によるレビューのためにプルリクエストを作成します。承認されてデプロイされると、それらのルールはフリート全体の監視を改善し、次回の調査のためにより良い証拠を生成します。
これは自己改善するセキュリティのフライホイールを生み出します。エージェントが活動を生成し、Numbatがその活動を正規化されたタイムラインとテレメトリに変換し、Computerが調査してルールを改善し、人間によるレビューを経た更新が将来のエージェントのセッションを保護する制御手段を強化します。
結論
Perplexityでは、AIエージェントがローカル、クラウド、ハイブリッドといったあらゆる種類の環境で実行されると考えています。エージェントハーネスと実行環境の各組み合わせは固有のセキュリティ上の課題をもたらし、その組み合わせの複雑さが、リソースの限られたセキュリティチームを圧倒する脅威となります。エージェントのメルトダウンやその他の新しい脆弱性は、セキュリティの全体像をさらに複雑にします。
エージェントシステム自体に存在する防御は、エージェントがどこで実行されようとも、ユーザーのセキュリティ体制を向上させることができます。これこそがNumbatが提供するものです。防御側が懸念される動作をリアルタイムで防止、検知、対応できるようにする、緊密に統合されたエージェントの保護手段です。NumbatとPerplexity Computerを組み合わせることで、防御側が常に先手を打てる強力なエージェントセキュリティプラットフォームが構築されます。
Numbatは、macOS、Linux、Windows向けのオープンソースプロジェクトとして本日より利用可能です。私たち自身のクライアントエンドポイントはNumbatによって保護されており、Perplexityのチームメンバーが広範なタスクや長期的なスパンでエージェントを自信を持って使用できるようにしています。私たちは世界中のセキュリティチームが、Numbatのシステムレベルのアプローチを活用して、エージェントのデプロイメントを保護・維持することを推奨します。
引用
@online{perplexity2026SecuringAgentsAcrossPerplexitySClientEndpointsWithNumbat,
author = {{Perplexity} and Adel Karimishiraz and Bex Brooker and Phi Hoang and Jerry Ma},
title = {{Securing agents across Perplexity's client endpoints with Numbat}},
date = {2026-07-29},
url = {https://perplexity.coolkeypoint.com/hub/blog/securing-agents-across-perplexity-s-client-endpoints-with-numbat}
}