Αντίκτυπος
Οι εισβολείς μπορούν να παρακάμψουν τη λογική της εφαρμογής για να διαβάσουν, να ενημερώσουν ή να διαγράψουν εγγραφές στη βάση δεδομένων, εάν η ασφάλεια επιπέδου γραμμής (RLS) δεν επιβάλλεται σωστά [S1]. Αυτό συχνά έχει ως αποτέλεσμα την έκθεση Προσωπικών Πληροφοριών Αναγνώρισης (PII) ή ευαίσθητων δεδομένων εφαρμογής σε χρήστες που έχουν πρόσβαση μόνο στο δημόσιο ανώνυμο κλειδί API.
Ριζική αιτία
Το Supabase χρησιμοποιεί Postgres Row Level Security για τη διαχείριση της πρόσβασης δεδομένων σε επίπεδο βάσης δεδομένων, το οποίο είναι θεμελιώδες για την ασφάλεια των δεδομένων [S1]. Σε ένα περιβάλλον Next.js, οι προγραμματιστές πρέπει να δημιουργήσουν έναν πελάτη Supabase που χειρίζεται σωστά τα cookie και τις περιόδους λειτουργίας για να διατηρεί την ασφάλεια κατά την απόδοση του [S2] από την πλευρά του διακομιστή. Τα τρωτά σημεία εμφανίζονται συνήθως όταν:
- Οι πίνακες δημιουργούνται χωρίς ενεργοποιημένο το RLS, καθιστώντας τους προσβάσιμους μέσω του δημόσιου κλειδιού anon [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 το καλύπτει ήδη αυτό μέσω ελέγχων εφαρμογών και repo. Η παθητική μονάδα baas.supabase-rls ανακαλύπτει ζεύγη διευθύνσεων URL Supabase και ανώνυμων κλειδιών από πακέτα JavaScript ίδιας προέλευσης, ζητά από το PostgREST δημόσια μεταδεδομένα πίνακα και εκτελεί περιορισμένες επιλογές μόνο για ανάγνωση για να επιβεβαιώσει την έκθεση ανώνυμων δεδομένων πελατών χωρίς μετάλλαξη. Οι σαρώσεις repo εκτελούν επίσης το repo.supabase.missing-rls για να επισημάνουν τις μετεγκαταστάσεις SQL που δημιουργούν δημόσιους πίνακες χωρίς ENABLE ROW LEVEL SECURITY και οι μυστικές σαρώσεις αναζητούν έκθεση κλειδιού ρόλου υπηρεσίας πριν φτάσει στο πρόγραμμα περιήγησης.
