Langfuse: Improper role-based-access control in Langfuse LLM connection management allowed users of role “member” to retrieve stored LLM provider API keys
Langfuse is an open source large language model engineering platform. From version 3.68.0 to before version 3.167.0, there is a role-based-access control flaw in the LLM connection update flow. An authenticated, low-privileged user of role “member” in a project could request the update of an existing LLM connection to an attacker-controlled baseUrl, causing Langfuse to reuse the stored provider secret and redirect the test request to an attacker-controlled endpoint. This could expose the plaintext provider LLM API key for that connection. The attack is only possible if a user is already part of a project and has “member” scoped access. This issue has been patched in version 3.167.0.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2026-41487
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 5 Nov 2026, 03:30 UTC · Revision 1
Source evidence
Langfuse: Improper role-based-access control in Langfuse LLM connection management allowed users of role “member” to retrieve stored LLM provider API keys
core-osv · Original sourcePublished 8 May 2026, 14:27 UTC
Langfuse is an open source large language model engineering platform. From version 3.68.0 to before version 3.167.0, there is a role-based-access control flaw in the LLM connection update flow. An authenticated, low-privileged user of role “member” in a project could request the update of an existing LLM connection to an attacker-controlled baseUrl, causing Langfuse to reuse the stored provider secret and redirect the test request to an attacker-controlled endpoint. This could expose the plaintext provider LLM API key for that connection. The attack is only possible if a user is already part of a project and has “member” scoped access. This issue has been patched in version 3.167.0.
osv:CVE-2026-41487
Complete source record
{
"id": "222b7139fe40434813c6879e89ad5806117f2eb6fb30c1777855d4bad366ecd8",
"url": "https://osv.dev/vulnerability/CVE-2026-41487",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "Langfuse: Improper role-based-access control in Langfuse LLM connection management allowed users of role “member” to retrieve stored LLM provider API keys",
"summary": "Langfuse is an open source large language model engineering platform. From version 3.68.0 to before version 3.167.0, there is a role-based-access control flaw in the LLM connection update flow. An authenticated, low-privileged user of role “member” in a project could request the update of an existing LLM connection to an attacker-controlled baseUrl, causing Langfuse to reuse the stored provider secret and redirect the test request to an attacker-controlled endpoint. This could expose the plaintext provider LLM API key for that connection. The attack is only possible if a user is already part of a project and has “member” scoped access. This issue has been patched in version 3.167.0.",
"evidence": "osv:CVE-2026-41487",
"products": [],
"severity": "medium",
"structured": {
"id": "CVE-2026-41487",
"aliases": [
"CVE-2026-41487",
"GHSA-2524-j966-gfgh"
],
"metrics": [
{
"type": "CVSS_V4",
"score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/langfuse/langfuse",
"type": "GIT",
"events": [
{
"introduced": "aae1909466a4f676d77621a6349905d16b73873e"
},
{
"fixed": "dd632fea9efe6cc9e125f3dcec051d4f3bab7669"
},
{
"fixed": "7527bb0d84bc0a3dc24a4b16d22ed2e46e6dddff"
},
{
"fixed": "e12386f9d4368bbfff24a4ad7fd53641091605ff"
}
],
"database_specific": {
"extracted_events": [
{
"cpe": "cpe:2.3:a:langfuse:langfuse:*:*:*:*:*:*:*:*",
"range": [
{
"introduced": "3.68.0"
},
{
"fixed": "3.167.0"
}
],
"source": "CPE_RANGE"
},
{
"range": [
{
"fixed": "7527bb0d84bc0a3dc24a4b16d22ed2e46e6dddff"
}
],
"source": "REFERENCES_COMMIT"
},
{
"range": [
{
"fixed": "e12386f9d4368bbfff24a4ad7fd53641091605ff"
}
],
"source": "REFERENCES_COMMIT"
},
{
"range": [
{
"fixed": "dd632fea9efe6cc9e125f3dcec051d4f3bab7669"
}
],
"source": "REFERENCES_TAG",
"original_tag": "v3.167.0"
}
]
}
}
],
"versions": [
"v3.164.0",
"v3.163.0",
"v3.162.0",
"v3.161.0",
"v3.160.0",
"v3.159.0",
"v3.158.0",
"v3.157.0",
"v3.156.0",
"v3.155.1",
"v3.155.0",
"v3.154.0",
"v3.154.1",
"v3.153.0",
"v3.152.0",
"v3.151.0",
"v3.150.0",
"v3.149.0",
"v3.148.0",
"v3.147.0",
"v3.146.0",
"v3.145.0",
"v3.144.0",
"v3.143.0",
"v3.142.0",
"v3.141.0",
"v3.140.0",
"v3.139.0",
"v3.138.0",
"v3.137.0",
"v3.136.0",
"v3.135.1",
"v3.135.0",
"v3.134.0",
"v3.133.0",
"v3.132.0",
"v3.131.0",
"v3.130.0",
"v3.129.0",
"v3.128.0",
"v3.127.0",
"v3.126.1",
"v3.126.0",
"v3.125.0",
"v3.124.1",
"v3.124.0",
"v3.123.1",
"v3.123.0",
"v3.122.2",
"v3.122.1",
"v3.122.0",
"v3.121.0",
"v3.120.0",
"v3.119.1",
"v3.119.0",
"v3.118.0",
"v3.117.2",
"v3.117.1",
"v3.117.0",
"v3.116.1",
"v3.116.0",
"v3.115.0",
"v3.114.0",
"v3.113.0",
"v3.112.0",
"v3.111.0",
"v3.110.0",
"v3.109.0",
"v3.108.0",
"v3.107.0",
"v3.106.4",
"v3.106.3",
"v3.106.2",
"v3.106.1",
"v3.106.0",
"v3.105.0",
"v3.104.0",
"v3.103.0",
"v3.102.0",
"v3.101.0",
"v3.100.0",
"v3.99.0",
"v3.98.2",
"v3.98.1",
"v3.98.0",
"v3.97.5",
"v3.97.4",
"v3.97.3",
"v3.97.2",
"v3.97.1",
"v3.97.0",
"v3.96.2",
"v3.96.1",
"v3.96.0",
"v3.95.2",
"v3.95.1",
"v3.95.0",
"v3.94.0",
"v3.93.0",
"v3.92.1",
"v3.92.0",
"v3.91.0",
"v3.90.0",
"v3.89.0",
"v3.88.1",
"v3.88.0",
"v3.87.1",
"v3.87.0",
"v3.86.1",
"v3.86.0",
"v3.85.2",
"v3.85.1",
"v3.85.0",
"v3.84.0",
"v3.83.0",
"v3.82.0",
"v3.81.1",
"v3.81.0",
"v3.80.1",
"v3.80.0",
"v3.79.1",
"v3.79.0",
"v3.78.2",
"v3.78.1",
"v3.78.0",
"v3.77.0",
"v3.76.0",
"v3.75.4",
"v3.75.3",
"v3.75.2",
"v3.75.1",
"v3.75.0",
"v3.74.0",
"v3.73.1",
"v3.73.0",
"v3.72.1",
"v3.72.0",
"v3.71.0",
"v3.70.0",
"v3.69.0",
"v3.68.0"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-41487.json"
}
}
],
"modified": "2026-10-28T02:30:42.268399493Z",
"provider": "osv",
"references": [
"https://github.com/langfuse/langfuse/releases/tag/v3.167.0",
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/41xxx/CVE-2026-41487.json",
"https://github.com/langfuse/langfuse/security/advisories/GHSA-2524-j966-gfgh",
"https://nvd.nist.gov/vuln/detail/CVE-2026-41487",
"https://github.com/langfuse/langfuse/commit/7527bb0d84bc0a3dc24a4b16d22ed2e46e6dddff",
"https://github.com/langfuse/langfuse/commit/e12386f9d4368bbfff24a4ad7fd53641091605ff",
"https://github.com/langfuse/langfuse/pull/13027",
"https://github.com/langfuse/langfuse/pull/13055"
],
"provider_metadata": {
"cwe_ids": [
"CWE-284"
],
"cna_assigner": "GitHub_M",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/41xxx/CVE-2026-41487.json"
}
},
"related_cves": [
{
"value": "CVE-2026-41487",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 509866,
"published_at": "2026-05-08T14:27:48.588+00:00"
}