콘텐츠로 이동

PraisonAI 인증 우회

PraisonAI 인증 우회 thumbnail
CVE-2026-44338은 PraisonAI가 제공하거나 생성하는 legacy Flask API 서버에서 인증이 기본 비활성화된 문제다. 영향 버전은 2.5.6 이상 4.6.34 미만이며, 4.6.34에서 patch됐다. 해당 서버가 사용 중이고 네트워크에서 접근 가능하면 호출자는 토큰 없이 /agents를 조회하고 /chat으로 agents.yaml에...

요약

CVE-2026-44338은 PraisonAI가 제공하거나 생성하는 legacy Flask API 서버에서 인증이 기본 비활성화된 문제다. 영향 버전은 2.5.6 이상 4.6.34 미만이며, 4.6.34에서 patch됐다. 해당 서버가 사용 중이고 네트워크에서 접근 가능하면 호출자는 토큰 없이 /agents를 조회하고 /chat으로 agents.yaml에 구성된 workflow를 실행할 수 있다.

항목 내용
CVE CVE-2026-44338
제품 PraisonAI
취약점 유형 인증 기본 비활성화, unauthenticated workflow execution
영향 버전 2.5.6 이상 4.6.34 미만
patch 버전 4.6.34
취약 구성 legacy Flask API 서버 사용
주요 엔드포인트 /agents, /chat
악용 조건 네트워크에서 해당 서버에 접근 가능
CVSS NVD 기준 v3.x/v4.0 N/A

핵심 위험

/chat은 단순 응답 API가 아니라 agents.yaml에 정의된 workflow를 트리거한다. workflow가 파일, 외부 SaaS, 클라우드 API, 내부 자동화 도구를 호출하도록 구성돼 있으면 노출된 API가 agent 권한을 그대로 빌려 쓰는 진입점이 된다.

취약 지점

취약 지점은 legacy Flask API 서버의 기본 인증 상태다. NVD 설명 기준으로 이 서버가 사용 중이면 접근 가능한 호출자는 토큰 없이 /agents/chat에 접근할 수 있다.

요소 확인된 동작
서버 legacy Flask API server
인증 조건 기본 상태에서 토큰 요구 없음
정보 조회 /agents 접근 가능
workflow 트리거 /chat으로 configured agents.yaml workflow 실행 가능
실행 경계 agents.yaml에 연결된 agent와 도구 권한

요청 형태는 다음 수준에서 식별할 수 있다. workflow 입력값이나 실행 절차는 포함하지 않는다.

GET /agents HTTP/1.1
Host: praisonai.example
POST /chat HTTP/1.1
Host: praisonai.example
Content-Type: application/json

영향

영향은 PraisonAI 프로세스 자체보다 agent workflow가 들고 있는 권한에 좌우된다. 공개 설명에서 직접 확인되는 exploit primitive는 인증 없는 agent 조회와 workflow 트리거다. 임의 명령 실행, 권한 상승, 내부 확산은 일반화할 근거가 부족하다.

다만 agents.yaml에 외부 API 호출, 파일 접근, 자동화 작업, 클라우드 작업이 묶여 있으면 /chat 호출은 해당 작업을 실행하는 경로가 된다. API 키, 환경 변수, 내부 도구 토큰을 agent 런타임이 들고 있는 구성에서는 노출면을 웹 API가 아니라 agent 실행 권한 기준으로 봐야 한다.

대응

가장 직접적인 조치는 PraisonAI를 4.6.34 이상으로 올리는 것이다. legacy Flask API 서버가 필요 없다면 비활성화하고, 계속 써야 한다면 /agents/chat 앞단에서 인증을 강제한다.

python -m pip show praisonai
rg -n '(/agents|/chat|PraisonAI|agents\.yaml)' /var/log /etc/nginx /etc/caddy 2>/dev/null
점검 대상 확인 내용
버전 PraisonAI 4.6.34 이상 적용 여부
서버 노출 legacy Flask API 서버가 인터넷 또는 넓은 내부망에 열려 있는지
인증 API gateway, reverse proxy, 애플리케이션 레벨 인증 적용 여부
workflow agents.yaml이 실행하는 도구와 외부 호출 범위
비밀값 agent 런타임의 환경 변수, API 키, 클라우드 토큰 사용 범위

탐지 포인트

네트워크

프록시, 로드밸런서, WAF 로그에서 인증 헤더 없이 /agents 또는 /chat에 접근한 요청을 찾는다.

SELECT
  timestamp,
  source_ip,
  method,
  path,
  status,
  user_agent
FROM http_access_logs
WHERE path IN ('/agents', '/chat')
  AND COALESCE(authorization, '') = ''
ORDER BY timestamp DESC;

엔드포인트

/agents/chat은 분리해서 본다. /agents는 agent 목록 확인, /chat은 workflow 트리거와 연결된다. 같은 source IP에서 /agents 조회 뒤 /chat 호출이 이어지는 흐름을 우선 확인한다.

SELECT
  source_ip,
  MIN(timestamp) AS first_seen,
  MAX(timestamp) AS last_seen,
  SUM(CASE WHEN path = '/agents' THEN 1 ELSE 0 END) AS agents_hits,
  SUM(CASE WHEN path = '/chat' THEN 1 ELSE 0 END) AS chat_hits
FROM http_access_logs
WHERE path IN ('/agents', '/chat')
GROUP BY source_ip
ORDER BY last_seen DESC;

서버

/chat 호출 시각과 agent 런타임 로그를 맞춰 본다. 같은 시간대의 workflow 실행, agents.yaml 접근, 외부 네트워크 연결, 클라우드 API 호출 증가, 비밀값 접근 실패를 함께 확인한다.

rg -n '(/chat|/agents|agents\.yaml|workflow)' /var/log 2>/dev/null

공개 일정

날짜 내용
2026-05-08 NVD change history의 Initial Analysis 기록
2026-05-12 Sysdig 분석 공개
2026-05-18 게시 기준일

참고 자료