flawopen.com/Teardowns/cve-2026-5027-langflow-multipart-file-write
Langflow CVE-2026-5027: अपलोड में path traversal
CVE-2026-5027 में path traversal से Langflow upload area के बाहर फ़ाइल लिखी जा सकती थी। GTIG ने शोषण की सूचना दी; 1.9.0 या नए संस्करण पर जाएँ।[1], [2], [6]
डाकघर ऐसा पार्सल लेता है जिसका लेबल और गंतव्य भेजने वाला चुनता है। यदि कर्मचारी अंतिम पता जाँचे बिना उस लेबल को डाकघर के फ़ोल्डर से जोड़ दे, तो पार्सल बाहर जा सकता है। Langflow का upload route multipart फ़ाइल नाम पर भरोसा करता था, और storage layer यह अलग से नहीं जाँचती थी कि अंतिम path अनुमत फ़ोल्डर के भीतर है।[2], [3]
इस पेज के मुख्य शब्द
CVE-2026-5027- Langflow के POST /api/v2/files multipart नाम में path traversal के लिए Tenable का दिया पहचानकर्ता:
CWE-22, CVSS 3.1 8.8 और कम विशेषाधिकार आवश्यक।[1], [2] Multipart फ़ाइल नाम- Multipart upload के Content-Disposition में client द्वारा दिया नाम। यह अविश्वसनीय इनपुट है, सुरक्षित फ़ाइल path नहीं।[1], [2]
फ्रेमवर्क मैपिंग
- इस गाइड में बताई गई कमजोरी के लिए CWE संदर्भ: CWE-22
मूल कारण विश्लेषण (Root Cause)
Tenable का CVE-2026-5027 रिकॉर्ड बताता है कि POST /api/v2/files traversal घटकों वाला multipart नाम स्वीकार कर इच्छित directory के बाहर लिख सकता था। सुरक्षा सीमा API route और local storage दोनों में है: URL parameter validation, multipart Content-Disposition से आए नाम को validate नहीं करती; नाम को folder से जोड़ना containment सिद्ध नहीं करता। CVE vector में कम privilege (PR:L) आवश्यक है; यह दावा न करें कि CVE स्वयं authentication bypass करती है। Google GTIG CVE-2026-5027 को वास्तविक हमलों में पुष्ट शोषण वाली कमजोरियों में रखता है, लेकिन उसका सार्वजनिक सार सार्वभौमिक code execution सिद्ध नहीं करता। Arbitrary file write का अधिक गंभीर असर writable paths, process privileges और deployment configuration पर निर्भर है; इसे conditional impact कहें, guaranteed RCE नहीं। Langflow का संबंधित GHSA CVE-2026-33309 सूचीबद्ध करता है और 1.9.0 fix की ओर संकेत करता है। यह लेख Tenable और GTIG के अनुसार CVE-2026-5027 इस्तेमाल करता है और identifier अंतर स्पष्ट रखता है। Langflow के merged patch में API पर नाम validation और storage layer में canonical path containment है, directory creation से पहले भी।[1], [2], [3], [4], [5], [6]
हमले का चरण-दर-चरण प्रवाह
सोर्स कोड: कमज़ोर बनाम सुरक्षित कार्यान्वयन
ये source-shaped संक्षिप्त उदाहरण हैं, upstream का शब्दशः diff नहीं। कमजोर flow client के filename को storage path मानता है। सुरक्षित pattern नाम validate करता है और storage layer में canonical destination को canonical root के भीतर जाँचता है; upstream PR separators और control characters भी रोकता है तथा directory बनाने से पहले containment जाँचता है। HTTP layer validation के बावजूद storage जाँच बनाए रखें। उदाहरण के लिए Path.is_relative_to वाला Python चाहिए और hostile writable directories में यह अकेले check/use race नहीं रोकता। Production में race-resistant file operations और सख्त permissions रखें। सुरक्षा path containment है, केवल filename blacklist नहीं।[3], [2], [4], [7]
सोर्स अंश: Langflow api/v2/files.py और services/storage/local.py — security boundary का संक्षिप्त उदाहरण
# vulnerable data flow का सरल उदाहरण।
new_filename = file.filename
file_path = folder_path / new_filename
await write_upload(file, file_path)
from pathlib import Path
def confined_upload_path(root: Path, client_name: str | None) -> Path:
name = Path(client_name or "").name
if not name or name in {".", ".."} or chr(0) in name:
raise ValueError("invalid upload filename")
base = root.resolve()
target = (base / name).resolve()
if not target.is_relative_to(base):
raise ValueError("upload path escapes storage root")
return target
# बनाने या लिखने से ठीक पहले storage boundary पर इसे call करें।
target = confined_upload_path(upload_root, file.filename)
await write_upload(file, target)
इंजीनियरिंग और सिस्टम सुरक्षा चेकलिस्ट
- ✓Langflow को 1.9.0 या नए पर upgrade करें और deployed image में langflow तथा langflow-base की installed versions जाँचें।[2], [4]
- ✓Multipart filenames को URL parameters से अलग validate करें; separators, control characters, empty names और invalid encodings reject करें।[1], [2], [3]
- ✓Storage layer में destination resolve करें और directory creation तथा file write से पहले upload root के भीतर containment लागू करें।[3], [4], [7]
- ✓Traversal, absolute paths, alternate separators, null bytes, Unicode और symlink destination जाँचें; temporary root के बाहर कोई file नहीं बननी चाहिए।[3], [7]
- ✓Langflow को dedicated least-privilege service account से चलाएँ; uploads को non-executable रखें और code, scheduled-task directories तथा credentials से अलग रखें।[2], [4]
- ✓Internet exposure और upload logs में root से बाहर के names देखें; जाँच करें और secrets तभी rotate करें जब host access का evidence हो।[6], [2]
- ✓Identifier mapping स्पष्ट रखें: Tenable/GTIG
CVE-2026-5027कहते हैं; Langflow का संबंधित GHSACVE-2026-33309सूचीबद्ध करता है। रिकॉर्ड जाँचे बिना severity या versions न मिलाएँ।[1], [2], [4], [5], [6]
स्रोत
- CVE रिकॉर्ड — CVE-2026-5027
- Tenable TRA-2026-26 — Langflow multipart upload path traversal
- Langflow merged PR #12227 — filename validation और path containment
- Langflow GHSA-g2j9-7rj2-gm6c — संबंधित advisory, CVE-2026-33309
- CVE रिकॉर्ड — CVE-2026-33309
- Google GTIG — AI युग में vulnerability discovery और exploitation के रुझान
- MITRE CWE-22 — restricted directory में path को सीमित करने में विफलता