Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
cve-2022-22976-bcrypt-skips-salt | Kitploit
Инструменты/GitHubGitHub/spring-io/cve-2022-22976-bcrypt-skips-salt
Взлом паролейИнструменты шифрования/дешифрованияАнализ уязвимостейАутентификацияНеправильная КонфигурацияБезопасность Баз Данных
GitHubspring-io/cve-2022-22976-bcrypt-skips-salt

cve-2022-22976-bcrypt-skips-salt

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Репозиторий
14 лет назадЕщё не проверено

Проверка хешей BCrypt

Чтобы помочь с мерами по устранению CVE-2022-xxxx, вы можете использовать этот инструмент для проверки вашей базы данных на наличие хешей, требующих обновления.

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

Для демонстрации этого используется пример приложения в памяти. На этом примере приложения вы можете запустить шаг check, например так:

root@kitploit:~
./mvnw spring-boot:run@check

Это проверит пример базы данных на наличие любых BCrypt-хешей, которые нужно обновить.

Затем вы можете запустить шаг update, например так:

root@kitploit:~
./mvnw spring-boot:run@update

Это попытается обновить все уязвимые хеши, обнаруженные в примере базы данных.

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

Настройка под вашу базу данных

ПРЕДУПРЕЖДЕНИЕ: Приступайте к этим шагам только после того, как обновите ваше приложение, чтобы использовать количество раундов меньше 31. OWASP в настоящее время рекомендует значение 10, хотя на некоторых высокопроизводительных системах используются значения вплоть до 16.

Инструмент поставляется с примером в памяти для целей тестирования. Вам нужно будет заменить его собственными классами, которые интегрируются с вашими данными.

Для этого сначала склонируйте этот репозиторий.

Затем замените код в пакете sample кодом, который может получить доступ к данным паролей в вашем приложении. Возможно, вы захотите написать код, который проверяет существующие пароли на уязвимость. Вам понадобится код, который обновляет все затронутые хеши. В обоих случаях вы можете использовать VulnerabilityCheck для проверки и обновления заданного хеша.

СОВЕТ: При написании вышеуказанного кода учитывайте, сколько паролей вам нужно обновить. Помните, что соединение с базой данных может быть потеряно, компьютеры могут выйти из строя, память может закончиться и так далее. Не рекомендуется, например, загружать миллионы записей в память одновременно.

После обновления хешей паролей вы можете перейти на последнюю версию Spring Security. Если вы используете функцию обновления паролей Spring Security, то при входе пользователей их пароль будет автоматически перехеширован с использованием нового значения раундов, которое вы настроили.

Часто задаваемые вопросы

В: Как узнать, уязвимы ли мои хеши?

О: Они уязвимы, если были хешированы с использованием класса BCrypt из Spring Security с фактором работы 31. Вы можете подтвердить это, проверив хеши паролей в вашей системе, которыми управляет Spring Security. Если они начинаются с '{bcrypt}$2a$31', '{bcrypt}$2b$31', '{bcrypt}$2y$31', '{bcrypt}$2$31', '$2a$31', '$2b$31', '$2y$31' или '$2$31', то этот пароль уязвим и его необходимо обновить.

В: Как мне изменить своё приложение?

О: OWASP рекомендует фактор работы 10 для BCrypt. Некоторые высокопроизводительные системы используют значение вплоть до 16. Каждая система уникальна, и BCrypt спроектирован так, чтобы можно было увеличивать фактор работы со временем по мере необходимости.

В: Где мне изменить своё приложение?

О: Вероятно, вы задаёте фактор работы, создавая BCryptPasswordEncoder следующим образом:

root@kitploit:~
new BCryptPasswordEncoder(31)

Он может находиться в определении бина, например так:

root@kitploit:~
@Bean
public PasswordEncoder passwordEncoder() {
    return new BCryptPasswordEncoder(31);
}

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

В: Я только что обновил Spring Security, и теперь некоторые или все входы в систему и регистрации пользователей зависают. Что случилось?

О: Начиная с Spring Security 5.5.7+, 5.6.4+, 5.7.0+, хеши паролей, указывающие на фактор работы 31 -- например, начинающиеся с '{bcrypt}$2a$31', '{bcrypt}$2b$31', '{bcrypt}$2y$31', '{bcrypt}$2$31', '$2a$31', '$2b$31', '$2y$31' или '$2$31', -- будут занимать 2-3 дня на каждое вычисление хеша. Чтобы устранить это, вам нужно будет изменить Spring Security, чтобы использовать меньшее количество раундов. Затем используйте этот инструмент для обновления уязвимых хешей паролей.

В: Я выполнил все три рекомендуемых шага (изменил конфигурацию BCryptPasswordEncoder, обновил хеши паролей и обновил Spring Security). Изменённые хеши паролей не обновляются до нового настроенного фактора работы. Что мне делать?

Убедитесь, что у вас опубликован бин типа UserDetailsPasswordService. Этот бин используется для обновления паролей до нового значения логарифмических раундов BCrypt.

В: Почему Spring Security не может просто обновить уязвимые пароли при обновлении без необходимости в этом инструменте?

Во-первых, потому что в последней версии Spring Security хеши паролей с фактором работы 31 вычисляются корректно и, следовательно, на каждое вычисление уходит 2-3 дня. Непрактично предполагать, что это разумные издержки для приложений.

Во-вторых, Spring Security поддерживает только увеличение фактора работы (например, с 10 до 12), а не уменьшение (например, с 31 до 10).

Скачать инструмент