bcrypt-ruby - это привязка Ruby для алгоритма хеширования паролей OpenBSD bcrypt(). До версии 3.1.2, переполнение чисел в реализации Java B…
bcrypt-ruby - это привязка Ruby для алгоритма хеширования паролей OpenBSD bcrypt(). До версии 3.1.2, переполнение чисел в реализации Java BCrypt для JRuby может привести к нулевым итерациям в цикле усиления. Затронутые приложения должны установить стоимость до 31, чтобы увидеть, как это происходит. Реализация JRuby bcrypt-ruby (`BCrypt.java``) вычисляет количество раундов, укрепляющих ключи, как подписанный 32-битный тизер. Когда `cost=31` (максимальный разрешенный драгоценным камнем), подписанный переполнение челнока приводит к тому, что круговой подсчет становится отрицательным, а укрепляющий цикл выполняет ** нулевые итерации**. Это разрушает bcrypt от 2^31 раундов экспоненциального укрепления ключа до эффективного вычисления постоянного времени - остается только начальная установка клавиш EksBlowfish и заключительная фаза шифрования 64x. Полученный хэш выглядит действительным (`$2a$31$...`) и правильно проверяет через `checkpw`, делая слабость невидимой для приложения. Эта проблема возникает только при использовании cost=31 или при проверке `$2a$31$` хэша. Эта проблема была исправлена в версии 3.1.22. В качестве обходного пути установите стоимость на что-то меньше 31.
Продукт выполняет вычисление, которое может привести к переполнению или обратному переходу целого числа, когда логика предполагает, что результирующее значение всегда будет больше исходного. Это происходит, когда целочисленное значение увеличивается до величины, превышающей допустимый предел для используемого представления. В этом случае значение может стать очень маленьким или отрицательным.
https://cwe.mitre.org/data/definitions/190.html →Открыть в коллекции CWE →Данная атака приводит к выходу целочисленной переменной за допустимый диапазон значений. Целочисленная переменная нередко используется в качестве смещения, например при выделении памяти и т. п. Злоумышленник, как правило, контролирует значение такой переменной и стремится вывести его за допустимые границы. Например, если рассматриваемое целое число инкрементируется сверх максимально допустимого значения, оно может обернуться в очень маленькое или отрицательное число, что повлечёт некорректное поведение. В худшем случае злоумышленник может выполнить произвольный код.
https://capec.mitre.org/data/definitions/92.html →Открыть в коллекции CAPEC →| Продукт | Вендор | Статус |
|---|---|---|
| ruby-bcrypt | Отслеживается | |
| ruby-bcrypt | Отслеживается | |
| ruby-bcrypt | Отслеживается | |
| ruby-bcrypt | Отслеживается | |
| bcrypt-ruby | * | Отслеживается |