При компрометации хранилища данных злоумышленник получает доступ к таблицам пользователей, где обычно находятся логины, email-адреса и значения хешей паролей, созданных с использованием библиотеки Password-hash в JavaScript или аналогичных решений. Ключевая особенность такой атаки заключается в том, что сама система аутентификации может быть уже недоступна для защиты: проверка паролей больше не ограничена серверной логикой, а переносится в полностью автономную среду атакующего.
В отличие от онлайн-атак, где существует ограничение на количество попыток ввода пароля, утечка базы данных переводит сценарий в категорию офлайн-подбора, где скорость перебора ограничивается только вычислительными ресурсами атакующего.
После утечки злоумышленник получает:
В этом состоянии система защиты аутентификации полностью исключена из процесса, и безопасность зависит исключительно от стойкости выбранного алгоритма хеширования.
Основные риски:
Офлайн-перебор становится основной стратегией. Злоумышленник генерирует возможные пароли и сравнивает их хеши с украденными значениями.
Если Password-hash настроен на быстрые алгоритмы, такие как SHA-256 без усложнения, скорость перебора может достигать миллиардов попыток в секунду на GPU-кластерах.
Более эффективный вариант — использование словарей реальных паролей:
При слабых пользовательских паролях вероятность успеха словарной атаки крайне высока даже при использовании соли.
При отсутствии соли возможно применение заранее вычисленных таблиц соответствий «хеш → пароль».
Однако современные реализации Password-hash обычно используют уникальную соль, что делает радужные таблицы неэффективными, так как одинаковые пароли дают разные хеши.
Соль (salt) — случайная строка, добавляемая к паролю перед хешированием.
Пример логики:
hash = PasswordHash(password + salt)
Если соль:
то её защитная функция практически исчезает.
Библиотека Password-hash в современных конфигурациях обычно поддерживает адаптивные алгоритмы:
bcrypt использует параметр cost, определяющий количество итераций.
Особенности:
scrypt добавляет требование памяти, что ограничивает эффективность параллельных атак на GPU.
Ключевая характеристика:
Argon2 считается наиболее современным стандартом.
Он поддерживает:
В контексте утечки базы данных Argon2 значительно снижает эффективность офлайн-перебора, даже при наличии мощных вычислительных систем.
После получения базы данных злоумышленник обычно выстраивает цепочку действий:
Если Password-hash настроен на SHA-256 без ключевого замедления, это фактически превращает защиту в формальность.
Одна соль на всю базу делает систему уязвимой к массовым атакам и предрассчитанным таблицам.
Слишком низкие параметры:
создают возможность быстрого перебора даже на обычных видеокартах.
Использование email или логина как части хеширования:
hash = f(password + email)
создаёт обратимую структуру при утечке, так как email известен атакующему.
Даже при использовании Password-hash основной принцип защиты — усложнение офлайн-перебора.
Ключевые подходы:
Pepper — секретный ключ, добавляемый к паролю на стороне сервера и не сохраняемый в базе данных.
hash = PasswordHash(password + salt + pepper)
При утечке базы злоумышленник не получает pepper, что делает массовый перебор значительно сложнее.
Даже при использовании современных алгоритмов необходимо учитывать:
Безопасность в условиях утечки всегда является вероятностной, а не абсолютной характеристикой.
Разные конфигурации библиотеки приводят к радикально различным результатам при утечке:
Фактически стойкость системы определяется не самим фактом хеширования, а стоимостью каждой попытки восстановления пароля.