🇰🇷 한글 설명
PraisonAI 2.6.0 이상 4.6.59 미만 버전의 템플릿 로더는 github:owner/repo/template@ref 형식의 URI를 검증 없이 처리합니다. 조작된 ref(예: ../ 경로 순회)를 통해 캐시 디렉터리 밖의 경로에 파일을 쓰거나 임의의 외부 디렉터리를 삭제할 수 있습니다. 4.6.59 버전에서 패치되었습니다.
💡 쉬운 설명
PraisonAI의 템플릿 기능에 입력값 검증이 빠져 있어, 악의적인 템플릿 주소로 프로그램 바깥의 폴더를 지울 수 있습니다. 해당 버전을 사용 중이라면 즉시 4.6.59 이상으로 업데이트해야 합니다.
🇺🇸 원문 (English)
PraisonAI is a multi-agent teams system. From version 2.6.0 to before version 4.6.59, PraisonAI's template loader accepts GitHub template URIs with refs, for example github:owner/repo/
[email protected]. The resolver stores the user-controlled template path and ref verbatim, and the cache layer later joins those values into ~/.praison/cache/templates/github/<owner>/<repo>/<template>/<ref> without normalizing each segment or checking that the final path remains inside the template cache root. A crafted ref such as ../../../../../../outside-delete-target therefore escapes the cache directory. The first load can write .cache_meta.json outside the cache. If the normal cache hierarchy for the same owner/repo/template has already been created, the same path reaches shutil.rmtree(cache_path) and removes an attacker-selected outside directory before replacing it with cache metadata. This issue has been patched in version 4.6.59.
📍 영향받는 시스템
PraisonAI 2.6.0 이상 4.6.59 미만 버전 (Python 패키지)
⚔️ 공격 벡터
악의적인 ref(예: ../../../../outside-delete-target)가 포함된 github 템플릿 URI를 로드하도록 유도하여 경로 순회로 외부 디렉터리를 삭제하거나 파일을 생성
🛡️ 대응 방법
PraisonAI를 4.6.59 이상 버전으로 업그레이드하고, 신뢰할 수 없는 템플릿 URI 사용을 피하며, 캐시 디렉터리 권한을 제한
🔧 검증 코드
출력된 Version 값이 4.6.59 미만이면 취약한 버전이므로 업그레이드가 필요하고, 4.6.59 이상이면 패치가 적용된 것입니다.
pip show praisonai 2>/dev/null | grep -i '^version'