🇰🇷 한글 설명
Kestra의 로컬 내부 저장소 백엔드에서 경로 검증 로직의 결함으로 인해 발생하는 경로 탐색(Path Traversal) 취약점입니다. 공격자는 윈도우 스타일의 백슬래시(..)를 사용하여 검증을 우회함으로써 서버의 임의 파일을 읽을 수 있으며, 이는 데이터베이스 및 비밀번호 등 민감한 정보 유출로 이어질 수 있습니다.
💡 쉬운 설명
파일 경로를 검사할 때 특수 문자를 처리하는 순서가 잘못되어 보안 검사를 통과하는 방법이 존재합니다. 이를 통해 해커가 서버에 저장된 중요한 비밀번호나 다른 사용자의 파일을 몰래 훔쳐볼 수 있습니다.
🇺🇸 원문 (English)
Kestra is an open-source, event-driven orchestration platform. Prior to 1.0.45 and 1.3.23, the local internal-storage backend validates user-supplied paths for .. traversal before it converts Windows-style backslashes to forward slashes. An attacker can therefore smuggle a traversal sequence past the guard using backslashes (..\..\..\); the guard sees a harmless string, and the path is only rewritten to ../../../ after validation, immediately before the file is opened. Any authenticated user who can view an execution (the lowest-privilege role) can call GET /api/v1/{tenant}/executions/{executionId}/file?path=… and read any file on the server filesystem readable by the Kestra process, outside the storage sandbox and across every tenant and namespace. This includes the embedded H2 database (all flows, all users, all stored secrets), internal storage of every other tenant/namespace, mounted secret files, and the process environment (/proc/self/environ) which contains configured database and secret-backend credentials. It is a complete breach of Kestra's storage isolation and multi-tenancy boundary. This vulnerability is fixed in 1.0.45 and 1.3.23.
📍 영향받는 시스템
Kestra versions prior to 1.0.45 and 1.3.23
⚔️ 공격 벡터
인증된 사용자가 백슬래시(..)를 포함한 특수 경로를 API 요청에 삽입하여 검증을 우회하는 방식
🛡️ 대응 방법
Kestra를 1.0.45 또는 1.3.23 이상의 최신 버전으로 업데이트하십시오.
🔧 검증 코드
명령어 실행 결과로 1.0.45 또는 1.3.23 이상의 버전 번호가 출력되면 취약점이 해결된 상태입니다.
curl -s http://localhost:8080/api/v1/version | grep -E '1.0.45|1.3.23'