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 문서가 셸 기반 임시 파일 정리에 영향을 줄 수 있었다. Progress는 2.1에서 흐름을 수정했으며, 권고문은 현재 악용을 보고하지 않는다.[1], [3], [4]

💡 알기 쉬운 설명 (ELI5)

작업장의 정리 지침은 이전 단계에서 파일 이름을 받아 운영체제에 전달한다. 그 이름을 일반 텍스트가 아니라 셸 지시문의 일부로 취급하면 정리 단계에서 의도하지 않은 명령이 실행될 수 있다. 수정은 가능한 경우 셸을 피하고, 꼭 전달해야 하는 파일 이름을 제한하고 인용한다.[1], [2]

핵심 개념 및 용어

ARCGenAI-Generator
Swagger/OpenAPI 입력에서 REST 커넥터 산출물을 만드는 Progress DataDirect 도구다. 영향받는 버전은 2.0이며 Progress는 2.1을 수정 버전으로 지정했다.[1], [3]
Swagger/OpenAPI 문서
생성기에 제공되는 구조화된 API 설명이다. 스키마 이름과 메타데이터는 외부 입력이므로 셸 구문이 되어서는 안 된다.[1], [4]
셸 명령 인젝션
신뢰할 수 없는 입력이 운영체제 셸이 해석하는 명령을 바꾸는 데이터-명령 경계 실패다.[1], [4], [5]
임시 파일 정리
조립 후 중간 파일을 제거하는 단계다. 권고문은 셸 기반 정리 지침에 문제를 둔다.[1], [2]
CWE-78
운영체제 명령에 사용되는 특수 요소의 부적절한 무력화이며 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

정리 지침이 셸에 전달된다

수정 전 공개 에이전트 지침은 터미널을 사용해 임시 파일을 정리하고 {fileName}을 경로 표현식에 삽입했다. 수정 커밋은 이 값이 orchestrator에서 전달된다고 밝히며, 인용된 출처는 문서에서 비롯되었다고 입증하지 않는다.[2]

단계 4

운영체제가 입력을 명령 구문으로 해석할 수 있다

조작된 문서는 개발자 프로세스의 권한으로 정리 지침이 예상치 못한 OS 명령을 실행하게 할 수 있다. CVE 기록은 개발자 컴퓨터의 명령 실행을 설명하지만 구체적인 exploit 문자열을 공개하거나 모든 실행이 취약하다고 주장하지 않는다.[1], [4], [5]

단계 5

2.1은 셸 경계를 줄인다

패치는 기본적으로 네이티브 파일 작업을 선호하고 이름이 ^[A-Za-z0-9._-]+$와 일치해야 하며 셸 fallback이 필요하면 모든 확장을 인용하도록 한다. Progress는 2.1을 수정 버전으로 지정했다.[2], [3]

소스 코드 비교: 취약한 구현 vs 보안 패치

취약 패널은 수정 전 Progress 에이전트 지침을 인용한다. 수정 패널은 커밋 7ede6d9의 지침 변경을 요약한다. 네이티브 파일 작업을 우선하고, allowlist로 이름을 검증하며, 셸 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 →