CVE-2026-77769
ŚrednieCVSS 6.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 15 - wyżej niż 15% wszystkich znanych CVE
Streszczenie
Procedura report.list w pakiecie trpc w Reconmap akceptuje projectId i dashboardId, ale weryfikuje tylko członkostwo dla projectId, nie sprawdzając, czy dashboardId należy do tego projektu. Uwierzytelniony użytkownik może podać projectId z własnej organizacji i dashboardId z innej organizacji, uzyskując dostęp do wszystkich raportów w tym dashboardzie. Istniała już poprawnie zakresowana funkcja listReportsCore, ale router jej nie używał.
Ocena ryzyka
Uwierzytelniony użytkownik może uzyskać dostęp do raportów z innych organizacji, co narusza izolację danych i może ujawnić wrażliwe informacje.
Rekomendacja
Należy natychmiast zmodyfikować router, aby używał funkcji listReportsCore, która poprawnie weryfikuje przynależność dashboardu do projektu, oraz przeprowadzić audyt dostępu do raportów.
Inne podatności w Reconmap
Oryginalny opis (angielski, źródło NVD)
The report.list procedure in packages/trpc/src/routers/report.ts accepted a projectId and a dashboardId and returned getReportsByDashboardId(dashboardId). The enforceAccess middleware in packages/trpc/src/trpc.ts verified membership for the supplied projectId, but nothing verified that the supplied dashboardId belonged to that project, and getReportsByDashboardId in packages/db/src/services/reports.service.ts selects reports by dashboardId alone with no project scoping. An authenticated user could therefore pair a projectId from their own organization, which satisfies the middleware, with a dashboardId belonging to another organization and receive every report in that dashboard. A correctly scoped helper, listReportsCore, already existed in the same service file and resolves the dashboard through getDashboardById(dashboardId, projectId) before returning reports, but the router did not use it.

