UpGuard нашла 16 326 баз Supabase, открытых на чтение всему интернету: в зоне риска — приложения, собранные ИИ-агентами

Коротко о главном
25 сентября 2026 года UpGuard опубликовала исследование: 16 326 баз данных на платформе Supabase отдают таблицы на чтение любому посетителю из интернета, и более чем в половине из них есть признаки персональных данных. Корень проблемы — выключенный Row Level Security (RLS) в таблицах, которые создают ИИ-агенты и вайб-кодинг-платформы. Если ваш продукт работает на Supabase, проверьте политики RLS сегодня.
Это не взлом и не уязвимость в самой платформе, а ошибка конфигурации, которая масштабируется вместе с популярностью инструментов быстрой разработки. Приложение, собранное за вечер, получает публичный ключ в клиентском коде и таблицы без правил доступа — и любой, кто откроет DevTools, может выгрузить базу. Мы закладываем модель прав на уровне базы с первого спринта, когда ведём backend-разработку, а для уже работающих продуктов проводим аудит кода приложения.
Ниже — что именно нашли исследователи, почему защита по умолчанию не срабатывает для кода от ИИ-агентов и какой короткий чек-лист закрывает проблему; если нужен внешний взгляд на весь периметр, поможет аудит информационной безопасности.
Что нашли исследователи UpGuard
Команда UpGuard просканировала около 300 000 доменов с признаками использования Supabase и отобрала проекты, у которых таблицы читаются без авторизации. Таких набралось 16 326. По оценке исследователей, более половины содержат персональные данные: имена, адреса, телефоны. В меньшей доле нашлись пароли и токены аутентификации, в единичных случаях — данные, похожие на номера банковских карт.
Примеры из отчёта показывают, что речь не о тестовых стендах, а о живых сервисах:
- Сервис одноразовых кодов — контакты более 2 000 пользователей и свыше 100 000 SMS-сообщений.
- Американский сервис парковки (valet) — телефоны более 100 000 клиентов, имена и email 43 000 человек и 78 000 госномеров автомобилей.
- Сервис иммиграционного консультирования — 5 000 пользователей, из них 884 записи с паролями в открытом виде.
- База консульства одной из африканских стран — 25 000 пользователей с адресами экстренного размещения.
По данным TechCrunch, среди находок также переписка пользователей стримингового сайта для взрослых в Индии и инфраструктура виртуальной SIM-фермы, которая перехватывала SMS для мошеннической верификации аккаунтов.
Почему защита по умолчанию не срабатывает
Supabase — это PostgreSQL с автоматически сгенерированным REST API. Клиентское приложение ходит в базу напрямую с публичным ключом (anon key), и единственный барьер между этим ключом и данными — политики Row Level Security на каждой таблице.
Таблицы, созданные вручную через Table Editor в веб-интерфейсе, получают включённый RLS по умолчанию — Supabase ввела это правило ещё в марте 2025 года. Но таблицы, созданные программно — SQL-миграцией или через API, — такой защиты по умолчанию не получают. Именно так с базой работают ИИ-агенты для программирования. UpGuard прямо называет Claude Code, Codex, Lovable и Replit среди инструментов, через которые Supabase попадает в новые проекты.
Вторая типичная ошибка — обращаться с публичным ключом как с секретным. Разработчик считает, что раз ключ «спрятан» в сборке, база защищена. На деле anon key виден любому, кто откроет вкладку Network в браузере.
Позиция Supabase
CISO Supabase Бил Хармер в комментарии TechCrunch заявил, что проекты платформы «защищены по умолчанию», а безопасность — это разделённая ответственность компании и клиентов. Формально это так: платформа даёт все инструменты, но ИИ-агент, который пишет миграцию, не обязан о них помнить. Вывод UpGuard звучит жёстче: масштаб утечек — это произведение того, насколько легко ошибиться в настройке технологии, на размер её аудитории.
Что проверить командам на Supabase прямо сейчас
- RLS на каждой таблице схемы public. Выполните запрос к
pg_tablesи найдите таблицы сrowsecurity = false. Каждой включитеALTER TABLE … ENABLE ROW LEVEL SECURITY. - Политики, а не только флаг. Включённый RLS без политик закрывает таблицу полностью; политика
USING (true)открывает её снова. Проверьте, что каждое правило привязано кauth.uid()или роли. - Проверка извне. Возьмите anon key из собственного фронтенда и попробуйте прочитать таблицы через REST API без логина — так же, как это сделал бы атакующий.
- Ключ service_role — только на сервере. Он обходит RLS целиком. Если он попал в клиентский бандл, мобильное приложение или публичный репозиторий — немедленно ротируйте.
- Правило для ИИ-агентов. Добавьте в инструкции агента и в CI-проверку требование: любая новая таблица создаётся вместе с включённым RLS и политикой. Миграция без них не проходит ревью.
- Чувствительные поля. Пароли не должны лежать в пользовательских таблицах вообще — для этого есть встроенная аутентификация с хешированием.
Часто задаваемые вопросы
Это уязвимость Supabase? Нет. Речь об ошибках конфигурации в проектах клиентов: таблицы без политик доступа. CVE здесь нет, патч от вендора не решит проблему — исправлять нужно каждый проект.
Касается ли это приложений, написанных без ИИ? Да. ИИ-агенты лишь ускоряют появление таблиц без RLS, потому что создают их через SQL и API. Разработчик, который пишет миграции руками, попадает в ту же ловушку.
Как быстро понять, что моя база открыта? Попробуйте запросить любую таблицу через REST API Supabase только с публичным ключом, без токена пользователя. Если в ответе строки данных — база открыта.
Что делать, если данные уже были доступны? Закрыть доступ, ротировать ключи и пароли, проверить логи запросов и оценить, попадают ли утечки персональных данных под обязательное уведомление регулятора — в России это требование 152-ФЗ.
Источники
- TechCrunch — «Some Supabase customers are publicly exposing reams of people’s data to the web», 25 сентября 2026
- UpGuard — исследование открытых баз Supabase, 25 сентября 2026 (первоисточник)
- Cybernews — «16,000 Supabase databases exposed as vibe-coded apps leak sensitive user data», сентябрь 2026
- Unite.AI — «UpGuard Study Finds 16,326 Supabase Databases Exposing Readable Tables», 25 сентября 2026
Проверим, что ваша база не читается снаружи
Проведём аудит кода и конфигурации backend: найдём таблицы без политик доступа, утёкшие ключи и слабые места в коде, который писали ИИ-агенты, и поможем закрыть их без остановки продукта.