CVE-2021-41817: DoS-уязвимость обработки дат в Ruby
Выпущены обновлённые версии 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 за обнаружение уязвимости.
>>> Источник