FZ-009 · セキュリティ
promptdecode
人間のレビュアーが見逃す、コードレビュー内の見えないテキストを見つけます。
- ステータス
- アルファ
- パイプラインの段階
- 検証
- 分野
- セキュリティ
- 自律性の目標
- レベル4 · 自己最適化
- 構成技術
- 稼働中 3 · 計画中 1
課題
Pull Requestやissueに隠されたテキストがコーディングエージェントにマージを指示しても、レビュアーには見えません。
できること
promptdecodeは、隠されたUnicodeテキストをブラウザ内でデコードし、何も送信せずに、その内容を表示します。
しくみ
- 任意のテキストを貼り付けると、隠された文字を明らかにし、そのメッセージをデコードします
- すべてお使いのブラウザ内で動作し、何も外部に送信しません
- 設定スキャナーが、信頼できない入力が到達しうるエージェントのステップがないか、GitHubワークフローを検査します
promptdeco.de で現在無料で利用できます。
エージェントが動く前に、隠された指示を見つけます。
現在デコーダーは今日ブラウザで動作します。promptdecode-core 0.1.0はcrates.ioにあります。スキャナーとGitHub Actionはまだ公開されていません。
目的
- 自律運用
- レビューこそ自動化の対象です。書き込みトークンを持つコーディングエージェントは、人間のレビュアーがすでに承認したプルリクエストを読みますが、両者が読んでいる文書は同じではありません。タグブロック文字、双方向オーバーライド、異体字セレクタは何も表示されないのに、通常どおりトークン化されます。スキャナーは変更のたびにCIで実行し、見つけたものを単に警告するのではなくデコードし、プレーンテキストをプルリクエストに書き戻すことを想定しています。ループにモデルはなく、ランナーの外には何も出ません。
- インテリジェンス
- 必要のないところでは、意図的にモデルを使いません。計画中の2つのエンジンはどちらも決定論的です。1つは信頼できないワークフロー入力を、書き込みトークンを持つエージェントのステップまでたどり、もう1つはリポジトリの内容全体で、名前付きのUnicodeクラスに一致するものを探します。何が怪しいかをモデルに判断させる検出器は、自らのカバー範囲を明言できません。明言できるカバー範囲こそが製品です。
- グロース
- 根拠重視で、そのぶん進みは遅めです。攻撃のブロック率は公表しません。文字レベルの回避率は手法によって大きく変わるため、ひとつの数字では意味をなさないからです。公表するのは、名前付きのUnicodeクラスの一覧に対する決定論的なカバー範囲と、名前付きコーパスにおける特定の誤検知率での再現率で、コーパスとハーネスも公開します。成長は、Actionが登場してからの、週あたりのスキャン対象リポジトリ数です。
技術的な詳細
人間のレビュアーには見えず、言語モデルには完全に読めるテキストを見つけ、デコードします。プルリクエストのタイトル、issue本文、リポジトリ内のファイルに隠された指示が、コーディングエージェントに承認、マージ、コメントを命じることがあり、差分には何の異常も表示されません。現在動くのは2つです。1つはサイト上のデコーダーで、3つの名前付きコードポイントクラス(Unicodeタグブロック、双方向制御文字とオーバーライド、異体字セレクタ)を読み取り、それらがエンコードしたペイロードを復元します。処理はすべて読者のブラウザ内で完結し、何も外部に送信しません。もう1つは設定スキャナーで、信頼できないワークフロー入力を書き込みトークンを持つエージェントのステップまでたどります。ソースから実行でき、リリースはまだありません。残りは設計済みで未実装です。リポジトリ全体でペイロードをデコードするコンテンツエンジン、コマンドラインのスキャナー、GitHub Action、オープンなベンチマークです。公開された一覧にないクラスは検出されません。その一覧が、私たちの主張です。