Уплыў
Зламыснікі могуць абыйсці логіку прыкладання для чытання, абнаўлення або выдалення запісаў у базе дадзеных, калі бяспека на ўзроўні радка (RLS) не выконваецца належным чынам [S1]. Гэта часта прыводзіць да раскрыцця інфармацыі, якая дазваляе ідэнтыфікаваць асобу (PII) або канфідэнцыяльных даных прыкладанняў карыстальнікам, якія маюць доступ толькі да публічнага ананімнага ключа API.
Першапрычына
Supabase выкарыстоўвае Postgres Row Level Security для кіравання доступам да даных на ўзроўні базы дадзеных, што з'яўляецца фундаментальным для забеспячэння бяспекі даных [S1]. У асяроддзі Next.js распрацоўшчыкі павінны стварыць кліент Supabase, які правільна апрацоўвае файлы cookie і сеансы для падтрымання бяспекі падчас рэндэрынгу [S2] на баку сервера. Уразлівасці звычайна ўзнікаюць, калі:
- Табліцы ствараюцца без уключанага RLS, што робіць іх даступнымі праз адкрыты ананімны ключ [S1].
- Кліент Supabase няправільна наладжаны ў Next.js, не можа належным чынам перадаць токены аўтэнтыфікацыі карыстальніка ў базу дадзеных [S2].
- Распрацоўшчыкі выпадкова выкарыстоўваюць ключ
service_roleу кодзе на баку кліента, які абыходзіць усе палітыкі RLS [S1].
Канкрэтныя выпраўленні
- Уключыць RLS: Пераканайцеся, што бяспека на ўзроўні радкоў уключана для кожнай табліцы ў вашай базе дадзеных Supabase [S1].
- Вызначэнне палітык: Стварыце спецыяльныя палітыкі Postgres для аперацый
SELECT,INSERT,UPDATEіDELETE, каб абмежаваць доступ на аснове UID карыстальніка [S1]. - Выкарыстоўвайце кліенты SSR: укараніце пакет
@supabase/ssrдля стварэння кліентаў у Next.js, якія правільна кіруюць аўтэнтыфікацыяй на баку сервера і працягласцю сеансу [S2].
Як FixVibe правярае гэта
FixVibe ужо ахоплівае гэта шляхам праверкі разгорнутых праграм і рэпа. Пасіўны модуль baas.supabase-rls выяўляе Supabase пары URL-адрасоў і ананімных ключоў з аднолькавых пакетаў JavaScript, запытвае ў PostgREST публічныя метададзеныя табліцы і выконвае абмежаваны выбар толькі для чытання, каб пацвердзіць доступ ананімных даных без змены даных кліентаў. Сканаванне рэпазітара таксама запускае repo.supabase.missing-rls, каб пазначыць міграцыі SQL, якія ствараюць агульнадаступныя табліцы без ENABLE ROW LEVEL SECURITY, а сакрэтнае сканаванне шукае выкрыццё ключа ролі службы, перш чым ён дасягне браўзера.
