OSV 1.4.0 · github-reviewed · 修改于 2026-06-26 01:46
发布时间
2026-06-26 01:46
GitHub 审查时间
2026-06-26 01:46
NVD 发布时间
—
源文件
advisories/github-reviewed/2026/06/GHSA-wrr4-782v-jhwh/GHSA-wrr4-782v-jhwh.json
The /list_relationships and /retrieve_graph_neighborhood endpoints call getAuthenticatedUserId (confirming a valid session exists) but do not pass the resolved user ID into the Supabase query as an .eq("user_id", userId) filter. As a result, queries return rows from all users rather than scoping to the authenticated caller's data.
/list_relationships (src/actions.ts):
getAuthenticatedUserId but does not apply .eq("user_id", userId) to the relationships query.or() string interpolation for entity ID matching without input validation/retrieve_graph_neighborhood (src/actions.ts):
v0.13.0
An unauthenticated caller is rejected at the auth middleware layer. The gap requires a second user account on the instance.
An authenticated user with a known cross-user entity ID can retrieve relationship edges and graph neighborhood data belonging to another user. No write capability is exposed.
Low under current conditions — no multi-tenant deployments exist. Escalates to Medium the moment two or more user accounts share an instance.
.eq("user_id", userId) to all Supabase queries in both handlersisNeotomaEntityId before query construction.or() string interpolation with separate scoped .eq() callsFix tracked in #365 (list_relationships) and #366 (retrieve_graph_neighborhood). Gate gap tracked in #372.