0002_auth_users_exposed false positive: pg_depend join lacks a refclassid filter (cross-catalog OID collision)
I maintainer di solito rispondono entro 1 giorno
@tushardev-365 ci sta già lavorando.
Dal 29/7/2026.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 78/100
Direzione di ricerca
Inizia in lints/0002_auth_users_exposed.sql e analizza la join di pg_depend descritta nell'issue. Usa la query diagnostica del report per riprodurre la collisione di OID tra cataloghi. Il lavoro è completato quando il lint non segnala più una view la cui dipendenza è solo un oggetto pg_proc, continuando però a rilevare una dipendenza da relazione su auth.users.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
lints/0002_auth_users_exposed.sql joins the view's rewrite dependencies to auth.users by OID only:
join pg_catalog.pg_depend d
on d.refobjid = auth_users_pg_class.oid
There is no d.refclassid = 'pg_catalog.pg_class'::regclass predicate, so any pg_depend row from a view's rewrite whose refobjid numerically collides with auth.users' pg_class OID — but actually references an object in a different catalog (pg_proc, pg_type, …) — fires the lint.
Observed instance
On one of our projects, auth.users has pg_class OID 16499, and a public view calls a SECURITY DEFINER helper function whose pg_proc OID is also 16499. The view selects only from public tables (verified: zero relation dependency on auth.users), yet the advisor reports it as CRITICAL auth_users_exposed, and the "action required: security vulnerabilities" email goes out weekly.
Diagnostic query that shows the collision:
with au as (
select oid from pg_class
where relname = 'users' and relnamespace = 'auth'::regnamespace
),
rw as (
select oid from pg_rewrite where ev_class = 'public.<your_view>'::regclass
)
select d.refclassid::regclass as ref_catalog,
case when d.refclassid = 'pg_proc'::regclass then d.refobjid::regprocedure::text
when d.refclassid = 'pg_class'::regclass then d.refobjid::regclass::text
else d.refobjid::text end as ref_object,
d.deptype
from pg_depend d, au, rw
where d.objid = rw.oid and d.refobjid = au.oid;
Result on the affected project: one row, ref_catalog = pg_proc, ref_object = <helper function>(text,uuid) — not a relation.
Suggested fix
Add the catalog filter to the join:
join pg_catalog.pg_depend d
on d.refobjid = auth_users_pg_class.oid
and d.refclassid = 'pg_catalog.pg_class'::regclass
(Other OID-equality joins in the lint suite may want the same audit.)
- Lingua principale
- PLpgSQL
- Stelle
- 284
- Fork
- 110
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di supabase/splinter
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 69/100
supabase/splinter#206 · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 40/100
supabase/splinter#210 · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
0030_autovacuum_disabled misses tables where autovacuum_enabled is set to off, 0 or noForse già presa @RaphaelFakhri l’ha presa 9 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 35/100
I maintainer di solito rispondono entro 1 giorno
-
Proposal: lint for RLS policies whose role lacks the table privilege (policy_without_privilege)Forse già presa @larik15 l’ha presa 28 giorni fa. Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 1/100
I maintainer di solito rispondono entro 1 giorno
-
0028/0029 silently report zero findings for projects using a custom PostgREST request roleForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di supabase/splinter
Issue simili
-
"Sync columns from source" fails on ClickHouse tables with ALIAS, MATERIALIZED or DEFAULT columnsForse già presa @bmuraykhi l’ha presa oggi. Aperta#bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
ClickHouse/clickhouse-go#2093 ·
I maintainer di solito rispondono entro 1 giorno
-
Missing index on table_movies.movie_file_id: every movie ffprobe cache lookup is a linear scanAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
morpheus65535/bazarr#3699 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
pocoproject/poco#5626 ·
I maintainer di solito rispondono entro 2 giorni
-
[Bug]: prisma_migration --skip_server_startup crashes with ImportError when psycopg cannot load libpq (unguarded import in ensure_request_log_indexes)Forse già presa @chamanswami555 l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
BerriAI/litellm#49680 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno