コンテンツへスキップ
Guide

クロード コードのリバース エンジニアリング: AI エージェントのための 6 つのレッスン

| 8 min read

研究者らは、Claude Code の CLI バンドルを縮小解除し、そのシステム プロンプト、ツール スキーマ、およびエージェント ループを公開しました。 AI エージェントを実際のユーザーに出荷する人のための 6 つのレッスン。

Monitor showing source code, representing bundle inspection and reverse engineering
Photo by Markus Spiske on Unsplash

クロード コードは npm パッケージとして出荷されます。 誰でも走れます npm install -g @anthropic-ai/claude-code、 同梱されているものを開く cli.mjs、出荷されたオーケストレーション層を読み取ります。 研究者たちはやった まさにそれ。 彼らはそれを解凍し、完全なシステム プロンプト、15 以上の組み込みツール スキーマを取り出しました。 エージェント ループとサブエージェント ディスパッチャを使用して、ロットをパブリック リポジトリに公開しました。

モデルの重みは Anthropic の API よりも遅れていました。 足場はそうではありませんでした。 そしてその足場は、 ほとんどのチームが、CLI、VS Code 拡張機能、またはデスクトップを出荷すれば非公開にできると考えている部分 エージェントが組み込まれたアプリ。 抽出は無料のレッスンです: Anthropic の非常に慎重なチームはすでに そのために計画されており、そのデザインは有効です。 自分のエージェントの前にコピーできる 6 つの事項を次に示します npm または GitHub リリースにヒットします。

1. クライアント側のコードは公開ステップであり、秘密ではありません

出荷されたバンドル内のすべてのバイトは公開されます。 難読化により、読み取りが数分から数時間遅くなります。 それ 彼らを止めません。 Claude Code のバンドルは標準の JavaScript minifier を通じて実行され、最初の 難読化が解除された公開コピーは数時間で公開されました。 バンドルも同じ道をたどります。

今すぐ独自のパッケージで同じパスを実行してください。 CLI、ブラウザ拡張機能、Electron を出荷する場合 アプリ、またはクライアント側 SDK の場合は、次のリリース前にこれを実行してください。

戻ってきたものはすべて、今すぐ回転するパイルに入れられます。 クライアント バンドルの API キーは、 実行されたすべてのディスク npm install。 ハードコーディングされたバックエンド ホスト名は、攻撃者に次の場所を指し示します。 宣伝するつもりはなかったターゲット。 見知らぬ人がファイルを読むのと同じようにファイルを読んでください。

2. システム プロンプトが漏洩するため、開示できるように設計する

クロード コード システムのプロンプトは、ツールの使用に関するルール、 安全上の制約、スタイルの指針、拒否条件。 どれも秘密主義には依存しません。 をドロップします すべてをペーストビンに保存すると、CLI は明日も同じように機能します。

それがテストです。 システム プロンプトを公開すると、セキュリティ モデルが壊れる可能性があり、穴があります。 耐荷重ビットをプロンプトからサーバー側のチェックに移動します。 アクセス制御は以下に属します 認証層。 レート制限はゲートウェイに属します。 ツールの権限はツール ディスパッチャーに属します。 プロンプトは動作を説明します。 それを強制するものではありません。

優れたプロンプトは依然として企業秘密として保護する価値があります。 数週間の反復が数週間に圧縮される 数百行もあり、あなたのプロンプトをコピーする素早いフォローがその時間を節約します。 レシピのように扱う IP。秘密キーとは異なります。 暗号通貨ではなく、法的およびNDA。

3. サーバーに認証、レート制限、課金を設定する

現実の最も一般的なエージェント アーキテクチャは次のようになりますが、これは間違っています。

このキーはインストールごとに同梱されます。 決意を固めたユーザーは、午後にバンドルからそれを取り出します。 気づかないうちにクォータがゼロになってしまいます。 クロード・コードはこれを読んで回避します ANTHROPIC_API_KEY 実行時にユーザーの環境から。 各ユーザーは Anthropic と独自の課金関係を持ちます。 ユーザーは自分のキーを持っていないため、ほとんどの消費者対応エージェントはそのパターンに従うことができません。 これは、サーバー プロキシが唯一の安全な形状であることを意味します。

サーバー上で、有効期間の短いユーザーごとのトークン、ユーザー ID によるレート制限、使用状況のログを確認してから、 アップストリーム呼び出し:

15 分の有効期限、特定のスコープ、およびセッションを指定して、ログイン フローからユーザーごとの JWT を発行します。 バインディング。 botoi への 1 回の呼び出しで署名が処理されるため、「間違ったアルゴリズム」によるフットガンをスキップできます。 2015 年時代の JWT ライブラリは依然として次の点で有名です。

4. すでに漏洩したかのようにキーをローテーションしてログに記録する

Claude Code は独自のツール呼び出しテレメトリをローカルに記録するため、ユーザーはエージェントが自分の端末で何をしたかを検査できます。 機械。 サーバーにも同じプロパティが必要ですが、サーバー側にあります。 すべてのモデル呼び出しが行を取得します: ユーザー ID、 モデル、入力トークン、出力トークン、ツール呼び出し、コスト。 最低 30 日間は保管してください。 攻撃者 あるユーザーのトークンを盗んだ者は、通常の使用とは異なる支出パターンを持っており、 ログはそれをどう見るかです。

記録する前に、数えてください。 トークンの使用は、悪用の最も早い兆候であり、プロンプトの最も早い兆候です。 膨満感:

ユーザーごと、時間あたりのトークン数について、p99 ベースラインの 3 倍のアラートを設定します。 ページングされた場合は取り消します マスターキーではなく、ユーザーのトークンです。 マスターキーは四半期ごとのスケジュールでローテーションします。 ユーザーごとのトークン 異常検出が発生すると回転します。

5. プロンプトがモデルに到達する前に PII をスクラブします。

ユーザーは、クレジット カード番号を含むサポート チケットをエージェントに貼り付けます。 モデルはそれを見て、 ログラインがそれをキャプチャし、微調整パイプラインがそれを取り込み、今ではあなたがやった 3 つの場所にあります。 予定はありません。 Claude Code は、ユーザーのマシンに対してユーザー自身のマシン上で実行することでこれを回避します。 自分のファイル。 ホスト型エージェントにはそのような余裕はありません。

すべての受信プロンプトで検出パスを実行し、呼び出しの前に編集します。

を送信します redacted モデルに文字列を追加し、 findings 記憶の中で、そして モデル応答が特定のトークンの返送を要求する場合にのみ、オリジナルを再挿入します (例: 支払い方法を指定する必要があるサポートチケットの概要)。 あなたのログ、トレーニング コーパス、 ダウンストリーム分析パイプラインはすべて、編集されたバージョンを参照します。 メモリ内のリクエスト パスのみが参照します 生の PII。

6. 独自のリークされたプロンプトを使用してプロンプト挿入を強化する

漏洩したシステム プロンプトの利点は、独自のインジェクション スイートに対して実行できることです。 アン 攻撃者はバイパスを 1 つだけ必要とします。 保障が必要です。 ステージング エージェントを立ち上げ、独自のプロンプトを貼り付けます をレビュー担当者のクリップボードにコピーし、最も一般的な注入形状をテストするプローブ セットを実行します。 命令のオーバーライド、ペルソナの切り替え、区切り文字の区切り、偽のユーザーのリセット。

エージェントにシステム プロンプトを表示させたり、環境変数を表示させたり、エージェントを呼び出したりさせるものすべて ユーザーのスコープで許可されていないツールはバグです。 プロンプトの調整ではなく、サーバー側のチェックで修正してください。 プロンプト内の「システム プロンプトを公開しない」は提案です。 をブロックする応答フィルター プロンプトの出力の最初の 200 文字はコントロールです。

多層防御チェックリスト

コントロール バンドルのリークが発生しても生き残る理由
クライアントバンドル シークレットもマスター URL もありません 初日から読める。 文書として扱います
輸送 ユーザーごとの JWT、15 分の有効期限 トークンの盗難は分単位の爆発範囲に及ぶ
ゲートウェイ ユーザー ID およびトークン数によるレート制限 不正行為の上限は、ウォレットではなく、設定された支出額に設定されます
サーバ 迅速な組み立てとツールの発送 攻撃者は獲得していないツールを追加できません
モデル入力 PII の検出と編集 機密データがログやトレーニングに到達することはありません
モデル出力 プロンプトエコーとツールスキーマの応答フィルター 注入の試行が最後のホップで失敗する
可観測性 異常アラートによるユーザーごとのトークンの使用状況 盗まれたトークンは実際のユーザーとは異なって見える

重要なポイント

  • バンドルがすでに公開されているかのように出荷します。 キーをリリースするたびに grep して、 公開する前に内部ホストを確認します。 見つかったものはすべて、パッケージが公開される前にローテーションされます。
  • システムプロンプトはキーではありません。 セキュリティ関連のあらゆる意思決定を外部に移す プロンプトが表示され、サーバー側のチェックが行われます。
  • 独自のサーバーを介してモデルをプロキシします。 ユーザーは有効期間が短い JWT を取得します。 サーバーはマスター API キーを保持し、レート制限は両方の前にあります。
  • 途中で PII を編集します。 モデルには編集された文字列が表示されます。 ログとトレーニング パイプラインはきれいなままです。
  • リークした独自のプロンプトに対してインジェクション プローブを実行します。 うまくいくものは何でもなる プロンプトの調整ではなく、サーバー側の修正のチケットです。

Botoi は、サーバー側の部分を HTTP 呼び出しとして提供します: PII 検出 /v1/pii/detect、 トークンカウント /v1/token/count、JWT 署名: /v1/jwt/generate、プラス 150 以上のエンドポイントにわたるハッシュ、HMAC、およびレート制限の構成要素。 API キー 1 つ、5 リクエスト/分無料、 インストールフックはゼロです。 閲覧する インタラクティブドキュメント または配線します MCPサーバー に クロード コードまたはカーソルを使用して、エディタ内から同じエンドポイントを呼び出します。

FAQ

実際にクロード コードから何が抽出されたのでしょうか?
研究者たちは、npm で配布された @anthropic-ai/claude-code パッケージをダウンロードし、難読化解除ツールを通して実行し、完全なシステム プロンプト、15 以上の組み込みツール スキーマ (読み取り、編集、Bash、Grep など)、エージェント ループ、およびサブエージェント ディスパッチ ロジックを公開しました。 モデルの重みは非公開のままでした。 出荷されたのは、Anthropic API 呼び出しを中心とした JavaScript オーケストレーション レイヤーでした。 CLI をインストールすると、誰でもディスク上に同じビットが保存されます。
Anthropic API キーまたは顧客データは漏洩しましたか?
いいえ。CLI は実行時にユーザー自身の環境から API キーを読み取り、Anthropic 認証情報をバンドルすることはありません。 顧客との会話は CLI と api.anthropic.com の間で行われます。 この漏洩により、認証資料やユーザーデータではなく、プロンプトエンジニアリングとツールの設計が暴露されました。
システムプロンプトが秘密ではないのなら、なぜ企業はそれを守るのでしょうか?
理由は 2 つあります。 まず、コピーまでの時間の競争力です。適切なプロンプトは数週間の反復に相当しますが、公開を拒否すると、同じ時間内で高速なフォロワーの速度が低下します。 2 番目に、プロンプト インジェクションの表面積: 攻撃者がシステム プロンプトのガードレールとエスケープ シーケンスについて知れば知るほど、バイパスを作成することが容易になります。 どちらも本物ですが、どちらも暗号化された秘密ではありません。 プロンプトをキーとしてではなく、半減期が短い企業秘密として扱います。
難読化や縮小化は役に立ちますか?
それは時間を買うものであり、保護を買うものではありません。 やる気のあるリバース エンジニアリング者は、標準ツールを使用して 1 時間以内に JavaScript バンドルの難読化を解除します。 難読化によってカジュアルな検査が遅くなり、これは改ざん防止の検出やライセンスチェックにとって重要ですが、バンドルが不透明なままであることを前提とする脅威モデルは最初から壊れています。 初日からソースが公開されているかのようにビルドします。
独自の AI エージェントに同じ弱点があるかどうかをテストするにはどうすればよいですか?
今週は 3 つのチェックを実行します。 1: 出荷されたバンドルをダウンロードし、sk-、pk_、apiKey、BEGIN PRIVATE KEY、およびバックエンド URL を grep します。 見つかったものはすべて修正します。 2: エージェントにシステム プロンプトをそのまま出力し、機密性に依存してセキュリティに負荷がかかるものがないことを確認するように依頼します。 3: ユーザー ID、タイムスタンプ、引数ハッシュを使用してすべてのツール呼び出しをサーバー側でログに記録し、法案が提出される前に悪用パターンが表面化するようにします。

botoiで開発を始めよう

150以上のAPIエンドポイント。検索、テキスト処理、画像生成、開発者ユーティリティに対応。無料プラン、クレジットカード不要。