FixVibe
Covered by FixVibehigh

รายการตรวจสอบความปลอดภัย Supabase: คีย์ RLS, ZXCVFIXVIBTOKEN2ZXCV และที่เก็บข้อมูล

บทความวิจัยนี้สรุปการกำหนดค่าความปลอดภัยที่สำคัญสำหรับโปรเจ็กต์ Supabase โดยมุ่งเน้นไปที่การใช้งาน Row Level Security (RLS) อย่างเหมาะสม เพื่อปกป้องแถวฐานข้อมูล การจัดการที่ปลอดภัยของคีย์ anon และ service_role API และการบังคับใช้การควบคุมการเข้าถึงสำหรับที่เก็บข้อมูลเพื่อลดความเสี่ยงของการเปิดเผยข้อมูลและการเข้าถึงที่ไม่ได้รับอนุญาต

CWE-284CWE-668

ตะขอ

การรักษาความปลอดภัยโปรเจ็กต์ Supabase ต้องใช้แนวทางแบบหลายชั้นโดยเน้นที่การจัดการคีย์ API ความปลอดภัยของฐานข้อมูล และการอนุญาตพื้นที่เก็บข้อมูล [S1] การกำหนดค่าความปลอดภัยระดับแถวไม่ถูกต้อง (RLS) หรือคีย์ที่ละเอียดอ่อนที่ถูกเปิดเผยอาจทำให้เกิดเหตุการณ์การเปิดเผยข้อมูลที่สำคัญได้ [S2] [S3]

สิ่งที่เปลี่ยนแปลง

การวิจัยนี้รวมการควบคุมความปลอดภัยหลักสำหรับสภาพแวดล้อม Supabase ตามแนวทางสถาปัตยกรรมอย่างเป็นทางการ [S1] มุ่งเน้นไปที่การเปลี่ยนจากการกำหนดค่าการพัฒนาเริ่มต้นไปเป็นท่าทางที่เสริมความแข็งแกร่งในการผลิต โดยเฉพาะเกี่ยวกับกลไกการควบคุมการเข้าถึง [S2] [S3]

ใครได้รับผลกระทบ

แอปพลิเคชันที่ใช้ Supabase เป็น Backend-as-a-Service (BaaS) จะได้รับผลกระทบ โดยเฉพาะอย่างยิ่งแอปพลิเคชันที่จัดการข้อมูลเฉพาะผู้ใช้หรือทรัพย์สินส่วนตัว [S2] นักพัฒนาที่มีคีย์ service_role ในชุดรวมฝั่งไคลเอ็นต์หรือไม่สามารถเปิดใช้งาน ZXCVFIXVIBTOKEN4ZXCV มีความเสี่ยงสูง [S1]

ปัญหาทำงานอย่างไร

Supabase ใช้ประโยชน์จาก Row Level Security ของ PostgreSQL เพื่อจำกัดการเข้าถึงข้อมูล [S2] ตามค่าเริ่มต้น หากไม่ได้เปิดใช้งาน RLS บนตาราง ผู้ใช้ใดๆ ที่มีคีย์ ZXCVFIXVIBTOKEN0ZXCV ซึ่งมักจะเป็นแบบสาธารณะ จะสามารถเข้าถึงบันทึกทั้งหมดได้ [S1] ในทำนองเดียวกัน พื้นที่เก็บข้อมูล Supabase ต้องการนโยบายที่ชัดเจนเพื่อกำหนดว่าผู้ใช้หรือบทบาทใดสามารถดำเนินการกับที่เก็บข้อมูลไฟล์ได้ [S3]

สิ่งที่ผู้โจมตีได้รับ

ผู้โจมตีที่มีคีย์ API สาธารณะสามารถใช้ประโยชน์จากตารางที่ขาด RLS เพื่ออ่าน แก้ไข หรือลบข้อมูลที่เป็นของผู้ใช้รายอื่น [S1] [S2] การเข้าถึงที่เก็บข้อมูลโดยไม่ได้รับอนุญาตอาจนำไปสู่การเปิดเผยไฟล์ผู้ใช้ส่วนตัวหรือการลบสินทรัพย์แอปพลิเคชันที่สำคัญ [S3]

วิธีทดสอบ FixVibe

ตอนนี้ FixVibe ครอบคลุมสิ่งนี้โดยเป็นส่วนหนึ่งของการตรวจสอบ Supabase baas.supabase-security-checklist-backfill ตรวจสอบข้อมูลเมตาของบัคเก็ตการจัดเก็บข้อมูล Supabase สาธารณะ การเปิดรับรายการอ็อบเจ็กต์ที่ไม่ระบุชื่อ การตั้งชื่อบัคเก็ตที่ละเอียดอ่อน และสัญญาณการจัดเก็บข้อมูลแบบ anon-bound จากขอบเขตอานนท์สาธารณะ การตรวจสอบแบบเรียลไทม์ที่เกี่ยวข้องจะตรวจสอบการเปิดเผยคีย์บทบาทบริการ, ท่าทาง Supabase REST/RLS และการย้าย SQL ของที่เก็บสำหรับ RLS ที่หายไป

จะแก้ไขอะไร.

เปิดใช้งานการรักษาความปลอดภัยระดับแถวบนตารางฐานข้อมูลและใช้นโยบายแบบละเอียดสำหรับผู้ใช้ที่ได้รับการรับรองความถูกต้องเสมอ [S2] ตรวจสอบให้แน่ใจว่ามีการใช้เฉพาะคีย์ 'anon' ในโค้ดฝั่งไคลเอ็นต์ ในขณะที่คีย์ 'service_role' ยังคงอยู่บนเซิร์ฟเวอร์ [S1] กำหนดค่าการควบคุมการเข้าถึงพื้นที่เก็บข้อมูลเพื่อให้แน่ใจว่าที่เก็บข้อมูลไฟล์เป็นแบบส่วนตัวตามค่าเริ่มต้น และให้สิทธิ์การเข้าถึงผ่านนโยบายความปลอดภัยที่กำหนดไว้เท่านั้น [S3]