スケールと証明の融合
エージェントによる自動化は、攻撃対象の探索方法を変えた。それは、迅速な偵察、仮説の生成、スケーラブルな列挙といった幅の広さには秀でているが、次のようなものを生み出すことはほとんどない。 証拠レベルのエクスプロイト・チェーン ブルーチームのレビューや経営陣の精査に耐えられるような。伝統的な手動テストはその対極にある。解釈、敵対的判断、説明の明確さにおいて優れているが、現代のアプリやクラウドエステートの広大で常に移り変わる境界をカバーするのに苦労している。現実的に進むべき道は、「人間対AI」ではなく、次のようなものだ。 ヒューマン・イン・ザ・ループ(HITL) エージェントは、明示的なガードレールの下で、スピードと表面的なカバレッジを提供し、専門家は検証、コンテキスト、説明責任を持つ。実際には、信頼できる ヒューマン・イン・ザ・ループ・エージェント AIペンテストツール Penligent 配備のようだ: ポリシーファーストのオーケストレーション, インテントレベル・ツーリングそして エビデンス・ファースト報告 監査やインシデントのレトロスペクティブに耐えうる。

HITLの本当の意味(イエス/ノーのポップアップを超えて)
HITLペンテストシステムは、自律的なワークフローに「よろしいですか?それは 設計オーケストレーション アクティブ・プロービング、エクスプロイトの実行、ファイル書き込み、データ流出シミュレーション、またはアウトバウンド・エグレスなど、機密性の高い意図がある場合 デフォルト拒否そして、すべての承認には 制約 (レート制限、許可されたパス、停止条件、タイムウィンドウ、データ処理ルール)。すべてのコマンド、パラメータ、環境詳細、生出力、スクリーンショット/キャプチャ、レビュアーID、レビュアーメモが 法医学的証拠チェーン.レポートは 第一原理から再生可能もし、その書き込みを削除し、証拠から作り直したとしても、同じ結論が得られるはずである。調査結果は MITRE ATT&CK TTP;検証の手順は、以下のとおりである。 OWASP ASVS 統制、およびプロセスの成果物(承認、変更ログ、職務分掌)は、以下を満たす。 NIST SSDF.これが「AIによるスキャン」から「AIによるスキャン」への移行である。 エンジニアリングの実践.
アーキテクチャ政策優先、ツール抽象化、エビデンス常備
メンテナンス可能なデザインは、3つのレイヤーにきれいに分類される:
- ガードレール層(ポリシー・ファースト): 高リスクのインテントのチェックポイントを、構造化された承認を用いて、Deny-by-Defaultとしてエンコードする。承認は単なる「はい/いいえ」ではない。 契約 これは、エージェントがどのような制約の下で何を行うことができるかを指定するものである。承認は、バージョン管理され、レビュアーに帰属し、タイムスタンプ、スコープ識別子、取り消しフックで記録されるべきである。
- ツール層(意図レベルの動詞): スキャナとアシスタントをラップする-Nmap、ffuf、sqlmap、nuclei、Burp Suite API、ブラウザ自動化、OSINTヘルパー-を次のような動詞の後ろにつける。
dir_bruteforce,パラメーター・ファズ,sqli_detect,xss_probe,クローラー_ログイン.その出力をよく型付けされたものに解析する、 構造化レコード (JSON)を使用することで、エージェントは信頼性の高い推論ができ、レポートは正規表現ルーレットなしでエビデンスを再利用できる。成功/失敗/不確定」状態を正規化し、もろいチェーン・ロジックを避ける。 - 証拠層(法医学グレード): コマンド、バージョン、環境、出力、スクリーンショット、pcap、レビュアーのアイデンティティを関連付ける。考察 ハッシュチェーンまたは署名 完全性を保護し、レポートの証明性を可能にする。証拠は照会可能でなければならない:「のPOCをすべて見せてください。
T1190過去30日間、このスコープで......」は、考古学的発掘ではなく、単一のクエリーであるべきだ。
要するにだ: スピードはエージェントから、確実性は人間から、擁護性は証拠から生まれる.
シグナルからプルーフへ:スケールアップするワーク・ケイデンス
堅牢なHITLワークフローは、次のように進行する。 大発見 への 拘束された実行 への 擁護可能な報告:
- 忖度だ: エージェントは、読み取り専用または影響の少ないアクションでサーフェスを掃引する。候補(興味深いパス、疑わしいパラメータ、異常なレスポンス)を生成し、シグナルをクラスタ化することで、研究者の疲労を軽減します。
- インターセプト: 承認ゲートはセンシティブなインテントを遮断する。人間のレビュアーが、レート≦5rps、403/429でアボート、以下のパスを制限、などの制約を加える。
/api/*ログからトークンを削除したり、一時ディレクトリ以外への書き込みを禁止したり、ビジネスコンテキスト(「これは規制されたPIIアプリです。) - 制約された実行: 代理店は手続きを進める 付与された契約の範囲内入力ベクトル、環境の前提条件、タイムスタンプ、出力アーチファクトなど、結果を再現するために必要なすべてをキャプチャする。
- リポート再生: 最終報告書は 説明可能 (ビジネスインパクトとの関係)、 再現可能 (証拠→報告)、そして 標準アライメント (att&ck/asvs/ssdf)。ブルーチームはこれを基に検知を構築することができ、開発者はこれを基にテストを構築することができ、リーダーシップはこれを基にリスクを決定することができる。
最小限のHITL承認ループ
以下は最小限のパターンである。政策の中断→人間の承認→制約された実行→証拠の持続性-カスタムオーケストレータやLangGraph/LangChainに組み込むことができます。意図的にコンパクトにしていますが、実行したり拡張したりするのに十分な完成度です。
import json, subprocess, time, uuid, hashlib, os
from datetime import datetime
APPROVALS = { {の
"RUN_EXPLOIT":{"require":true, "reason":"インパクトのあるアクション"}、
"SCAN_ACTIVE":SCAN_ACTIVE": {"require": true:true, "reason":"WAF/IPSをトリガーする可能性がある"}、
「WRITE_FILE」: WRITE_FILE": {"require": True:true, "reason":「ファイルシステムの変異"}、
"EGRESS_CALL":EGRESS_CALL": {"require": True:true, "reason":"External network egress" }、
"READ_ONLY": {"require":真:false, "reason":「安全な意図"}、
}
EVIDENCE_DIR = "./evidence" #は、プロダクションでオブジェクト・ストレージに置き換えます。
os.makedirs(EVIDENCE_DIR, exist_ok=True)
def needs_approval(intent: str) -> bool:
meta = APPROVALS.get(intent, {"require": True})
return bool(meta["require"])
def open_review_ticket(intent, cmd, context):
ticket = {
"id": str(uuid.uuid4())、
"intent": intent、
"cmd": cmd、
"context": コンテキスト、
"status":"PENDING"、
"created_at": datetime.utcnow().isoformat() + "Z"、
}
# TODO: Slack/Discord/Web UIにプッシュする。
チケットを返す
def await_decision(ticket, timeout=1800):
# 実運用では: ポーリング決定ストア; ここでは制約付き承認をシミュレートします。
start = time.time()
while time.time() - start dict:
proc = subprocess.run(cmd, capture_output=True, text=True)
return {"rc": proc.returncode, "stdout": proc.stdout, "stderr": proc.stderr}.
def persist_evidence(payload: dict) -> str:
raw = json.dumps(payload, sort_keys=True).encode()
digest = hashlib.sha256(raw).hexdigest()
path = os.path.join(EVIDENCE_DIR, f"{digest}.json")
with open(path, "wb") as f:
f.write(raw)
リターン・パス
def hitl_execute(intent: str, cmd: list[str], context: dict) -> dict:
contract = なし
if needs_approval(intent):
ticket = open_review_ticket(intent, cmd, context)
decision = await_decision(ticket)
if decision["status"] != "APPROVED":
return {"status":"BLOCKED", "ticket": ticket} を返す。
コントラクト = decision["constraints"]
# オプション:ローカルで制約を強制する(例えば、ツールにレートフラグを注入する)。
contractに "rate "があり、cmdに"-rate "がない場合:
cmd += ["-rate", str(contract["レート"])]。
result = run_tool(cmd)
エビデンス
"intent": intent、
"cmd": cmd、
"context": コンテキスト、
"result": 結果、
"attck":"T1190"、#エクスプロイト公開アプリケーション
"asvs": "V2"、# 認証/セッション管理(例)
"ts": datetime.utcnow().isoformat() + "Z"、
"reviewer": 契約、"[email protected]"、
}
path = persist_evidence(evidence)
return {"status":"DONE", "evidence_path": path, "sha256": os.path.basename(path).split(".")[0]}.
# 例: ffufを使用した慎重なアクティブディスカバリー(承認によって制限される)
if __name__ == "__main__":
response = hitl_execute(
"SCAN_ACTIVE"、
["ffuf", "-w", "wordlists/common.txt", "-u", "https://target.example/FUZZ"]、
{"scope":"https://target.example", "note":「403/429で停止"}。
)
print(json.dumps(response, indent=2))
なぜこれが重要なのか: 承認は 契約制約条件は マシンエンフォース可能そして証拠は タンパーエビデント.これで、証拠を物語に決定論的に変換するレポート生成を構築できます。物語が証拠から逸脱すると、構築は中断されます。思い通り.
操作モード:適切なバランスを選ぶ
| 寸法 | 人間のみ | AIのみ | HITLエージェント(推奨) |
|---|---|---|---|
| 表面被覆率 | ミディアム-ロー | 高い | 高い |
| 検証の深さとビジネス・コンテキスト | 高い | ロー・ミディアム | 高い |
| 誤検知/行き過ぎ | 低い | ミディアム-ハイ | ロー・ミディアム (統治) |
| 監査可能性と規格マッピング | ミディアム | 低い | 高い |
| 理想的なシナリオ | 深いグレーボックス、高リスクの証明 | マス・ディスカバリー | 継続的なテスト+検証可能なPOC |
HITLは以下を最適化する。 統治下の決定論.エージェントはレールの内側で素早く実行され、人間が何を証明とみなし、どのようにインパクトを伝えるかを決定する。この組み合わせは、以下を失うことなくスループットを実現する。 信頼性.
摩擦を減らす規格の調整
スタンダードを 背骨 付録ではなく、成果物の一部です:
- MITRE ATT&CK: 活動や発見を具体的なTTPにマッピングすることで、検知やパープル-チームの演習が明らかな次のステップとなるようにする。
https://attack.mitre.org/ - OWASP ASVS: 検証をコントロールファミリーに固定し、各項目に再現可能なエビデンスとリプレイステップを入力する。
https://owasp.org/www-project-application-security-verification-standard/ - NIST SSDF(SP 800-218): 安全な開発プラクティスに沿ったプロセス成果物として、承認、エビデンスチェーン、職務分掌を取得する。
https://csrc.nist.gov/pubs/sp/800/218/final
このアラインメントによって、あなたのレポートは 双方向インターフェースエンジニアは修正に、ディフェンダーは検出に、監査員は検証に使う。
どこ 寡黙 ループに属する
を配備する。 ヒューマン・イン・ザ・ループ・エージェント AIペンテストツール Penligentこの2つの役割は、一貫して複合的な価値を生み出す:
- プラットフォームの機能としてのガードレール。 ペンリジェントのオーケストレーションされたエージェントは、次のように動作する。 内部 明示的な承認、許可/拒否リスト、スコープ/レートルール。のような機密性の高いインテント
RUN_EXPLOIT,WRITE_FILEあるいはEGRESS_CALLは割り込み駆動であり、レビュアー契約を必要とする。すべてのコマンドライン、ツールのバージョン、出力はエビデンスストアに正規化され、再生成と監査の準備が整う。 - 忖度から擁護可能なストーリーへ エージェントは広く掃討し、ドラフトを作成する。 ビジネスインパクトにきれいにマッピングされたレポートを提供する。 att&ck/asvs/ssdf.このような分業によって、その場限りのスキャンは 再現可能な能力.厳しいデータ保存やオフラインテストが必要な環境では、Penligentの ローカルファースト モードでは、安全に段階を踏んで能力を向上させることができます。

実践的パターンとアンチパターン
やるんだ:
- すべてのバージョン: プロンプト、ツールイメージ、ワードリスト、レート。バージョンピンなしの再現性ダイ。
- ブラウザの自動化を強化するエージェントは、クライアントサイドの盲点を避けるために、DOMイントロスペクション、イベント合成、ストレージ/クッキーの規律、ネットワークインターセプションを必要とする。
- エビデンスの適切なサイズ再現して影響を証明するのに十分な情報を取得する。
避ける:
- オートメーション・エコーチェンバーマルチエージェントループは初期の誤分類を増幅させる。戦略的なHITLチェックポイントは、連鎖を断ち切り、グランドトゥルースへの再アンカリングを強制する。
- 正規表現のみの解析スキーマ検証のある構造化されたアダプタを好む。エージェントに生のログではなく、正規化された証拠を提供する。
- 「おそらく脆弱」という主張再現可能なPOCとマッピングされたインパクトがなければ、セキュリティではなくノイズを生み出していることになる。
実施チェックリスト(ランブックにコピー/貼り付け)
- デフォルトで拒否
RUN_EXPLOIT,WRITE_FILE,EGRESS_CALL,SCAN_ACTIVE承認には以下が含まれる。 範囲, レートそして 停止条件. - ツールインターフェースのリターン 構造化された パーサーは、実際のログとピン留めされたツールのバージョンに対してテストされる。
- 証拠は サイン入り またはハッシュ・チェーンでつながれている。 再生 セキュリティ成果物のCIの一環として、証拠から。
- 調査結果は以下の通りである。 ATT&CK TTP、検証の引用 エーエスブイエス プロセス成果物は以下を満たす 自衛隊.
- ブラウザの自動化は、認証フロー、SPAルーティング、CSP/CORSビヘイビアをカバーする。状態の変更にはHITLレビューが必須である。
- プロンプト、ツールのバージョン、単語リスト、レートは以下の通りです。 ピン留めとバージョン管理変更はコードと同じように承認が厳格に行われる。
スピード、確実性、ガバナンス
耐久性のあるパターンはシンプルで力強い: スピード=エージェント、確実性=人間、ガバナンス=基準+証拠.この3つが、監査可能なオーケストレーターの内部でループを閉じる、 ヒューマン・イン・ザ・ループ・エージェント AIペンテストツール Penligent は流行語でなくなる。それは 再現可能で防衛可能な能力-開発者が修正し、守備担当者が検出し、監査役が検証し、指導者が信頼できるもの。
- MITRE ATT&CK https://attack.mitre.org/
- OWASP ASVS https://owasp.org/www-project-application-security-verification-standard/
- ニストSSDF(SP800-218)-。 https://csrc.nist.gov/pubs/sp/800/218/final

