피드로 돌아가기
I fuzzed my own Supabase RLS — and found a cross-tenant leak
Dev.toDev.to
Security

RLS Fuzzing 기반의 Cross-tenant Leak 탐지 및 CI 자동화 체계 구축

I fuzzed my own Supabase RLS — and found a cross-tenant leak

Matteo Perino2026년 6월 23일2intermediate

Context

Row-Level Security(RLS) 정책의 복잡성으로 인해 단순 코드 테스트만으로는 보안 취약점을 식별하기 어려운 한계 존재. 특히 USING과 WITH CHECK 절의 불일치나 잘못된 Role 설정 등 논리적 오류가 런타임 에러 없이 데이터 유출로 이어지는 구조적 위험성 내포.

Technical Solution

  • 가상 테넌트 2개를 생성하여 세션 간 데이터 접근을 직접 시도하는 Fuzzing 기반 검증 로직 설계
  • Role × Table × Operation 매트릭스를 구성하여 전체 보안 표면(Attack Surface)을 시각화하는 Mapping 구조 도입
  • SELECT, INSERT, UPDATE, DELETE 등 모든 CRUD 연산을 교차 실행하여 실제 데이터 유출 여부를 판단하는 실측 기반 검증 방식 채택
  • 검증된 시나리오를 pgTAP 테스트 스위트로 변환하여 CI 파이프라인에 통합함으로써 정책 회귀(Regression) 방지 체계 구축
  • 운영 환경 데이터 보호를 위해 Production URL 접근을 원천 차단하는 Safety Guard 적용

1. RLS 정책 설정 시 USING 절과 WITH CHECK 절의 일관성 검토

2. FOR ALL 정책 사용 시 의도치 않은 Update/Delete 권한 부여 여부 확인

3. Multi-tenant 환경에서 테넌트 간 데이터 격리를 검증하는 자동화된 Fuzzing 테스트 도입

4. RLS 정책 변경 사항을 pgTAP 등을 통해 CI 단계에서 강제 검증하는 프로세스 수립

원문 읽기