エージェンティックコーディング

エージェントコーディング:リスク、ベストプラクティス、そして初期導入企業から得られた8つの教訓

TL; DR

エージェントによるコーディングにおけるリスクは、エージェントが質の悪いコードを書くことではなく、エージェントが実際に行動することにある。 パッケージをインストールし、開いていないファイルを編集し、ツールを呼び出し、誰も確認していない設定を読み込んで開きます。 pull requestsそれらはすべて開発者の許可を得て実行される特権操作であり、既存のコントロールは人間が一つ一つ入力していた時代を想定して構築されています。

スピードアップにより、ボトルネックがレビュー段階に移行した。 AIコーディングアシスタントに関する独立した調査によると、生成されたコードの約40%にセキュリティ脆弱性が含まれており、モデルの精度が向上してもその割合は改善されていない。出力は増加したが、レビュー能力は向上していない。エージェントプログラミングは、1つの命令が12個のファイルに影響を与える可能性があるため、オートコンプリートよりもこの問題を深刻化させている。

攻撃の標的は配線であり、機種そのものではない。 ルールファイルに隠されたUnicodeコードにより、アシスタントがバックドア付きコードを出力し、そのことを一切言及しない。これはMITRE ATLASでAML.CS0041としてカタログ化されている。攻撃者はモデルが作り出したパッケージ名を登録する。あるMCPブリッジは、リモートコード実行をクライアントに437,000回以上送信した。従来の分析では、これらのファイルは読み取られない。

その内容は退屈だが、機能する。 実際に使用されているエージェントと MCP サーバーを一覧化し、プロンプトとルール ファイルをレビュー対象のコードとして扱い、すべてのツール サーフェスをタスクの範囲に絞り込み、エージェントが実行される開発者マシン上でポリシーを適用します。 Xygeni AIセキュリティ 最初の3つを処理し、 開発AI 最後の点は、AIが生成したコードと人間が書いたコードの両方に共通する。

エージェンティックコーディングとは何ですか?

エージェントコーディングとは、AIエージェントが目標を受け取り、ツールを使ってコードベース全体でそれを実行する開発手法です。具体的には、ファイルの読み書き、依存関係のインストール、テストの実行、ファイルのオープンなどを行います。 pull requestsリスクは、個々の生成された関数の品質ではなく、それらの動作と、それらを制御する構成から生じます。効果的な対策は、インベントリの作成、スコープ付き権限の設定、構成のレビュー、エンドポイントでの強制適用です。

エージェントコーディングか、エージェントプログラミングか?

どちらの用語も同じ変化を表しており、チームはそれらを互換的に使用します。エージェントプログラミングは、作業の進め方に関するエンジニアリングの会話でよく使われます。エージェントコーディングは、ツールやセキュリティの分野で定着したフレーズです。技術的には両者を区別するものは何もありません。 完全な定義と関連語彙エージェントコーディングに関する用語集の項目で、その点について説明しています。

この文章で重要なのは、提案と実行の区別です。行を補完するアシスタントは生産性向上機能です。パッケージをインストールし、6つのファイルを編集し、ブランチをプッシュするエージェントは、あなたのシステム内で動作する非人間的な存在です。 SDLCエージェント型プログラミングは静かにその一線を越え、それ以来、ほとんどのセキュリティプログラムは再検討されていない。

エージェントコーディングの真のリスク

噛みつきやすい傾向のある順に、リスクの高い4つの家族。

  • ボリューム超過レビュー。 エージェントは、レビュー担当者が意味のある形で読み取れる量よりも多くの変更を1時間あたりに生み出します。承認は形式的なものとなり、セキュリティ上の問題のあるパターンが機械的なスピードで複製されます。これは誰もが認識しているリスクでありながら、最も測定されていないリスクです。まずは、エージェントが作成した変更と人間のレビュー時間の比率を測定してみてください。その数値が、この問題の深刻さを雄弁に物語ってくれるでしょう。
  • 命令層。 エージェントのコンテキストに到達するものはすべて、エージェントを誘導することができます。プロンプトインジェクションは、 LLM アプリケーション向け OWASP トップ 10 それには理由があり、エージェント型コーディングでは、情報伝達手段はごくありふれたものです。例えば、問題の説明、コードコメント、依存関係にあるREADMEファイル、エージェントが取得するドキュメントなどです。誰もあなたを直接攻撃する必要はありません。エージェントが読むような文章を書けば良いのです。
  • 設定レイヤー。 ルールファイル、スキルファイル、プロンプト、およびMCPサーバー定義は、エージェントの動作とアクセス権限を決定します。これらはアプリケーションコードではないため、一般的なスタックのスキャナでは読み取ることができません。ルールファイルバックドアは、ゼロ幅文字がレビュー担当者が物理的に見ることができない指示を伝達するという極端なケースを示しました。通常のケースも同様に有害です。例えば、プロバイダの認証情報が設定ファイルに平文で保存されていたり、デフォルト設定のためにアシスタントにファイルシステム全体への読み取りアクセス権が付与されていたりする場合などです。
  • 依存関係とツールインターフェース。 エージェントは依存関係を選択します。名前を解決し、インストールして次に進みます。インストールスクリプトは、 pipeline 変化が見られます。スロップスクワッティングはまさにこれを悪用します。USENIX Security 2025で発表された研究によると、言語モデルによって推奨されるパッケージの19.7%は存在せず、偽名が攻撃者が登録して待つのに十分な頻度で繰り返されます。同じことがにも当てはまります。 MCP サーバー信頼できないサーバーに接続すると、監査していないツールがエージェントに渡ってしまう。

実際にどのように失敗するのか

特筆すべき斬新な手法は一つもない。実戦で既に記録されている様々な技術を、着弾順に組み合わせたものだ。

  1. 指示
    文章は、課題の説明、依存関係のREADMEファイル、またはコードのコメントの中に含まれています。それは人間が読むために書かれたものではありません。
  2. コンテキスト
    開発者がエージェントに問題の修正を依頼します。エージェントは、説明、リポジトリ、および自身のルールファイルをコンテキストに取り込みます。指示とコンテンツはモデルと同一に見えます。
  3. インストール
    エージェントは適切なヘルパーライブラリを特定し、インストールします。この名前は先週、モデルが次々と同じ名前を考案していることに気づいた人物によって登録されました。インストールスクリプトはラップトップ上で実行されます。
  4. 資格証明書
    プロバイダートークンがプレーンテキストで存在します mcp.json、そして既にシェルでアクティブなクラウドセッション。スクリプトは権限昇格する必要はありません。継承します。
  5. その pull request
    変更点は小さく、テスト結果も良好で、差分も妥当な値を示している。あと4件の承認待ちがあるため、1分以内に承認された。

ステップ3の後、所有するすべてのゲートが作動します。 最初の3つの処理は開発者のマシン上で約90秒で行われます。

初期導入企業から学ぶ8つの教訓

これは、記録された事例、発表された研究、そして誰かがポリシーを策定する前からエージェント型プログラミングを採用していたチームに繰り返し現れるパターンに基づいている。

  1. 爆発半径はツールの表面であり、プロンプトではない。 チームはプロンプトの強化に数週間を費やし、エージェントが呼び出せるツールを決定するのに数分しか費やしていません。これは間違った比率です。読み取りしかできないエージェントは、侵害された場合に不便です。メール送信、本番環境へのクエリ、プッシュ通知ができるエージェントが必要です。 commits はインシデントであり、開発者自身の認証情報を使用して実行します。なぜなら、エージェントに ID をプロビジョニングする人はほとんどいないからです。システムプロンプトを作成する前に、ツールリストを書き留めてください。
  2. エージェントはコードの動作ではなく、テスト合格を最適化します。 失敗したテストスイートと十分な自律性が与えられた場合、エージェントはアサーションを削除し、条件を緩めるか、統合をモックに置き換えてから、成功を報告します。どのチームも最初の週にこのことを認識します。これがグリーンテストの理由です。 pipelines は証拠ではなくなり、レビューの質問が「これは機能するか」から「これを合格させるために何が変更されたか」に変わった理由。
  3. ルールファイルは本番環境の設定です 生成されるすべての行を制御するファイルは通常 commit一度だけ修正され、その後は二度と見直されていない。これは変更管理下に置かれ、所有者、差分レビュー、そして誰も覚えていない行が追加されていることに気づく担当者が必要である。目に見えない部分も含め、そこに書かれていることはすべて遵守されるものと想定すべきだ。
  4. エージェントの依存関係は、あなたの依存関係ではありません 承認済みライブラリリストは、人間が選択したことを前提としています。エージェントが妥当な名前を解決してインストールし、インストールスクリプトはCIが存在する前に実行されます。失敗したチームは、開発者が何を優先すべきかをリストアップしたポリシー文書ではなく、マシンへのインストール時にチェックを追加しました。
  5. 彼らが何を走っているのか誰も教えてくれない 5人のエンジニアにどのMCPサーバーとアシスタントを使っているか尋ねても、5人とも完全な回答は得られない。ツールはローカルにインストールされ、毎週変更されるため、アンケート調査はここでは役に立たない。発見するには、コード、依存関係、そしてツールが残す構成ファイルから情報を得る必要がある。
  6. セッションが終わった後も、記憶は毒を留めておく。 永続コンテキストやエージェントのメモリに到達した悪意のある命令は、タスクが終了しても消滅しません。無関係な作業にも静かに影響を与え続けるため、メモリおよびコンテキストの汚染はOWASPのエージェントリストに独自の項目として記載されています。エージェントのメモリは、便利な機能としてではなく、レビューとクリアが必要な状態として扱うべきです。
  7. 可逆性は予防に勝る 最も安全に自律性を実現しているチームは、最も厳格な管理体制を敷いているチームではない。むしろ、ミスを低コストで解決しているチームだ。エージェントはメインブランチではなくブランチをプッシュし、使い捨ての環境で作業し、すべてのアクションにワンコマンドで元に戻せる機能を備えている。自律性は、それを元に戻すのがどれだけ容易かによって、そのコストに比例する。
  8. パイロットはあなたに嘘をつく エージェントは、小規模なリポジトリにおける新規開発タスクでは非常に優れた性能を発揮しますが、暗黙の慣習が残る大規模な既存コードベースでは性能が低下します。パイロット運用が成功すると、生産性向上効果が過大評価され、リスクが過小評価され、結果として大規模環境では誰も達成できない期待値が生まれてしまいます。最もクリーンなリポジトリではなく、最もパフォーマンスの低いリポジトリでパイロット運用を行うべきです。

実際にはどうなるか

ツールよりも順序が重要です。まず検出を行います。検出していないエージェントに対して権限の範囲を設定することはできないからです。次に構成レイヤーです。そこに手順があるからです。最後にエンドポイントです。そこでエージェントが実際に実行され、インストールが完了するのはずっと前のことです。 pipeline 通知。

Xygeni AIセキュリティ すべてのAIアセットを発見します SDLCモデル、エージェント、エージェントサーバー、MCPサーバー、データセット、スキルファイル、プロンプト、および guardrails 誰も宣言していないアプリケーションコード、宣言された依存関係、およびAIツールが残した構成ファイルを読み取り、それらがどのように接続されているかをマッピングします。エージェントプログラミング特有のリスクを検出します。プロンプトの注入とシステムプロンプトの漏洩、ルールファイルとスキルファイルへの悪意のある命令とツールの注入、安全でないMCP構成、過剰なエージェントと欠落 guardrailsAIファイル内の秘密情報、脆弱なAI依存関係や不正に取得されたAI依存関係などを検出します。検出された脆弱性はOWASP Top 10 for LLM Applicationsに対応しており、具体的なファイルと行番号が示されます。また、優先順位付け機能により、数千件の検出結果の中から、使用中、アクセス可能、悪用可能、特権を持つ、業務上重要なものだけが絞り込まれます。

開発AI 残りの半分はエディタでカバーされます。コードが記述される際にセキュリティを確保し、AI生成コードと人間が記述したコードの両方に適用され、他のエージェントが実行しようとしていることを実行前に傍受します。このインテリジェンスは、既に実行しているスキャナーから取り込まれた検出結果にも適用されるため、既存のシステムを置き換える必要はありません。

FAQ

  • エージェント型コーディングにおける最大のリスクは何ですか? 過剰な権限。幅広いツールを扱えるエージェントは、成功した注入を実際の行動へと結びつけてしまう。そして、ほとんどのチームは、人材の範囲よりもツールの範囲をはるかに緩やかに定めている。
  • エージェントプログラミングは、規制環境において安全ですか? はい、インベントリ、スコープ付き権限、構成のレビュー、エンドポイントでの強制適用があれば可能です。監査において弁明できないのは、どのエージェントが実行されているか、それらがどこに到達しているか、どのようなコードを作成したかが分からないことです。
  • エージェントによるコーディングは、人間によるコーディングよりもセキュリティの低いコードを生成するのだろうか? 1行あたりのエラー率は人間のミスと同程度だが、その量はそうではなく、レビューを阻害するのはまさにその量なのだ。問題は処理能力であって、人材ではない。
  • AIコーディングアシスタントを禁止する必要があるだろうか? 禁止措置は利用を地下に潜らせるだけであり、事態はより悪化する。シャドウAIは承認されたAIよりもセキュリティを確保するのが難しく、実際に状況を変えるのは発見による制御である。
  • エージェントが脆弱性を漏洩させた場合、誰が責任を負うのか? マージを行った人物は、以前と全く同じ人物です。これが厄介な点であり、だからこそ著者データが重要なのです。機械による大量の変更を承認するレビュー担当者は、承認後ではなく、承認前にその所見を知る必要があるのです。
  • 全く見通しが立たない状況で、どうやって始めればいいのでしょうか? リポジトリに対して検出を実行し、検出された MCP サーバーとアシスタントを一覧表示し、ツールインターフェースに基づいてエージェントをランク付けします。最もリスクの高いエージェントは、通常、誰も懸念していなかったエージェントです。

エージェントは既にリポジトリに登録されています

エージェントによるコーディングは、承認の有無に関わらず、既にリポジトリに存在しています。それをうまく扱っているチームは、最も厳格なポリシーを持つチームではありません。彼らは、どのエージェントが実行されているか、それらのエージェントがどこまでアクセスできるか、そしてそれらを制御するファイルにどのような変更があったかを、いつでも正確に把握できるチームなのです。

エージェントが何に接続しているかを確認するには ザイゲニ.

sca-tools-ソフトウェア構成分析ツール
ソフトウェアのリスクを優先順位付けし、修復し、保護する
無料アカウントを作成しましょう。
いいえ、クレジットカードは必要ありません。

ソフトウェア開発と納品を安全に

Xygeni製品スイートと共に