Обзор инцидента
В конце февраля 2026 года в популярной платформе для создания образовательных сервисов был обнаружен крупный пробой безопасности. Одна из демонстрационных программ, размещённая на публичной странице проекта, предоставляла возможность генерировать экзаменационные задания и автоматически оценивать ответы студентов. В результате в открытый доступ попали почти 19 тысяч записей пользователей, включая электронные адреса, учётные записи учащихся и корпоративных клиентов, а также персональные данные части из них.
Объём раскрытой информации
- 14 928 уникальных e‑mail‑адресов – как студентов, так и сотрудников образовательных учреждений.
- 4 538 учётных записей студентов – полностью идентифицируемые по e‑mail.
- 10 505 корпоративных пользователей – представители университетов, школ и компаний‑заказчиков.
- 870 записей с полными персональными данными – ФИО, дата рождения и другая чувствительная информация.
Пострадавшие организации включали крупные американские университеты (UC Berkeley, UC Davis), а также учебные заведения в Швеции, Испании, Бельгии, Нигерии, Малайзии и Филиппинах. Среди пользователей были несовершеннолетние учащиеся K‑12, что повышает степень риска нарушения законодательных требований о защите детей.
Техническая причина уязвимости
Все приложения, создаваемые на платформе, используют Supabase в качестве бекенда: он отвечает за аутентификацию, хранение файлов и синхронные обновления через PostgreSQL. При автоматическом генерировании кода искусственным интеллектом была сформирована логика контроля доступа, которая оказалась полностью инвертированной.
IF auth.role() = 'authenticated' THEN
RAISE EXCEPTION 'Access denied';
END IF;
Смысл условного оператора прост: если запрос исходит от аутентифицированного пользователя, система генерирует ошибку и блокирует доступ. При любой попытке входа в систему пользователь получает отказ, а анонимный запрос, не прошедший проверку, получает полный доступ к базе данных.
Эта ошибка повторялась в нескольких критически важных функциях:
- Получение списка всех пользователей – без ограничения по роли.
- Отправка массовой электронной корреспонденции – любой может инициировать рассылку от имени сервиса.
- Запрос и изменение файлов – без проверки прав владельца.
В результате любой человек, обладающий базовыми навыками работы с cURL или обычным браузером, мог без авторизации извлечь всю пользовательскую базу.
Почему AI‑генерация кода не заменяет человеческий аудит
AI‑модели, обученные на огромных корпусах кода, способны быстро создавать рабочие функции, но их цель – «код, который работает», а не «код, который безопасен». Приоритетом модели является удовлетворение синтаксических и логических требований, а не проверка на соответствие лучшим практикам безопасности. В данном случае генератор сконцентрировался на корректности SQL‑оператора, но не учёл контекст аутентификации.
Человеческий ревьюер, знакомый с принципами нулевого доверия и «принципом наименьших привилегий», обнаружил бы эту ошибку за считанные секунды. Автоматический тестовый набор, если бы он включал проверки доступа к публичным эндпоинтам, тоже бы сработал, однако в типичном пайплайне такие тесты часто упускаются из‑за ограниченного охвата.
Последствия для разработчиков AI‑поддерживаемых платформ
- Необходимость обязательного аудита с точки зрения безопасности. Даже если код генерируется автоматически, каждый модуль должен проходить проверку на наличие логических ошибок в контроле доступа, обработке вводимых данных и управлении сессиями.
- Интеграция статических анализаторов безопасности. Инструменты типа
Bandit,SonarQubeили специализированные сканеры для Supabase/PostgreSQL способны выявлять опасные конструкции, такие как обратные проверки ролей. - Тесты «пентеста» в CI/CD. Автоматический запуск скриптов, имитирующих запросы от неавторизованных пользователей, поможет обнаружить откровенно открытые эндпоинты до выхода в продакшн.
- Обучение моделей дополнительными правилами. При обучении генераторов кода следует включать набор «security‑by‑design» инструкций, заставляющих модель добавлять проверки
auth.role() = 'authenticated'в позитивном, а не негативном виде. - Прозрачность для конечных пользователей. Платформы, предлагающие AI‑генерацию, должны явно информировать разработчиков о необходимости самостоятельного аудита и предоставлять готовые шаблоны безопасных паттернов.
Выводы
Инцидент с раскрытием почти 19 тысяч пользовательских записей демонстрирует, что автоматическое создание кода без последующего человеческого контроля может привести к катастрофическим последствиям, особенно в сфере образования, где обрабатываются данные несовершеннолетних. Применение AI в разработке должно сопровождаться строгими процессами проверки безопасности, а поставщики подобных сервисов обязаны обеспечить инструменты и практики, позволяющие быстро выявлять и устранять логические уязвимости. Только сочетание скоростных возможностей генерации и тщательного человеческого аудита может гарантировать надёжную защиту данных в современных облачных приложениях.