flawopen.com/AI Security/progress-arcgenai-generator-command-injection-cve-2026-91140
●
CVE-2026-91140 · CVSS 9.6 · 緊急
セキュリティ研究 · FlawOpen
CVE-2026-91140:Progress ARCGenAI-Generator のコマンドインジェクション
開発者が ARCGenAI-Generator 2.0 を実行した際、細工された Swagger/OpenAPI 文書が shell ベースの一時ファイル削除手順に影響する可能性があります。Progress は 2.1 で修正し、勧告は現在の悪用を報告していません。[1], [3], [4]
💡 わかりやすい解説 (ELI5)
作業場の削除指示は別の工程からファイル名を受け取り、それを OS に渡します。その名前を通常の文字列ではなく shell 指示の一部として扱うと、削除処理が意図しないコマンドを実行する可能性があります。修正では可能な限り shell を避け、必要なファイル名を厳格に制限し、引用符で囲みます。[1], [2]
主要な概念と専門用語
ARCGenAI-Generator- Swagger/OpenAPI 入力から REST コネクター成果物を生成する Progress DataDirect ツール。対象は 2.0 で、Progress は 2.1 を修正済みとしています。[1], [3]
CWE-78- OS コマンドで使われる特殊要素の不適切な無害化。
CVE-2026-91140に割り当てられています。[4]
フレームワーク対応
- このガイドで説明する弱点の CWE 参照: CWE-78
ステップ・バイ・ステップの攻撃フロー
ステップ 1
ステップ 2
ステップ 3
削除手順が shell に届く
修正前の公開エージェント指示は、端末を使って一時ファイルを削除し、{fileName} をパス式に補間していました。修正コミットではこの値を orchestrator から受け取ると示されていますが、引用した情報源は文書由来とは示していません。[2]
ステップ 4
ソースコード比較:脆弱 vs 堅牢化
脆弱なパネルは修正前の Progress エージェント指示を引用しています。修正版のパネルはコミット 7ede6d9 の変更を要約しています。ネイティブのファイル操作を優先し、allowlist で名前を検証し、shell fallback が必要な場合は各展開を引用符で囲みます。実行可能な削除コマンドと exploit 入力は省略しています。[2]
脆弱な実装
# Progress の修正前:一時ファイルを削除するためのエージェント指示
After successful assembly, delete temp files using the terminal with shell-native commands.
Use retry logic to handle transient file locks.
堅牢化されたセキュアパッチ
# Progress の修正:可能な場合はネイティブのファイル操作を使う
Prefer your file-editing tool's native delete/remove capability over the terminal.
Removing temp files is a plain file-system operation — it does not need a shell.
# shell に頼る必要がある場合は、{fileName} を ^[A-Za-z0-9._-]+$ で検証し
# プラットフォーム固有のクリーンアップ指示では各展開値を引用符で囲みます。
エンジニアリング&システム堅牢化チェックリスト
- ✓ARCGenAI-Generator の導入先、リポジトリ内コピー、開発環境や CI を洗い出し、親コネクターではなく製品自体のバージョンを確認する。[1], [3]
- ✓ARCGenAI-Generator を 2.1 以降へ更新する。更新までは 2.0 で信頼できない Swagger/OpenAPI 文書を処理しない。[1], [3]
- ✓修正済みの
.github/agents/ARCGenAI-Generator.agent.mdを確認する。ネイティブファイル操作を優先し、{fileName}を allowlist 検証し、shell 展開を引用符で囲む。[2] - ✓FlawOpen の推奨: 生成、削除、検証の全段階で API 仕様とスキーマ由来の名前を信頼できない入力として扱う。明示的な制御なしに AI エージェントがデータとコマンドを分離すると想定しない。
- ✓FlawOpen の推奨: 開発ツールを最小権限で実行し、可能なら文書生成をソースリポジトリ、署名素材、クラウド資格情報、本番シークレットから隔離する。
- ✓FlawOpen の推奨: ファイル名 allowlist と shell を使わない削除方式に、非破壊的な回帰テストを追加する。無害な名前と一時的なテスト用 fixture のみを使う。
- ✓FlawOpen の推奨: ARCGenAI-Generator 2.0 で未信頼文書を処理した開発環境や CI ワークスペースでは、その実行前後のプロセスおよびファイルのテレメトリを確認します。テレメトリがないことは保証の不足であり、侵害や安全性の証拠ではありません。