Moment: Уязвимое регулярное выражение

Созданный на 8 сент. 2017  ·  24Комментарии  ·  Источник: moment/moment

Следующее регулярное выражение, используемое для анализа дат, указанных как строки, уязвимо для ReDoS:

/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i

Замедление умеренно низкое: для 50 000 символов время сопоставления составляет около 2 секунд. Однако я все же предлагаю одно из следующего:

  • удалить регулярное выражение,
  • привязать регулярное выражение,
  • ограничить количество символов, которые могут совпадать при повторении,
  • ограничить размер ввода.

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

Bug Up-For-Grabs

Самый полезный комментарий

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

Все 24 Комментарий

Для уточнения, это в matchWord регулярное выражение в /src/lib/parse/regex.js здесь .

Вот железнодорожная диаграмма регулярного выражения . Из этого мы видим, что группировка с повторением связана с анализом арабских символов. Было бы полезно, если бы кто-то, кто понимает как регулярные выражения, так и арабский язык, мог взяться за это.

Также полезен обзор ReDoS .

Я возьму, что это еще никто не начал

@hamiltondanielb все твое :)

@cristianstaicu
При необходимости я могу привести реальный пример, показывающий замедление.

Хотелось бы увидеть пример, если это возможно :)

@ Drag0s отправил его на ваш личный адрес электронной почты.

К вашему сведению, это было добавлено в NSP (см. Здесь ), так что это, вероятно, скоро начнет ломать сборки людей.

@hamiltondanielb - Вы что-нибудь

Только что у нас был перерыв в сборке 👯

Печально, что проблема должна была стать достоянием общественности, прежде чем она была исправлена. Выпуск открыт 8 сентября, сегодня опубликовано сообщение NSP. @cristianstaicu, возможно, вам стоило напомнить сопровождающим о крайнем сроке раскрытия информации, чтобы придать этому импульс.

@mattgrande в этом есть мета: оказывается, версия nsp, к которой мы были прикреплены (2.8.1), зависит от момента (через joi), поэтому он сообщал об уязвимости в своей собственной зависимости:

1__bash

Обновление до nsp 3.1.0 разрешило эту проблему, потому что зависимости больше нет - так что остерегайтесь этого, если вы напрямую не зависите от момента.

Есть ли исправление для этого?

Посоветуйте, пожалуйста, какое исправление?

Исправление еще не опубликовано.

Пожалуйста, если вы заинтересованы в получении обновлений от сопровождающих, подпишитесь на уведомления об обновлениях этой проблемы, нажав кнопку «Подписаться» в правом столбце.

Чтобы добавить для этого исключение nsp , добавьте файл .nsprc :

{
  "exceptions": [
     "https://nodesecurity.io/advisories/532"
  ]
}

Спасибо @ westy92 ! Сохранена моя сборка.

Привет, @ westy92 и @ jacob-go. У меня есть следующий код.
var tasksMethods = require ('gulpfile-ninecms');
gulp.task ('nsp', tasksMethods.nsp);
Это не улавливает исключение файла .nsprc. На данный момент он продолжает выдавать мне ошибку уязвимости.
Я добавил файл в корень проекта. Что мне не хватает?

@Dexterslab, мы используем gulp-nsp , который отлично работает, когда .nsprc находится в каталоге проекта (на том же уровне, что и package.json ). Может быть, попробовать использовать gulp-nsp напрямую?

@cristianstaicu @mattgrande , это

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

Могу я предложить обслуживающему персоналу заблокировать этот конво?
Для всех, кто ждет исправления, просто нажмите кнопку подписки, и вы получите уведомление.

Если кто захочет заняться исправлением, смело открывайте пиар.

Для этого уже есть пиар https://github.com/moment/moment/pull/4326

Нужно ли кому-то уведомлять nsp это исправлено? https://nodesecurity.io/advisories/532

Это было исправлено в версии 2.19.3. Пожалуйста, обновите соответственно.

Я не уверен, как уведомить NSP - @cristianstaicu не могли бы вы или другие помочь здесь?

Я написал на адрес [email protected] :

Здравствуйте,

Нынешняя уязвимость moment.js (https://nodesecurity.io/advisories/532) была недавно исправлена, и исправление выпущено в версии 2.19.3.

Каков процесс сообщения об обновлениях статуса рекомендаций? Этот адрес электронной почты - лучшее, что я мог найти.

Благодаря!

Только что получил ответ, что базу данных NSP следует обновить до версии 2.19.3 в качестве фиксированной.

С моей стороны проверено, что 2.19.3 больше не предупреждает.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги