Статья Утечка данных NSFW AI-платформы: как промпты и метаданные становятся оружием деанонимизации

Sergei webware

Редактор Форума
07.02.2016
100
354
Специализация
  1. Веб-безопасность
  2. Аппаратный хакинг
Статус верификации
  1. ✓ Verified
Утечка данных AI-платформ: деанонимизация пользователей по промптам и OSINT-анализ дампов


В марте 2025 года из AI-companion платформы MyLovely.ai утекли данные более чем 106 000 аккаунтов (по данным - 106 271 запись). Не пароли. Не хэши. Полные тексты промптов интимного содержания, привязанные к email-адресам. По неподтверждённым данным отраслевого блога The CyberSignal (thecybersignal.com; публикации не индексируются крупными агрегаторами и не имеют постоянных URL для независимой верификации), дамп предположительно циркулирует на специализированных форумах, а пострадавшим приходят письма с угрозами «рассказать работодателю и семье». И это не единичный случай - волна утечек данных AI платформ (от DeepSeek до companion-сервисов) показывает системную дыру. Утекают не credentials, а мысли. И деанонимизация пользователей по этим данным - задача пугающе тривиальная.

Я разбирал подобные дампы руками - через jq, grep, sqlite3 и кастомные скрипты на Python. Покажу, какие именно метаданные логируют AI-платформы, почему промпты стали новым типом PII (персонально идентифицируемой информации), и дам пошаговую методику OSINT-анализа утёкшего дампа - от сырого JSON до построения графа связей, ведущего к реальной личности.

Что логируют AI-платформы и почему метаданные - угроза приватности​

Большинство пользователей AI-сервисов уверены, что их диалоги эфемерны. Набрал промпт, получил ответ, закрыл вкладку - данные «исчезли». Иллюзия. Архитектура современных AI-платформ предполагает многоуровневое логирование каждого взаимодействия.

Стандартные метаданные AI-сессии​

По опыту анализа инцидентов и ковыряния инфраструктурных утечек, типичный лог-стрим AI-платформы содержит следующие поля:

КатегорияПоляРиск деанонимизации
Идентификаторы сессииsession_id, user_id, account_emailПрямая привязка к личности
Устройствоuser_agent, device_fingerprint, screen_resolutionFingerprinting пользователей
Сетьclient_ip, ip_chain (при использовании прокси), geo_lat/lonГеолокация с точностью до квартала
Контентprompt_text, prompt_hash, response_textПоведенческий профиль
Временные меткиtimestamp, session_duration, request_intervalПаттерны активности
Биллингsubscription_tier, payment_method_last4Финансовая идентификация

Характерный пример - база данных DeepSeek на ClickHouse, которую раскопали исследователи . Висела без аутентификации по адресам oauth2callback.deepseek.com:9000 и dev.deepseek.com:9000. Таблица log_stream - больше миллиона строк логов с полями timestamp, span_name (эндпоинты API), string.values (чат-история в открытом тексте, API-ключи, метаданные бэкенда) и _service (идентификатор внутреннего сервиса). Простой SHOW TABLES; через HTTP-интерфейс ClickHouse возвращал полный список таблиц. Без какой-либо авторизации. Заходи кто хочешь.

И это не уникальный случай. Подобные ClickHouse- и Elasticsearch-инстансы с открытыми портами 8123/9000 - типовой паттерн для стартапов, которые масштабируются быстрее, чем выстраивают периметр.

Промпты как биометрический маркер личности​

По неподтверждённым данным The CyberSignal, промпты AI-платформ следует классифицировать как высокочувствительные персональные данные. Причина проста: промпты содержат уникальную каденцию речи, личные истории и специфические формулировки желаний - функционально они идентифицируют пользователя не хуже отпечатка пальца.

Исследование IAPP подтверждает это на системном уровне: пользователь, который пишет в чатбот «У меня уже три недели болит голова и тошнит. Я в ужасе, что это что-то серьёзное. Я не сказал жене, потому что она и так переживает из-за диагноза матери» - не ищет информацию. Он доверяет тайну. И эта тайна логируется, хранится и потенциально скармливается модели при обучении.

Отказ возможен, но механизмы - тот ещё зоопарк. Теоретически возможна ситуация, при которой opt-out из обучения парадоксально увеличивает срок хранения данных - некоторые обзоры IAPP допускают такой сценарий, но конкретный провайдер и точные сроки не раскрыты и независимо не верифицированы. В другом гипотетическом сценарии клик «палец вверх» или «палец вниз» может перезаписать отказ от обучения для связанного диалога - такая возможность упоминается в обзорах IAPP, но без указания конкретного провайдера, и независимо подтвердить это не удалось. Короче, на заборе написано «ваши данные удалены», а что на практике - вопрос открытый.

Для NSFW AI-платформ это создаёт идеальный шторм: контент максимально чувствительный, а практики безопасности - минимальные.

Кейс MyLovely.ai - анатомия утечки NSFW AI-платформы​

Инцидент с MyLovely.ai - на сегодня наиболее документированная утечка данных companion AI-платформы с NSFW-контентом. Разберём по косточкам.

Что утекло и как​

По неподтверждённым данным The CyberSignal (конкретные публикации не имеют постоянных URL для независимой верификации), скомпрометированы:
  • 106 271 аккаунт (по данным Have I Been Pwned), включая приватные диалоги - значительная часть с явным NSFW-содержанием
  • Email-адреса пользователей, привязанные к конкретным промптам
  • Даты создания аккаунтов
  • Метаданные, позволяющие определить географическое расположение пользователей
Причина - незащищённая база данных с открытым неавторизованным доступом. Промпты лежали в plaintext, связанные с email-адресами. Временное окно экспозиции хватило, чтобы множественные скраперы проиндексировали базу. К моменту устранения уязвимости данные уже расползлись по форумам утечек.

Вектор деанонимизации и шантажа​

Цепочка раскрытия тут прямолинейная:
  1. Атакующий получает дамп: email → промпт-история
  2. Email кросс-референсится с утечками в Have I Been Pwned, Dehashed или аналогичных базах
  3. По email восстанавливается профиль в соцсетях (LinkedIn, Facebook, VK)
  4. Контент промптов используется для sextortion - жертве летит сообщение с угрозой раскрытия интимных промптов работодателю, семье или публично
По неподтверждённым данным The CyberSignal, в утёкших данных MyLovely.ai могут присутствовать корпоративные email-адреса сотрудников, которые использовали рабочие учётки для регистрации на потребительской AI-платформе. Это мост для разворота от персональной утечки к корпоративной атаке - Account Takeover или целевой фишинг с использованием утёкшего персонального контекста как рычага давления.

Отличие от «классических» утечек паролей или номеров карт - фундаментальное. Пароль можно сменить. Карту - перевыпустить. А историю промптов, в которых человек раскрывал мысли, фантазии и страхи, «отозвать» невозможно. Как отметили авторы исследования IAPP, данные диалогов перманентны и незаменимы.

Деанонимизация пользователей по утёкшим данным AI-платформ​

Утечка MyLovely.ai - частный случай более широкой проблемы: идентификация пользователей по метаданным и контенту промптов оказывается куда эффективнее, чем принято считать.

Корреляция email, социальных профилей и реальной личности​

Когда в дампе есть email - деанонимизация тривиальна. Но даже без прямого идентификатора метаданные позволяют сузить круг до конкретного человека. Вот что я использовал при анализе подобных утечек:

Временные паттерны. Частота и время отправки промптов коррелируют с часовым поясом и рабочим графиком. Пользователь, активный строго с 23:00 до 02:00 UTC+3 по будням и с 15:00 по выходным - это уже профиль. Наложение на публичную активность в соцсетях (время постов, лайков, коммитов на GitHub) даёт корреляцию.

Геолокация из IP-цепочек. Даже если платформа логирует только /24-подсеть, это сужает локацию до города, а в сочетании с ISP-информацией - до района. Для мобильного интернета IP часто привязан к конкретной соте.

. Комбинация браузера, версии ОС, разрешения экрана и языковых настроек создаёт уникальный отпечаток. Набор из 5-7 параметров user-agent идентифицирует устройство с вероятностью выше 90%.

Поведенческий fingerprinting через стиль промптов​

Исследование ETH Zurich (Staab et al., 2024, препринт «Beyond Memorization: Violating Privacy Via Inference with Large Language Models») показало, что языковые модели способны вытаскивать персональные атрибуты (локация, возраст, профессия и др.) из анонимных текстов - точность варьировалась в зависимости от типа атрибута и достигала до 85% для отдельных категорий (например, локация) при использовании GPT-4. На выборке пользователей Reddit модель корректно образовала личные атрибуты, а стоимость анализа одного профиля - порядка нескольких долларов.

Применительно к утёкшим промптам AI-платформ этот метод работает ещё злее, потому что:
  • Промпты содержат уникальные речевые обороты, которые пользователь воспроизводит неосознанно
  • NSFW-контент включает специфические предпочтения, создающие «композиционный отпечаток» личности
  • Серия промптов одного пользователя даёт достаточно «сигналов идентичности» для LLM-атаки
Синтетический пример, основанный на типичных паттернах из публично описанных инцидентов: пользователь формулирует промпты на смеси русского и английского с характерными конструкциями вроде «сделай так, чтобы она была типа...». Эта каденция плюс временная зона UTC+5 плюс упоминание конкретного района города в контексте ролевой игры - и через открытые источники человека можно найти за вечер.

Практический OSINT-анализ утёкшего дампа AI-платформы: пошаговая методика

Ниже - воспроизводимая методика, которую я применяю при работе с утёкшими данными AI-сервисов. Инструменты стандартные для OSINT-аналитика.

Шаг 1 - парсинг и первичная разведка​

Типичный дамп AI-платформы приходит в формате JSON Lines (.jsonl) или как выгрузка из NoSQL-базы. Первая задача - понять структуру.
Bash:
# Посмотреть первую запись и понять структуру полей
head -1 dump.jsonl | jq '.'

# Извлечь уникальные ключи верхнего уровня
head -100 dump.jsonl | jq -r 'keys[]' | sort -u
Типичный вывод для companion AI-платформы:
JSON:
{
  "user_id": "usr_a8f3c9d1",
  "email": "john.d***@gmail.com",
  "created_at": "2024-11-03T14:22:01Z",
  "session_id": "sess_7b2e4f",
  "prompts": [
    {
      "timestamp": "2025-02-15T23:41:12Z",
      "text": "...",
      "prompt_hash": "sha256:e3b0c44298fc1c14...",
      "model": "companion-v2",
      "tokens": 847
    }
  ],
  "metadata": {
    "ip": "185.xx.xx.0/24",
    "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)...",
    "language": "ru-RU",
    "geo_country": "RU"
  }
}
Первичная статистика - ключ к пониманию масштаба:
Bash:
# Общее количество записей
wc -l dump.jsonl

# Количество уникальных пользователей
jq -r '.user_id' dump.jsonl | sort -u | wc -l

# Распределение по странам
jq -r '.metadata.geo_country' dump.jsonl | sort | uniq -c | sort -rn | head -20

# Временной диапазон дампа
# Извлекаем все timestamps, сортируем лексикографически (ISO 8601 это позволяет):
jq -r '.prompts[].timestamp' dump.jsonl | sort | head -1
jq -r '.prompts[].timestamp' dump.jsonl | sort | tail -1
# Для крупных дампов (>50K строк) эффективнее сразу использовать SQLite:
# SELECT MIN(timestamp), MAX(timestamp) FROM prompts;
Для крупных дампов загружаю всё в SQLite - так удобнее ковыряться:
Python:
import json
import sqlite3

conn = sqlite3.connect('ai_leak.db')
c = conn.cursor()

c.execute('''CREATE TABLE IF NOT EXISTS users (
    user_id TEXT PRIMARY KEY,
    email TEXT,
    created_at TEXT,
    geo_country TEXT,
    user_agent TEXT,
    language TEXT
)''')

c.execute('''CREATE TABLE IF NOT EXISTS prompts (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    user_id TEXT,
    timestamp TEXT,
    prompt_text TEXT,
    prompt_hash TEXT,
    tokens INTEGER,
    FOREIGN KEY(user_id) REFERENCES users(user_id)
)''')

with open('dump.jsonl', 'r') as f:
    for line in f:
        record = json.loads(line)
        c.execute('INSERT OR IGNORE INTO users VALUES (?,?,?,?,?,?)', (
            record['user_id'],
            record.get('email', ''),
            record.get('created_at', ''),
            record.get('metadata', {}).get('geo_country', ''),
            record.get('metadata', {}).get('user_agent', ''),
            record.get('metadata', {}).get('language', '')
        ))
        for prompt in record.get('prompts', []):
            c.execute('INSERT INTO prompts (user_id, timestamp, prompt_text, prompt_hash, tokens) VALUES (?,?,?,?,?)', (
                record['user_id'],
                prompt.get('timestamp', ''),
                prompt.get('text', ''),
                prompt.get('prompt_hash', ''),
                prompt.get('tokens', 0)
            ))

conn.commit()
conn.close()

Шаг 2 - извлечение идентификаторов и построение графа связей​

После загрузки в SQLite ищу прямые идентификаторы и «мягкие» маркеры:
SQL:
-- Пользователи с корпоративными email-доменами
SELECT email, COUNT(*) as prompt_count
FROM users u JOIN prompts p ON u.user_id = p.user_id
WHERE email NOT LIKE '%gmail%'
  AND email NOT LIKE '%yahoo%'
  AND email NOT LIKE '%hotmail%'
  AND email NOT LIKE '%protonmail%'
GROUP BY email ORDER BY prompt_count DESC;

-- Пользователи, упоминающие реальные имена/локации в промптах
SELECT user_id, prompt_text
FROM prompts
WHERE prompt_text LIKE '%меня зовут%'
   OR prompt_text LIKE '%я живу в%'
   OR prompt_text LIKE '%я работаю%';

-- Временные паттерны - определение часового пояса
SELECT user_id,
       CAST(strftime('%H', timestamp) AS INTEGER) as hour_utc,
       COUNT(*) as cnt
FROM prompts
GROUP BY user_id, hour_utc
ORDER BY user_id, cnt DESC;
Для кросс-референса email-адресов с публичными утечками - Dehashed API или локальная база:
Bash:
# Проверка email через Have I Been Pwned API
curl -s -H "hibp-api-key: YOUR_KEY" \
  "https://haveibeenpwned.com/api/v3/breachedaccount/user@example.com" | jq '.'
В Maltego процесс такой: центральный узел - user_id, от него рёбра к email, IP-диапазону, временной зоне и ключевым сущностям из промптов (имена, локации, организации). Затем трансформы для обогащения: email разрешается в социальные профили, IP - в ASN и провайдера, упомянутые организации - в списки сотрудников через LinkedIn. Граф собирается за час-полтора, и картинка получается весьма неприятной для жертвы.

Шаг 3 - корреляция и верификация​

На этом этапе сопоставляю «мягкие» идентификаторы из дампа с публичными данными:
Python:
import sqlite3
import re
from collections import defaultdict

conn = sqlite3.connect('ai_leak.db')
c = conn.cursor()

# Извлечение потенциальных самоидентификаторов из промптов
patterns = {
    'name': r'(?:меня зовут|я\s+-\s*|my name is)\s+([А-ЯЁA-Z][а-яёa-z]+)',
    'city': r'(?:я из|живу в|я в городе|from)\s+([А-ЯЁA-Z][а-яёa-z]+)',
    'job':  r'(?:работаю|я\s+(?:по профессии|специалист))\s+(.{5,40})',
}

user_profile = defaultdict(dict)

c.execute('SELECT user_id, prompt_text FROM prompts')
for user_id, text in c.fetchall():
    for label, pattern in patterns.items():
        match = re.search(pattern, text, re.IGNORECASE)
        if match:
            user_profile[user_id][label] = match.group(1)

# Вывод профилей с 2+ идентификаторами
for uid, profile in user_profile.items():
    if len(profile) >= 2:
        print(f"[HIGH] {uid}: {profile}")
Этот скрипт - демонстрация концепции. В реальном анализе паттерны сложнее, учитывают контекст и работают с нормализованными данными. Но даже базовый regex по дампу в десятки тысяч диалогов вытаскивает десятки пользователей, которые прямо назвали себя в промптах. Люди удивительно откровенны с чатботами.

NSFW AI-платформа и безопасность: системные проблемы индустрии​

Инцидент MyLovely.ai - не аномалия. Закономерный результат системных проблем в нише companion и NSFW AI-сервисов.

Почему companion-платформы особенно уязвимы​

Исследование IAPP выявило пять структурных расхождений между чатботами и поисковыми системами. Главное: поисковый запрос раскрывает тему, а диалог с чатботом раскрывает жизнь. Для companion-платформ это верно вдвойне.

В отличие от корпоративных AI-решений с контрактными и техническими механизмами защиты, потребительские NSFW AI-платформы часто работают с минимальным надзором. По неподтверждённым данным The CyberSignal, стандартизированных фреймворков безопасности для «развлекательного» AI просто нет. Companion-сервисы живут в серой зоне: данные слишком чувствительны для открытого хранения, но инфраструктура выстроена по модели «запуск важнее безопасности». Знакомая картина, правда?

Ещё один фактор - функция «памяти». Согласно исследованию IAPP, несколько провайдеров предлагают persistent-персонализацию, которая формирует продольные профили пользователей на основе накопленных диалогов. Эти профили - поверхность для обучения, человеческого ревью, рекламной персонализации и (в случае утечки) деанонимизации. Для companion-платформ «память» - ключевая функция продукта, и отказаться от неё означает убить пользовательский опыт. Ловушка.

Retention как провал безопасности​

Тот факт, что более 106 000 записей MyLovely.ai были доступны для кражи, указывает на провал управления жизненным циклом данных. В AI-индустрии распространена практика «хранить всё» для обучения будущих моделей. По оценке The CyberSignal (источник не удалось независимо верифицировать), это общепринятая, но опасная стратегия.

В случае DeepSeek, по данным Wiz Research, таблица log_stream содержала логи начиная с 6 января 2025 года - накапливались без ротации с момента развёртывания сервиса. Доступ - без аутентификации. Стандартная картина для стартапов, где дата-инженеры и инженеры безопасности - разные люди, работающие с разной скоростью. Или - как бывает чаще - инженер безопасности отсутствует вовсе.

Защита данных на AI платформах - что реально работает​

Рекомендации для пользователей AI-сервисов​

Приватность в AI приложениях начинается с операционной гигиены. Ничего космического - но удивительно, как мало людей это делают.

Изоляция идентичностей. Для AI-companion сервисов - отдельный email, не связанный с рабочим или основным личным. Идеально - одноразовый алиас (SimpleLogin, AnonAddy) или ProtonMail-адрес без привязки к реальному имени.

Промпт-гигиена. Не упоминайте в промптах реальные имена, адреса, названия работодателей, имена близких. Каждый такой факт - точка привязки для деанонимизации. Даже фраза «у нас в Казани сегодня дождь» сужает поиск до конкретного города и даты.

VPN - обязателен, не опционален. IP-адрес логируется всегда. Без VPN ваша геолокация записывается с точностью до провайдера и района.

Мониторинг утечек. Подпишитесь на уведомления Have I Been Pwned для email, используемого на AI-платформах. Проверяйте регулярно - утечки companion-сервисов могут не попадать в HIBP сразу.

Периодическое удаление. Удаляйте историю диалогов вручную. По данным исследования IAPP, в некоторых случаях удалённые пользователем разговоры могут храниться ещё до трёх лет для внутреннего ревью. Но удаление хотя бы снижает объём данных, доступных при типичной инфраструктурной утечке. Лучше так, чем никак.

Рекомендации для разработчиков платформ​

Zero-retention по умолчанию. Не храните промпты дольше, чем нужно для генерации ответа. Если нужны данные для обучения - агрегируйте и анонимизируйте на этапе предобработки, а не храните сырые логи.

End-to-end шифрование диалогов. После ряда инцидентов с AI-агентами Мокси Марлинспайк (создатель Signal) разработал зашифрованный AI-чатбот Confer. Его слова: «Мы используем LLM для нефильтрованного мышления, которое могли бы вести в личном дневнике - только этот дневник является API-эндпоинтом к конвейеру данных, специально разработанному для извлечения смысла и контекста». Технология Confer предполагает, что даже при компрометации сервера контент мыслей пользователя остаётся приватным.

Sealed mode. Исследование IAPP предлагает концепцию «запечатанного режима» - архитектуры, при которой данные диалогов физически недоступны для серверной стороны. Следующий шаг после E2E-шифрования, адаптированный для AI-контекста.

Разделение инфраструктуры. Базы с пользовательским контентом не должны торчать по тем же сетевым путям, что и служебная инфраструктура. Инцидент DeepSeek - прямое следствие того, что ClickHouse-инстанс с чат-историей висел на публичных портах без аутентификации.

Shadow AI - скрытый вектор корпоративного риска

Отдельная проблема, на которую указывает анализ утечек companion-платформ, - использование сотрудниками корпоративных email для регистрации на потребительских AI-сервисах. Независимо от того, затронуты ли ваши сотрудники конкретно утечкой MyLovely.ai, рекомендуются следующие превентивные действия (на основе рекомендаций The CyberSignal, источник не удалось независимо верифицировать):
  1. Просканируйте через email security gateway или CASB исходящие регистрации на MyLovely.ai и аналогичные платформы с использованием корпоративных адресов. Принудительно сбросьте пароли для всех совпадений.
  2. Обновите корпоративную политику допустимого использования AI (AUP). Явно определите, какие AI-платформы разрешены для рабочего использования, и запретите ввод персональных или корпоративных данных в любое поле промпта потребительского AI-сервиса.
  3. Проинформируйте команду защиты руководства о возможности целевых фишинговых атак с использованием утёкших companion AI-логов. Атакующие могут использовать интимный характер этих логов для обхода традиционных антифишинговых защит. Когда шантажист знает, что человек писал чатботу в 2 ночи - это совсем другой уровень социальной инженерии.
Это не теория. Утечка Samsung в 2023 году - когда сотрудники трижды раскрыли конфиденциальный исходный код и записи совещаний через ChatGPT - показала, к чему приводит отсутствие такой политики. Samsung был вынужден полностью запретить инструменты генеративного AI на корпоративных устройствах и в сетях.

Заключение​

Утечка данных AI платформы - это не утечка паролей. Это утечка мыслей. И деанонимизация пользователей по этим данным - задача, которая с развитием LLM дешевеет с каждым месяцем. Исследование ETH Zurich (Staab et al., 2024) показало: по текстовым паттернам с помощью LLM стоит порядка нескольких долларов на профиль и достигает точности до 85% для отдельных типов атрибутов.

Для нас с вами это означает две вещи. Первая - при анализе инцидентов, связанных с AI-платформами, промпты и метаданные сессий - первоклассные артефакты, требующие такой же защиты, как медицинские записи или финансовые транзакции. Вторая - при пентесте AI-сервисов проверяйте не только стандартные векторы (SQLi, IDOR, SSRF), но и экспозицию лог-стримов, ClickHouse/Elasticsearch-инстансов и бэкап-хранилищ с чат-историей. Как показал кейс DeepSeek, достаточно просканировать нестандартные порты, чтобы найти открытую базу с миллионом записей.

Промпты - это новые PII. Индустрия пока этого не осознала. А значит - утечки будут продолжаться. Проверьте свои AI-сервисы на экспозицию лог-стримов. Прямо сейчас. Пока кто-то другой не проверил за вас.
 
Последнее редактирование модератором:
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Похожие темы

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab