무슨 일이 있었나
AG2의 SandboxShellTool 검증은 _filter와 contains_shell_operator에 의존하여 선택된 셸 구문을 거부하지만, 필터가 개행/CR 구분자를 놓치고 필터링되지 않은 문자열이 sh -c를 통해 실행됩니다. 이로 인해 공격자의 영향을 받은 에이전트 명령이 임의 문장을 추가하고 실행할 수 있습니다. 기본 LocalEnvironment 백엔드에서는 주입된 명령이 호스트 하위 프로세스로 실행되어 기밀성, 무결성 및 가용성에 영향을 미칩니다.
왜 중요한가
이것은 에이전트 샌드박스 탈출 클래스입니다: 도구의 격리 보장이 단일 개행 문자로 무너져, 프롬프트 주입 또는 공격자의 영향을 받은 도구 인자가 에이전트가 실행되는 머신에서 호스트 명령 실행으로 변환됩니다 — 이는 방어자가 신뢰하지 않는 에이전트 동작을 격리하기 위해 의존하는 경계입니다.
공격 경로
ag2/tools/sandbox/filter.py 및 adapter/shell.py의 명령 접두사 필터는 개행 및 캐리지 리턴 구분자를 누락하면서 허용된 원시 문자열이 sh -c에 전달됩니다. 도구 호출 인자에 영향을 줄 수 있는 공격자(예: 간접 프롬프트 주입 또는 채널 메시지 통해)는 에이전트 프로세스의 권한으로 호스트 하위 프로세스로 실행되는 추가 셸 문장을 주입합니다.
영향받는 시스템
ag2 >= 0.13.2, < 1.1.1; autogen >= 0.13.2, <= 0.14.1
완화 방안
ag2 1.1.1로 업그레이드하십시오. 권고: https://github.com/ag2ai/ag2/security/advisories/GHSA-2h4w-29cv-2cmv