본문으로 건너뛰기
← 뉴스 목록으로
CRITICAL취약점

PraisonAI 5개 CVE 동시 공개CVSS 10점 샌드박스 우회부터 인증 무력화까지

5분 읽기
#PraisonAI#CVE#AI Agent#RCE#Sandbox Bypass#Command Injection#CVSS 10

🔴 무슨 일이 일어났나

2026년 4월 3일, AI 멀티에이전트 프레임워크 PraisonAI에서 5개의 심각한 보안 취약점이 동시에 공개되었습니다. 가장 위험한 CVE-2026-34938은 CVSS 10.0 만점을 받았습니다.

PraisonAI는 여러 AI 에이전트를 조합해 복잡한 작업을 자동화하는 오픈소스 프레임워크입니다. CrewAI, AutoGen과 함께 에이전트 오케스트레이션 도구로 널리 사용됩니다.

이번에 공개된 취약점은 두 개 패키지에 걸쳐 있습니다.

| CVE | CVSS | 패키지 | 공격 유형 | |-----|------|--------|----------| | CVE-2026-34938 | 10.0 | praisonai-agents (<1.5.90) | 샌드박스 우회 → RCE | | CVE-2026-34935 | 9.8 | praisonai CLI (<4.5.69) | CLI 커맨드 인젝션 | | CVE-2026-34953 | 9.1 | praisonai CLI (<4.5.97) | 인증 우회 | | CVE-2026-34955 | 8.8 | praisonai CLI (<4.5.97) | 샌드박스 탈출 | | CVE-2026-34937 | 7.8 | praisonai-agents (<1.5.90) | 셸 인젝션 |

5개 CVE 중 4개가 CVSS 8.8 이상이며, 모두 인증 없이 원격 코드 실행이 가능합니다.


⚠️ 왜 위험한가

CVSS 10점: 3중 샌드박스가 한 줄로 무너진다

CVE-2026-34938이 만점을 받은 이유는 공격의 단순함 때문입니다.

PraisonAI의 execute_code() 함수는 사용자가 제출한 코드를 실행하기 전에 3단계 보안 검사를 거칩니다. 문제는 이 검사가 Python의 startswith() 메서드에 의존한다는 점입니다.

공격자가 str을 상속한 클래스를 만들어 startswith() 메서드를 오버라이드하면, 보안 검사 자체가 항상 통과됩니다. 3중 보호막이 Python 문자열 상속 한 줄로 완전히 무력화되는 셈입니다. GitHub Security Advisory(GHSA-6vh2-h83c-9294)에서 확인할 수 있습니다.

CVSS 벡터가 이를 잘 보여줍니다. 네트워크 접근만 있으면 되고(AV:N), 공격 난이도는 낮으며(AC:L), 인증도 필요 없고(PR:N), 사용자 상호작용도 없습니다(UI:N). 기밀성·무결성·가용성 모두 완전 손상(C:H/I:H/A:H)입니다.

CLI 커맨드 인젝션: 검증 없는 파이프라인

CVE-2026-34935는 --mcp CLI 인수가 검증, 허용 목록, 새니타이징 없이 그대로 shlex.split()을 거쳐 anyio.open_process()로 전달되는 문제입니다. 공격자가 조작한 입력이 셸 명령으로 직접 실행됩니다.

인증 우회: "토큰이 없으면 통과"

CVE-2026-34953은 가장 황당한 취약점입니다. OAuthManager.validate_token() 함수가 내부 저장소에 없는 토큰에 대해 True를 반환합니다. 기본적으로 저장소는 비어 있으므로, 아무 Bearer 토큰이나 보내면 인증이 통과됩니다.

샌드박스 탈출: 불완전한 차단 목록

CVE-2026-34955는 SubprocessSandbox가 subprocess.run()shell=True로 호출하면서, 차단 목록에 shbash를 포함하지 않은 문제입니다. STRICT 모드에서도 sh -c '' 한 줄이면 임의 명령이 실행됩니다.


🎯 나에게 어떤 영향이 있는가

PraisonAI를 직접 사용하지 않더라도 주목해야 할 이유가 있습니다.

직접 영향권에 있는 사용자는 다음과 같습니다.

  • PraisonAI로 멀티에이전트 워크플로우를 운영하는 개발자
  • PraisonAI 기반 서비스를 외부에 노출한 기업 (MCP 서버 포함)
  • praisonai-agents 패키지를 의존성으로 사용하는 프로젝트

간접적 시사점도 큽니다. 이번 사건은 AI 에이전트 프레임워크의 보안 설계가 얼마나 취약한지를 보여줍니다. execute_code() 같은 코드 실행 기능은 대부분의 에이전트 프레임워크가 제공하지만, 샌드박스 구현의 깊이는 천차만별입니다.

특히 CVE-2026-34953(인증 우회)은 AI 에이전트 프레임워크들이 인증 체계를 얼마나 소홀히 다루는지를 단적으로 보여주는 사례입니다. "토큰이 저장소에 없으면 유효하다"는 로직은 보안 설계의 기본인 "기본 거부(deny by default)" 원칙을 정면으로 위반합니다.


🛡️ 지금 할 수 있는 대응법

  1. 즉시 업그레이드: 두 패키지 모두 최신 버전으로 업데이트합니다.

    • praisonai-agents1.5.90 이상
    • praisonai CLI → 4.5.97 이상
    • pip install --upgrade praisonai praisonai-agents
  2. 외부 노출 점검: PraisonAI 인스턴스가 인터넷에 직접 노출되어 있다면 즉시 접근을 차단합니다. 특히 MCP 서버 엔드포인트의 인증 설정을 확인합니다.

  3. 로그 점검: 비정상적인 execute_code() 호출, 예상치 못한 --mcp 인수, 인증되지 않은 API 접근 기록이 있는지 확인합니다.

  4. 코드 실행 기능 감사: PraisonAI 외에도 사용 중인 AI 에이전트 프레임워크의 코드 실행 기능을 점검합니다. subprocess.run(shell=True)를 사용하는지, 샌드박스가 적절히 구현되어 있는지 확인합니다.

  5. 의존성 스캔 도입: pip-auditsafety 같은 도구로 Python 의존성을 정기적으로 스캔하여 알려진 CVE가 있는 패키지를 조기에 발견합니다.


참고

공유

보안 뉴스 알림 받기

새로운 보안 뉴스를 이메일로 전달합니다.