Выпущены обновлённые версии 3.2.1, 3.1.2, 3.0.2 и 2.0.1 гема date
, содержащие исправление безопасности, связанное с уязвимостью типа ReDoS (отказ от обслуживания в регулярных выражениях) в методах разбора дат. С её помощью можно совершить реальную DoS-атаку.
Подробности
Методы разбора дат гема date, включая Date.parse
, используют внутри регулярные выражения, некоторые из которых уязвимы перед ReDoS-атакой. Могут быть затронуты приложения и библиотеки, которые применяют эти методы к недоверенным входным данным.
Исправление вместо изменения регулярных выражений просто ограничивает длину входной строки по умолчанию 128 байтами — поскольку регулярных выражений в этом геме используется много и не исключено наличие ещё не обнаруженных уязвимостей подобного рода в остальных регулярных выражениях. Для совместимости можно убрать ограничение передачей значения nil
в аргументе limit
(например, Date.parse(str, limit: nil)
), но имейте в виду, что разбор в таком случае может занять много времени.
Рекомендуется обновить гем до указанных или более поздних версий. Это можно сделать командой gem update date
. Если вы используете Bundler — добавьте в Gemfile строку gem "date", ">= 3.2.1"
.
Затронутые версии гема date
- 2.0.0 и ранее (поставляются с веткой Ruby 2.6);
- 3.0.1 и ранее (поставляются с веткой Ruby 2.7);
- 3.1.1 и ранее (поставляются с веткой Ruby 3.0);
- 3.2.0 и ранее.
Спасибо svalkanov за обнаружение уязвимости.
>>> Источник