Urgent.News

What's breaking now, across thousands of outlets.

Tech

Missing RLS: The Most Underrated Breach Cause of 2026

You know why there are so many breaches in databases? Perfect, me neither. Let's find out in a few minutes. Everyone worries about encryption. Almost nobody worries enough about the one thing that's actually been breaking production databases all year: a table with Row Level Security simply left off. I ran into this while researching how to safely migrate Firestore Security Rules into Postgres…

Recent database breaches underscore a critical but often overlooked security issue: Row Level Security (RLS) left disabled or misconfigured. This oversight has led to the inadvertent exposure of sensitive data across multiple applications and platforms.

During research into migrating Firestore Security Rules to Postgres RLS policies, it became evident that this misconfiguration is the most frequent cause of breaches. In May 2025, a CVE (CVE-2025-48757) highlighted 303 endpoints across 170 applications using Lovable, an AI app-building tool, with publicly readable Supabase tables due to RLS being either never enabled or misconfigured.

Later, in March 2026, an AI platform's database was exfiltrated after an attacker discovered tables with missing RLS, exposing admin emails and internal schema metadata.

Security researchers have found that thousands of Supabase instances globally are misconfigured, making them vulnerable to unauthorized queries via simple curl requests. This issue is not unique to Supabase; Firebase also experienced a similar leak, exposing over 1.8 million users' plaintext passwords and sensitive data from more than 900 mobile apps due to publicly accessible Realtime Database instances.

The root cause is the same: a lack of proper access control configuration. Supabase improved in 2026 by enabling RLS by default on new tables and flagging unsecured tables on its dashboard, but this doesn't address the more challenging scenario of rebuilding access logic during migrations. Migrations often involve recreating access control policies, a task that can be error-prone, especially when translating security rules from one system to another.

Tools like pgrls, a static RLS linter, can help identify common mistakes and vulnerabilities in translated policies. However, these tools are still in development and may not cover all scenarios. The key takeaway is that access control is a crucial but often underestimated aspect of database security. Proper configuration during database migrations is essential to prevent data breaches, and relying solely on manual processes or incomplete tools leaves systems vulnerable.

Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.

Read the original at dev.to →

More in Tech

I built a chat where every word costs money — on TON, solo, no legal entity

Hi! I'm a mobile developer (Kotlin by day), and a couple of weeks ago I started a side project with a simple, slightly audacious idea: a chat where sending a message costs money — and the recipient…

  • Users pay to send messages, recipients earn money
  • Platform operates as non-custodial, no legal entity required
  • Server matches transactions to messages via unique identifier

XML Configuration Mode: Decoupling Your API Catalog from Business Code

Annotation mode keeps requests close to Java, but large integrations raise a fair question: do I want a wall of curl strings inside my service interfaces?

  • XML Configuration Mode separates API catalog from business code
  • Uses declarative client split with contract in configuration files
  • Changing XML entries alters app behavior without Java edits

Decorator Design Pattern: Adding Functionality without Breaking Your Architecture

Se você já trabalhou com orientação a objetos por algum tempo, provavelmente já se deparou com este dilema: como adicionar novas funcionalidades a um objeto sem criar uma explosão de subclasses?

  • Decorator pattern adds functionality to objects without altering architecture
  • Prevents creation of many subclasses, allows dynamic behavior combination
  • Base Component class defines interface for objects with behavior

More from Saturday 12 September →