OpenPanel report.get Returns Any Report by Identifier Without Checking Project Access
The report.get procedure in packages/trpc/src/routers/report.ts accepted only a reportId and returned getReportById(reportId) directly. The enforceAccess middleware in packages/trpc/src/trpc.ts evaluates membership only when the input carries a projectId or organizationId key, so an input consisting of a reportId alone passed through unchecked, and getReportById in packages/db/src/services/reports.service.ts performs a findUnique on the report id with no project scoping. Any authenticated user could therefore read the full configuration of any saved report on the instance, including the owning projectId, event series, filters, breakdowns and formulas, by supplying its identifier. The adjacent update, delete and duplicate procedures resolve the report first and check getProjectAccess against the report's own projectId, so the omission was specific to this procedure.
- Products
- openpanel
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2026-77768
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 31 Oct 2026, 13:43 UTC · Revision 1
Source evidence
OpenPanel report.get Returns Any Report by Identifier Without Checking Project Access
core-cve · Original sourcePublished 21 Aug 2026, 11:05 UTC
The report.get procedure in packages/trpc/src/routers/report.ts accepted only a reportId and returned getReportById(reportId) directly. The enforceAccess middleware in packages/trpc/src/trpc.ts evaluates membership only when the input carries a projectId or organizationId key, so an input consisting of a reportId alone passed through unchecked, and getReportById in packages/db/src/services/reports.service.ts performs a findUnique on the report id with no project scoping. Any authenticated user could therefore read the full configuration of any saved report on the instance, including the owning projectId, event series, filters, breakdowns and formulas, by supplying its identifier. The adjacent update, delete and duplicate procedures resolve the report first and check getProjectAccess against the report's own projectId, so the omission was specific to this procedure.
cve:CVE-2026-77768
openpanel
Fixed versions: Not specified
Complete source record
{
"id": "f236011555cacc3907354abe6a5ee95616dd821fac596281f6b07b293c456779",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-77768",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "OpenPanel report.get Returns Any Report by Identifier Without Checking Project Access",
"summary": "The report.get procedure in packages/trpc/src/routers/report.ts accepted only a reportId and returned getReportById(reportId) directly. The enforceAccess middleware in packages/trpc/src/trpc.ts evaluates membership only when the input carries a projectId or organizationId key, so an input consisting of a reportId alone passed through unchecked, and getReportById in packages/db/src/services/reports.service.ts performs a findUnique on the report id with no project scoping. Any authenticated user could therefore read the full configuration of any saved report on the instance, including the owning projectId, event series, filters, breakdowns and formulas, by supplying its identifier. The adjacent update, delete and duplicate procedures resolve the report first and check getProjectAccess against the report's own projectId, so the omission was specific to this procedure.",
"evidence": "cve:CVE-2026-77768",
"products": [
{
"name": {
"value": "openpanel",
"evidence": "/containers/cna/affected/0/product"
},
"prerequisites": [],
"fixed_versions": [],
"affected_versions": []
}
],
"severity": "high",
"structured": {
"id": "CVE-2026-77768",
"aliases": [
"CVE-2026-77768"
],
"metrics": [
{
"format": "CVSS",
"cvssV3_1": {
"scope": "UNCHANGED",
"version": "3.1",
"baseScore": 6.5,
"attackVector": "NETWORK",
"baseSeverity": "MEDIUM",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N",
"integrityImpact": "NONE",
"userInteraction": "NONE",
"attackComplexity": "LOW",
"availabilityImpact": "NONE",
"privilegesRequired": "LOW",
"confidentialityImpact": "HIGH"
}
},
{
"format": "CVSS",
"cvssV4_0": {
"version": "4.0",
"baseScore": 7.1,
"attackVector": "NETWORK",
"baseSeverity": "HIGH",
"vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N",
"userInteraction": "NONE",
"attackComplexity": "LOW",
"attackRequirements": "NONE",
"privilegesRequired": "LOW",
"subIntegrityImpact": "NONE",
"vulnIntegrityImpact": "NONE",
"subAvailabilityImpact": "NONE",
"vulnAvailabilityImpact": "NONE",
"subConfidentialityImpact": "NONE",
"vulnConfidentialityImpact": "HIGH"
}
}
],
"affected": [
{
"repo": "https://github.com/Openpanel-dev/openpanel",
"vendor": "Openpanel-dev",
"product": "openpanel",
"versions": [
{
"status": "affected",
"version": "0",
"lessThan": "0a51b6805eed0b3da8376175acd5fa3d26819cb6",
"versionType": "git"
}
],
"packageURL": "pkg:github/Openpanel-dev/openpanel",
"programFiles": [
"packages/trpc/src/routers/report.ts",
"packages/db/src/services/reports.service.ts"
],
"defaultStatus": "unaffected"
}
],
"modified": "2026-10-27T10:14:35.597Z",
"provider": "cve",
"references": [
"https://github.com/Openpanel-dev/openpanel/security/advisories/GHSA-9x7c-f87x-2243",
"https://github.com/Openpanel-dev/openpanel/blob/e8a0602cda5a4d4b463f11d298a1b078c446bf33/packages/trpc/src/routers/report.ts",
"https://github.com/Openpanel-dev/openpanel/commit/0a51b6805eed0b3da8376175acd5fa3d26819cb6",
"https://github.com/Openpanel-dev/openpanel",
"https://www.vulncheck.com/advisories/openpanel-report-get-returns-any-report-by-identifier-without-checking-project-access"
],
"provider_metadata": {
"adp": [
{
"title": "CISA ADP Vulnrichment",
"metrics": [
{
"other": {
"type": "ssvc",
"content": {
"id": "CVE-2026-77768",
"role": "CISA Coordinator",
"options": [
{
"Exploitation": "poc"
},
{
"Automatable": "no"
},
{
"Technical Impact": "partial"
}
],
"version": "2.0.3",
"timestamp": "2026-08-21T17:30:57.389033Z"
}
}
}
],
"references": [
{
"url": "https://github.com/Openpanel-dev/openpanel/security/advisories/GHSA-9x7c-f87x-2243",
"tags": [
"exploit"
]
}
],
"providerMetadata": {
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP",
"dateUpdated": "2026-08-21T17:31:03.513Z"
}
}
],
"cna": {
"orgId": "83251b91-4cc7-4094-a5c7-464a1b83ea10",
"shortName": "VulnCheck",
"dateUpdated": "2026-10-27T10:14:35.597Z"
}
}
},
"related_cves": [
{
"value": "CVE-2026-77768",
"evidence": "/cveMetadata/cveId"
}
],
"security_relevant": true,
"severity_evidence": "/containers/cna/metrics"
},
"source_id": "core-cve",
"document_id": 391800,
"published_at": "2026-08-21T11:05:14.998+00:00"
}