← CVE Veritabanı

CVE-2026-80104

Kritik

Teknik Veri (Otomatik)

CVSS Skoru
9.8
EPSS
0.7%
CWE
CWE-22
KEV Durumu
Hayır

Yayım tarihi: 25 Ağustos 2026

DB-GPT, yüklenen bir beceri için varış yolunu, multipart filename'den oluşturur ancak bunu yükleme dizinine sınırlamaz. packages/dbgpt-app/src/dbgpt_app/openapi/api_v1/agentic_data_api.py dosyasındaki skill_upload, file.filename'i verilen şekilde alır ve istek gövdesini upload_dir / filename'ye yazar. Bu operatörle oluşturulan bir yol, sağ operand mutlak olduğunda sol operandı atlar ve aksi takdirde ebeveyn referanslarını izler, böylece ../../../tmp/x veya /tmp/x gibi bir dosya adı, istenen dizinin dışında çözülür; sonuç hiçbir şekilde kanonikleştirilmez, upload kök dizininin altında kalıp kalmadığı kontrol edilmez veya .py soneki engellenmez. Rotanın tek bağımlılığı, dbgpt_serve/utils/auth.py dosyasındaki get_user_from_headers'dir, bu, bir user_id başlığı sağlanıp sağlanmadığına bakılmaksızın, admin rolünü taşıyan bir istek döndürür, böylece uç nokta kimlik bilgileriyle erişilebilir. Uzak bir saldırgan, hiçbir hesaba sahip olmadan, sunucu işleminin yazabileceği herhangi bir yola saldırgan tarafından kontrol edilen baytları yazabilir, uygulama paketi içinde yeni bir Python modülü yerleştirebilir veya uygulamanın zaten ithal ettiği bir modülü değiştirebilir ve bu modül sonraki ithalatında kod yürütmesini sunucu işleminde elde edebilir.

Orijinal açıklama (İngilizce)

DB-GPT builds the destination path for an uploaded skill from the multipart filename without constraining it to the upload directory. skill_upload in packages/dbgpt-app/src/dbgpt_app/openapi/api_v1/agentic_data_api.py takes file.filename as given and writes the request body to upload_dir / filename. A path composed with that operator discards the left operand when the right one is absolute and follows parent references otherwise, so a filename such as ../../../tmp/x or /tmp/x resolves outside the intended directory; nothing canonicalises the result, checks that it remains under the upload root, or prevents a .py suffix. The route's only dependency is get_user_from_headers in dbgpt_serve/utils/auth.py, which returns a request carrying the admin role whether or not a user_id header is supplied, so the endpoint is reachable without credentials. A remote attacker holding no account can therefore write attacker-controlled bytes to any path the server process can write, place a new Python module inside the application package or replace one the application already imports, and obtain code execution in the server process when that module is next imported.

Bu CVE için henüz editoryal inceleme yapılmadı. Sadece otomatik teknik veri gösteriliyor.