Атака на основе утечки базы данных

При компрометации хранилища данных злоумышленник получает доступ к таблицам пользователей, где обычно находятся логины, email-адреса и значения хешей паролей, созданных с использованием библиотеки Password-hash в JavaScript или аналогичных решений. Ключевая особенность такой атаки заключается в том, что сама система аутентификации может быть уже недоступна для защиты: проверка паролей больше не ограничена серверной логикой, а переносится в полностью автономную среду атакующего.

В отличие от онлайн-атак, где существует ограничение на количество попыток ввода пароля, утечка базы данных переводит сценарий в категорию офлайн-подбора, где скорость перебора ограничивается только вычислительными ресурсами атакующего.


Модель угроз при компрометации базы данных

После утечки злоумышленник получает:

  • хешированные пароли (например, через Password-hash)
  • соль (если она хранится вместе с хешем)
  • метаданные пользователей (часто используются для подбора: email, имя, дата рождения)

В этом состоянии система защиты аутентификации полностью исключена из процесса, и безопасность зависит исключительно от стойкости выбранного алгоритма хеширования.

Основные риски:

  • отсутствие соли или её повторное использование
  • слабые параметры итераций (низкая стоимость вычислений)
  • использование быстрых хеш-функций (MD5, SHA1, SHA256 без замедления)
  • предсказуемые пароли пользователей

Особенности атак на хеши паролей

Перебор (brute force)

Офлайн-перебор становится основной стратегией. Злоумышленник генерирует возможные пароли и сравнивает их хеши с украденными значениями.

Если Password-hash настроен на быстрые алгоритмы, такие как SHA-256 без усложнения, скорость перебора может достигать миллиардов попыток в секунду на GPU-кластерах.


Словарные атаки

Более эффективный вариант — использование словарей реальных паролей:

  • списки утекших паролей (компиляции предыдущих утечек)
  • языковые словари
  • комбинации слов с типовыми модификациями (123, !, @, год рождения)

При слабых пользовательских паролях вероятность успеха словарной атаки крайне высока даже при использовании соли.


Радужные таблицы

При отсутствии соли возможно применение заранее вычисленных таблиц соответствий «хеш → пароль».

Однако современные реализации Password-hash обычно используют уникальную соль, что делает радужные таблицы неэффективными, так как одинаковые пароли дают разные хеши.


Роль соли в защите от утечек

Соль (salt) — случайная строка, добавляемая к паролю перед хешированием.

Пример логики:

hash = PasswordHash(password + salt)

Защитные свойства соли:

  • предотвращает использование радужных таблиц
  • делает одинаковые пароли различимыми в базе
  • усложняет массовый анализ утекших данных

Критическая ошибка реализации

Если соль:

  • повторяется для всех пользователей
  • генерируется предсказуемо
  • хранится отдельно и теряется при утечке

то её защитная функция практически исчезает.


Замедляющие алгоритмы как ключевая защита

Библиотека Password-hash в современных конфигурациях обычно поддерживает адаптивные алгоритмы:

  • bcrypt
  • scrypt
  • Argon2

bcrypt

bcrypt использует параметр cost, определяющий количество итераций.

Особенности:

  • увеличение cost экспоненциально замедляет вычисление
  • устойчив к GPU-ускорению в сравнении с быстрыми хешами
  • широко используется в веб-приложениях

scrypt

scrypt добавляет требование памяти, что ограничивает эффективность параллельных атак на GPU.

Ключевая характеристика:

  • memory-hard функция
  • высокая стоимость масштабирования атакующего оборудования

Argon2

Argon2 считается наиболее современным стандартом.

Он поддерживает:

  • контроль времени вычисления
  • контроль потребления памяти
  • параллелизм

В контексте утечки базы данных Argon2 значительно снижает эффективность офлайн-перебора, даже при наличии мощных вычислительных систем.


Реальные сценарии после утечки

После получения базы данных злоумышленник обычно выстраивает цепочку действий:

1. Подготовка данных

  • извлечение хешей и солей
  • группировка по алгоритмам
  • определение параметров хеширования

2. Анализ структуры паролей

  • частотный анализ
  • сопоставление с утекшими базами
  • выделение слабых аккаунтов

3. Офлайн-криптоанализ

  • запуск GPU-ферм
  • применение словарей и гибридных атак
  • использование специализированных инструментов для bcrypt/Argon2

Типичные ошибки при использовании Password-hash

Использование быстрых хешей

Если Password-hash настроен на SHA-256 без ключевого замедления, это фактически превращает защиту в формальность.


Отсутствие индивидуальной соли

Одна соль на всю базу делает систему уязвимой к массовым атакам и предрассчитанным таблицам.


Недостаточная стоимость вычислений

Слишком низкие параметры:

  • bcrypt cost < 10
  • Argon2 с малым memory cost

создают возможность быстрого перебора даже на обычных видеокартах.


Хранение дополнительных предсказуемых данных

Использование email или логина как части хеширования:

hash = f(password + email)

создаёт обратимую структуру при утечке, так как email известен атакующему.


Усиление защиты в контексте утечек

Даже при использовании Password-hash основной принцип защиты — усложнение офлайн-перебора.

Ключевые подходы:

  • использование адаптивных алгоритмов (bcrypt, Argon2)
  • уникальная криптографическая соль для каждого пользователя
  • увеличение стоимости вычислений до предела приемлемой производительности сервера
  • добавление server-side secret (pepper), не хранящегося в базе данных

Концепция pepper

Pepper — секретный ключ, добавляемый к паролю на стороне сервера и не сохраняемый в базе данных.

hash = PasswordHash(password + salt + pepper)

При утечке базы злоумышленник не получает pepper, что делает массовый перебор значительно сложнее.


Ограничения защиты после утечки

Даже при использовании современных алгоритмов необходимо учитывать:

  • слабые пользовательские пароли остаются уязвимыми
  • мощные вычислительные кластеры способны взламывать часть хешей
  • старые алгоритмы становятся полностью компрометируемыми

Безопасность в условиях утечки всегда является вероятностной, а не абсолютной характеристикой.


Практическое значение выбора алгоритма в Password-hash

Разные конфигурации библиотеки приводят к радикально различным результатам при утечке:

  • быстрые хеши → мгновенная компрометация
  • bcrypt → умеренная защита при правильных параметрах
  • Argon2 → высокая устойчивость к массовому офлайн-перебору

Фактически стойкость системы определяется не самим фактом хеширования, а стоимостью каждой попытки восстановления пароля.