Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as read-level project member
-
ExploitSend client.list tRPC query with project ID
-
ExecutionReceive full Client rows including secret hashes
-
ImpactOffline-verify leaked secrets without audit trail
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V14 - Data Protection Data exposure prevention
MITRE ATT&CK
2 techniques across 2 tactics: Collection, Discovery The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires an authenticated session as a read-level (or higher) member of the target OpenPanel project (CVSS PR:L; the client.list query correctly enforces requireProjectAccess at read level), and the attacker must supply a valid project ID. No user interaction, admin rights, or non-default configuration is needed - the leak is inherent to the unfiltered db.client.findMany call (no select/omit) in versions before 3.0.0. Limiting factors that reduce realistic risk: membership in the project is mandatory (not remote-unauthenticated), and the exposed secrets are ~80-bit random values stored as argon2id hashes, making offline recovery impractical, so the disclosure chiefly enables silent offline verification of already-leaked secrets rather than direct credential theft. |
| Impact | This is a genuinely low-priority, low-real-risk issue despite being a confirmed information disclosure (CWE-200). Every signal agrees: the CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N) yields a base of 5.3 but with only partial confidentiality impact (VC:L, VI:N, VA:N, no scope change); EPSS is 0.22% (12th percentile), indicating very low predicted exploitation; SSVC records Exploitation:none, Automatable:no, Technical Impact:partial; and there is no CISA KEV listing. The vuln.today decision label is 'this_month', consistent with 'fix in normal cycle, not an emergency.' Crucially, the disclosed material is argon2id hashes (memoryCost 19456, timeCost 2) of ~80-bit random (crypto.randomBytes) ingestion secrets, so the advisory itself assesses offline recovery as impractical - the value is defense-in-depth, not direct compromise. The one apparent conflict is patch status: the input says 'Patch: Available from vendor' and a fix commit (e37d15c) is present, while the GHSA advisory body still reads 'fixed in: not yet patched' - the fix exists in commit form; verify the released fixed version (3.0.0 per the description/EUVD) with the vendor. |
| Exploit ScenarioDerived | An authenticated read-level member of an OpenPanel project issues the client.list tRPC query with the project ID and receives full Client rows including the secret column - the argon2id hashes of every ingestion credential they can neither mint nor revoke. A public PoC request exists in the GHSA advisory but is not verified as working exploit code; practical abuse is limited because the hashed secrets are ~80-bit random values, so the main realistic use is silently confirming a secret-to-project pairing obtained through another channel, offline and without any audit trail. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 28, 2026
Read-level project members in OpenPanel before 3.0.0 can retrieve the argon2id hashes of every ingestion credential in a project by calling the client.list tRPC query, which returns full Prisma Client rows because the findMany call carries neither a select nor an omit clause. The vendor advisory includes a PoC reference request showing the expected response shape; it is not verified as working exploit code, there is no CISA KEV entry, and EPSS is 0.22% (12th percentile). Realistic risk is limited: the underlying secrets are roughly 80-bit random values and the stored hashes use argon2id (m=19456, t=2, p=1), so the leak chiefly enables offline confirmation of secrets obtained elsewhere without using the credential against the live API and without leaving an audit trail.
RemediationAI
Upgrade to OpenPanel 3.0.0 or later, which is the fixed release per the vendor advisory and the upstream commit e37d15cc2a2c908667593ff7a2ee40750f74ab5b. That commit defines IPublicClient = Omit<Client, 'secret'> and applies a shared OMIT_SECRET ({ secret: true }) to every read path that serves a response (the client list/get/update service functions), while intentionally leaving the secret on getClientById because credential authentication verifies against the hash; backporting this change requires keeping that exception or authentication breaks. If upgrading immediately is not possible, the advisory's own interim options are to add an explicit select listing only rendered fields (id, name, type, projectId, organizationId, createdAt, updatedAt, ignoreCorsAndSecret), apply a model-level omit: { secret: true } to all Client reads, or introduce a redactClient helper mirroring the existing redactIntegration pattern - the trade-off being that any select-based patch must be kept in sync as new Client columns are added, and the omit must exempt the authentication lookup. Because exploitation requires an authenticated read-level project member, restricting project membership to trusted users limits exposure but does not remove it; there is no vendor-stated alternative to updating as the complete fix. See https://github.com/Openpanel-dev/openpanel/security/advisories/GHSA-78w9-wwff-vxqc for the full advisory.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
OpenPanel exposes its API through tRPC routers backed by Prisma. The vulnerable procedure is client.ts:13-25 in packages/trpc/src/routers/client.ts: it applies protectedProcedure, accepts a projectId, and the generic middleware correctly enforces requireProjectAccess at read level - authorization itself is sound. The defect is at the data-shaping layer: db.client.findMany({ where: { projectId } }) has no select or omit, so every column of the Prisma Client model (packages/db/prisma/schema.prisma:361-377) is serialized to the caller, including the secret column holding the argon2id hash of each ingestion credential (packages/auth/src/password.ts:5-11, memoryCost 19456, timeCost 2, outputLen 32, parallelism 1). This is CWE-200 exposure of sensitive information to an authorized party who should not receive it: minting and revoking credentials are admin-gated, yet read-level members receive the hash material for credentials they can neither mint nor revoke. It also contradicts the project's own redaction rule adopted in its 2026 hardening pass, where every integration read path passes through redactIntegration after a Slack bot token was leaked by returning Prisma rows directly; the client router predates that rule and was missed. The upstream fix (commit e37d15cc2a2c908667593ff7a2ee40750f74ab5b) introduces a public IPublicClient = Omit<Client, 'secret'> type and an OMIT_SECRET constant applied to the read paths that serve responses, while deliberately keeping the secret on getClientById, which client authentication verifies against.
Know when Openpanel gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N
Network tRPC query (AV:N/AC:L) requires an authenticated read-level project member (PR:L), no UI; only partial confidentiality of high-entropy hashes (C:L), no integrity or availability impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
OpenPanel before 3.0.0 contains an information disclosure vulnerability that allows read-level project members to obtain argon2id hashes of ingestion credentials through the client.list tRPC query. Attackers can request client.list with a project ID and receive full Client rows including the secret column, enabling offline verification of leaked secrets without audit trails.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Code execution in OpenPanel's js-runtime component lets an authenticated user who holds project write access escape the
An issue in Open Panel v.0.3.4 allows a remote attacker to escalate privileges via the Fix Permissions function. Rated h
An issue in Open Panel v.0.3.4 allows a remote attacker to escalate privileges via the Fix Permissions function. Rated m
Cross Site Request Forgery vulnerability in Open Panel OpenAdmin v.0.3.4 allows a remote attacker to escalate privileges
Server-side request forgery in OpenPanel before 2.3.0 lets unauthenticated remote attackers coerce the panel server into
Unauthenticated ClickHouse SQL injection in OpenPanel before 3.0.0 lets remote attackers read other tenants' analytics d
Sandbox escape in OpenPanel's JavaScript webhook-template runtime (packages/js-runtime) allows an authenticated project
Authenticated remote code execution in OpenPanel before 2.3.0 allows any project member with read access to escape the m
Unauthenticated information disclosure in OpenPanel (openpanel-dev/openpanel) exposes argon2id password hashes and full
Unauthenticated SSRF in OpenPanel before 2.3.0 exposes two utility endpoints - /misc/favicon and /misc/og - that blindly
Cross-tenant data exposure in OpenPanel before 3.0.0 lets any authenticated user read other projects' profiles, events a
Read-level project members in OpenPanel before 3.0.0 can retrieve plaintext integration secrets - Slack bot tokens, inco
EUVD-2026-110513
GHSA-5qgc-257q-crrq
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB