FlawOpen

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]
Swagger/OpenAPI 文書
ジェネレーターに渡す構造化 API 定義。スキーマ名とメタデータは外部入力であり、shell 構文にしてはなりません。[1], [4]
Shell コマンドインジェクション
信頼できない入力が OS shell の解釈するコマンドを変えてしまう、データとコマンドの境界不備。[1], [4], [5]
一時ファイルの削除
組み立て後に中間ファイルを削除する処理。勧告は shell ベースの削除指示に問題があるとしています。[1], [2]
CWE-78
OS コマンドで使われる特殊要素の不適切な無害化。CVE-2026-91140 に割り当てられています。[4]

フレームワーク対応

  • このガイドで説明する弱点の CWE 参照: CWE-78

ステップ・バイ・ステップの攻撃フロー

ステップ 1

開発者が ARCGenAI-Generator 2.0 を使用する

対象コンポーネントは Progress DataDirect Autonomous REST Connector GenAI Agents ARCGenAI-Generator 2.0 です。開発者が Swagger/OpenAPI 文書を処理するために実行します。[1], [3]

ステップ 2

文書由来の名前が処理に入る

CVE レコードは細工された Swagger/OpenAPI 文書を発火条件として示し、開発者が生成ツールを実行する必要があるとしています。公開された修正コミットでは、削除処理が orchestrator から {fileName} を受け取ります。引用した情報源は、この名前が文書由来であることまでは示していません。[1], [2]

ステップ 3

削除手順が shell に届く

修正前の公開エージェント指示は、端末を使って一時ファイルを削除し、{fileName} をパス式に補間していました。修正コミットではこの値を orchestrator から受け取ると示されていますが、引用した情報源は文書由来とは示していません。[2]

ステップ 4

OS が入力をコマンド構文として解釈し得る

細工された文書は、開発者プロセスの権限で削除指示に意図しない OS コマンドを実行させる可能性があります。CVE レコードは開発者端末でのコマンド実行を記述していますが、具体的な exploit 文字列や、すべての実行が脆弱という主張は公開していません。[1], [4], [5]

ステップ 5

2.1 では shell の境界を縮小する

パッチは可能な限りネイティブのファイル操作を優先し、名前に ^[A-Za-z0-9._-]+$ を要求し、shell が必要な場合は各展開を引用符で囲みます。Progress は 2.1 を修正版としています。[2], [3]

ソースコード比較:脆弱 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._-]+$ で検証し
# プラットフォーム固有のクリーンアップ指示では各展開値を引用符で囲みます。

エンジニアリング&システム堅牢化チェックリスト

参考資料

← AI Security Directory →