CVE-2026-33497

HIGHPre-NVD 8.78.7
EchelonGraph scoreMEDIUM confidence

This high-severity CVE scores 8.7 under the CNA's CVSS v4.0 (NVD's own analysis pending). EPSS exploit probability: 0.1%, top 84% of all CVEs by exploit prediction. GitHub Security Advisory data not yet ingested — confidence will rise once GHSA publishes (typical lag: hours to days for open-source ecosystem CVEs; never for infrastructure-only CVEs).

Triggered by: NVD CVSS baseline
Sources: cvss_v4, epss
Elevated
8.7
EchelonGraph verdictPlan a fixSerious severity, but no confirmed exploitation yet.
  • High severity, but no confirmed exploitation yet
CISA-KEV: Not listedEPSS: 8%CVSS: 8.7Exploit: NoneExposed: 0

No vendor fix yet — apply a workaround or compensating control (WAF / firewall / segmentation) and watch for a patch.

langflow: /profile_pictures/{folder_name}/{file_name} endpoint file reading

Vulnerability

Path Traversal in GET /api/v1/files/profile_pictures/{folder_name}/{file_name}

The download_profile_picture function in src/backend/base/langflow/api/v1/files.py constructed file paths by directly concatenating the user-supplied folder_name and file_name path parameters without sanitization or boundary validation. The resulting path was passed to the filesystem without verifying it remained within the intended directory.

An unauthenticated attacker could supply traversal sequences (e.g. ../secret_key) to navigate outside the profile pictures directory and read arbitrary files on the server filesystem.

This exposed the server to:

  • Sensitive file disclosure — any file readable by the application process could be retrieved
  • Secret key exfiltration — the application's secret_key file, used as JWT signing material, could be read directly via ../secret_key
  • Authentication bypass — with the secret_key in hand, an attacker can forge valid JWT tokens and authenticate as any user, including administrators


Proof of Concept

curl --path-as-is 'http://:7860/api/v1/files/profile_pictures/../secret_key'

A successful response returns the raw secret key value used to sign all JWT authentication tokens in the instance.


Fix

The fix was applied in src/backend/base/langflow/api/v1/files.py (PR #12263).

Two layers of defense were introduced:

1. Typed path validation — the folder_name and file_name parameters were changed from plain str to ValidatedFolderName and ValidatedFileName annotated types that reject traversal characters at the FastAPI input layer.

2. Path containment checkPath.name is used to strip any directory component from the inputs before path construction, and Path.is_relative_to() verifies the resolved path remains within the allowed base directory. This replaces the previous startswith() check, which was susceptible to prefix-ambiguity bugs.

@router.get("/profile_pictures/{folder_name}/{file_name}")
 async def download_profile_picture(
  • folder_name: str,
  • file_name: str,
+ folder_name: ValidatedFolderName, + file_name: ValidatedFileName, settings_service: Annotated[SettingsService, Depends(get_settings_service)], ):

-        file_path = (config_path / "profile_pictures" / folder_name / file_name).resolve()
+        safe_folder = Path(folder_name).name
+        safe_file = Path(file_name).name
+        file_path = (config_path / "profile_pictures" / safe_folder / safe_file).resolve()

allowed_base = (config_path / "profile_pictures").resolve()

  • if not str(file_path).startswith(str(allowed_base)):
  • raise HTTPException(status_code=404, detail="Profile picture not found")
+ if not file_path.is_relative_to(allowed_base): + raise HTTPException(status_code=404, detail="Profile picture not found")


Workarounds

If you cannot upgrade immediately, restrict network access to the /api/v1/files/profile_pictures/ endpoint at the reverse-proxy or firewall level. Rotating the secret_key is strongly recommended if exposure cannot be ruled out.


Acknowledgements

We thank the security researcher who responsibly disclosed this vulnerability.

CVSS v3
8.7
EG Score
8.7(medium)
EPSS
94.1%
KEV
Not listed

Published

March 20, 2026

Last Modified

March 20, 2026

Vendor Advisories for CVE-2026-33497(1)

These vendors published their own advisory mentioning this CVE — often with vendor-specific remediation steps + affected product lists not in NVD.

Affected Packages

(1 across 1 ecosystem)
PyPI(1)
PackageVulnerable rangeFixed inDependents
langflow0.0.31 ... 1.7.0 (277 versions)1.7.1

Data Freshness Timeline

(refreshed 9× in last 7d / 38× in last 30d)

Each row is a source pipeline that fetched or updated this CVE on that date, with what changed. For example, "NVD update" means NVD published or revised its analysis for this CVE; "MITRE cvelistV5" means we ingested or refreshed it from the CNA feed. Most recent first.

  1. 2026-07-12 05:46 UTCEPSS rescore
  2. 2026-07-11 08:27 UTCEPSS rescore
  3. 2026-07-09 19:10 UTCEPSS rescore
  4. 2026-07-08 15:15 UTCEPSS rescore
  5. 2026-07-07 13:46 UTCEPSS rescore
  6. 2026-07-06 16:27 UTCEPSS rescore
  7. 2026-07-06 16:27 UTCEPSS rescore
  8. 2026-07-06 02:23 UTCEPSS rescore
  9. 2026-07-06 02:23 UTCEPSS rescore
  10. 2026-07-05 02:30 UTCEPSS rescore
  11. 2026-07-04 06:31 UTCEPSS rescore
  12. 2026-07-01 15:06 UTCEPSS rescore
  13. 2026-06-30 23:22 UTCEPSS rescore
  14. 2026-06-29 14:06 UTCEPSS rescore
  15. 2026-06-29 14:06 UTCEPSS rescore
  16. 2026-06-29 05:32 UTCOSV refresh
  17. 2026-06-28 14:07 UTCEPSS rescore
  18. 2026-06-28 14:07 UTCEPSS rescore
  19. 2026-06-28 04:56 UTCEPSS rescore
  20. 2026-06-28 04:56 UTCEPSS rescore
  21. 2026-06-27 03:08 UTCEPSS rescore
  22. 2026-06-25 13:49 UTCEPSS rescore
  23. 2026-06-25 13:49 UTCEPSS rescore
  24. 2026-06-24 14:05 UTCEPSS rescore
  25. 2026-06-23 21:33 UTCEPSS rescore
Show 30 more
  1. 2026-06-23 21:33 UTCEPSS rescore
  2. 2026-06-22 14:25 UTCEPSS rescore
  3. 2026-06-22 14:25 UTCEPSS rescore
  4. 2026-06-21 01:59 UTCEPSS rescore
  5. 2026-06-18 17:52 UTCEPSS rescore
  6. 2026-06-18 17:52 UTCEPSS rescore
  7. 2026-06-17 17:53 UTCEPSS rescore
  8. 2026-06-16 17:52 UTCEPSS rescore
  9. 2026-06-15 17:49 UTCEPSS rescore
  10. 2026-06-14 23:18 UTCEPSS rescore
  11. 2026-06-13 23:00 UTCEPSS rescore
  12. 2026-06-12 23:12 UTCEPSS rescore
  13. 2026-06-12 23:12 UTCEPSS rescore
  14. 2026-06-11 23:41 UTCEG score recompute
  15. 2026-06-11 14:00 UTCEPSS rescore
  16. 2026-06-10 22:18 UTCEPSS rescore
  17. 2026-06-10 18:43 UTCEG score recompute
  18. 2026-06-10 13:22 UTCEPSS rescore
  19. 2026-06-10 05:38 UTCEG score recompute
  20. 2026-06-09 16:26 UTCEG score recompute
  21. 2026-06-08 15:36 UTCEG score recompute 8.70
  22. 2026-06-08 14:17 UTCEPSS rescore
  23. 2026-06-08 14:17 UTCEPSS rescore
  24. 2026-06-07 15:25 UTCEPSS rescore
  25. 2026-06-07 15:25 UTCEPSS rescore
  26. 2026-06-07 15:25 UTCEPSS rescore
  27. 2026-06-06 13:47 UTCEPSS rescore
  28. 2026-06-06 13:47 UTCEPSS rescore
  29. 2026-06-06 01:53 UTCEG score recompute
  30. 2026-06-06 01:53 UTCOSV refresh

Frequently asked(5)

What is CVE-2026-33497?
CVE-2026-33497 is a high vulnerability published on March 20, 2026. langflow: /profilepictures/{foldername}/{file_name} endpoint file reading Vulnerability Path Traversal in GET /api/v1/files/profilepictures/{foldername}/{file_name} The downloadprofilepicture function in src/backend/base/langflow/api/v1/files.py constructed file paths by directly concatenating the…
When was CVE-2026-33497 disclosed?
CVE-2026-33497 was first published in the National Vulnerability Database on March 20, 2026. EchelonGraph re-ingests CVE updates from NVD on a 2-hour cycle, so this page reflects the latest published state.
Is CVE-2026-33497 actively exploited?
CVE-2026-33497 is not currently on CISA's Known Exploited Vulnerabilities catalog. FIRST EPSS estimates a 94.1% percentile likelihood of exploitation in the next 30 days — higher percentiles indicate greater predicted risk.
What is the CVSS score of CVE-2026-33497?
CVE-2026-33497 has a CVSS v4.0 base score of 8.7 (CNA self-assessment; NVD's own analysis pending).
How do I remediate CVE-2026-33497?
Patch to the fixed version published by the affected vendor. Where vendor advisories exist for CVE-2026-33497, EchelonGraph cross-links them in the Vendor Advisories panel below — those typically contain the canonical remediation steps, fixed version numbers, and any vendor-specific mitigations.

Dependency Blast Radius

See which npm, PyPI, Go, and Maven packages are affected by CVE-2026-33497

Explore →

Is Your Infrastructure Affected by CVE-2026-33497?

EchelonGraph automatically scans your cloud infrastructure and maps CVE exposure using blast radius analysis.