Безопасность LEX AI: GDPR-аудит, 10 исправлений и 7 уровней защиты
5 параллельных white-hat агентов проверили платформу на соответствие GDPR и OWASP Top 10. Нашли 23 уязвимости — от SQL-инъекций до Google Ads без consent. Исправили 10 критичных за одну сессию. Полная архитектура безопасности: Cloudflare, TLS 1.3, CSP, rate limiting, WebAuthn, E2EE.
Безопасность LEX AI: GDPR-аудит, 10 исправлений и 7 уровней защиты
Юридическая платформа обрабатывает самые чувствительные данные: судебные дела, контракты, персональную информацию клиентов. Безопасность — не фича, а фундамент. Мы провели полный security audit силами 5 параллельных AI-агентов и исправили все критические находки за одну сессию.
Эта статья — прозрачный разбор: что нашли, что исправили, и как устроена полная архитектура защиты LEX AI.
Как проводили аудит
Вместо классического ручного пентеста мы запустили 5 специализированных white-hat агентов параллельно, каждый со своей зоной ответственности:
| Агент | Фокус | Файлов проверено |
|---|---|---|
| 🔍 Data Collection | Cookie consent, трекинг, OAuth scopes | 42 |
| 💾 Data Storage | БД-схемы, retention, Redis, Qdrant, MinIO | 53 |
| 👤 User Rights | GDPR Art. 15-22 (доступ, удаление, портабельность) | 25 |
| 🛡️ OWASP Top 10 | Injection, XSS, Auth, CORS, CSRF, rate limiting | 45 |
| 🌐 Data Transfers | Third-party API, sub-processors, cross-border | 48 |
Что нашли: 23 уязвимости
Критические (исправлены)
1. Google Ads загружался ДО cookie consent — скрипт выполнялся при каждой загрузке страницы до показа баннера. Исправлено: динамическая загрузка только после согласия + Google Consent Mode v2.
2. JWT Secret с fallback на известную строку — несколько файлов содержали предсказуемый fallback-секрет. Исправлено: приложение крашится при старте без переменной окружения. Fallback удалён.
3. SQL Injection через интерполяцию параметров — параметры вставлялись напрямую в SQL строку. Исправлено: все запросы переведены на параметризованные плейсхолдеры.
Высокие (исправлены)
4–10: Конверсионный трекинг без consent, Nginx CORS отражал любой Origin (заменён на строгий whitelist), XSS через dangerouslySetInnerHTML (добавлен DOMPurify), динамические SQL таблицы без whitelist (добавлен allowlist), cleanup-функции никогда не запускались (добавлены cron-задачи), email в логах в plaintext (добавлена маскировка), OAuth регистрация без rate limiting (добавлен лимит по IP).
7 уровней защиты LEX AI
Уровень 1: Cloudflare — DDoS Protection, WAF, Bot Management, Origin CA
Уровень 2: TLS 1.3 — ECDHE Forward Secrecy, HSTS 1 год
Уровень 3: Nginx — Security Headers (HSTS, X-Frame-Options, CSP, Referrer-Policy)
Уровень 4: Express.js — Multi-layer rate limiting по IP и User ID
Уровень 5: Аутентификация — 6 методов (Password, Google OAuth, WebAuthn, Diia, OIDC, API Keys)
Уровень 6: База данных — PgBouncer + SCRAM-SHA-256, Docker network isolation
Уровень 7: GDPR — Export/Delete/Portability, Cookie Consent, E2EE (AES-256-GCM + X25519)
Выводы
- AI-агенты для security audit — 5 параллельных агентов покрыли больше поверхности атаки за 3 минуты, чем ручной review за день
- Defense in depth работает — ни одна уязвимость не давала полный доступ
- GDPR — это код, не документ — права пользователей должны быть реализованы в коде
- Прозрачность строит доверие — мы публикуем результаты аудита открыто
Все исправления: PR #1224.
Регистрация: legal.org.ua