CVE-2021-29486 in cumulative-distribution-function
Сводка
по VulDB • 04.06.2026
cumulative-distribution-function — это библиотека с открытым исходным кодом для npm, которая вычисляет статистическую функцию кумулятивного распределения на основе массива данных со значениями x. В версиях старше 2.0.0 приложения, использующие эту библиотеку с некорректными данными, могут завершать работу аварийно или переходить в бесконечный цикл. В случае, если серверное приложение на Node.js использует эту библиотеку для обработки некорректных нечисловых данных, сервер Node.js может завершить работу аварийно. Это может повлиять на других пользователей данного сервера и/или потребовать перезагрузки сервера для его корректной работы. В случае, если браузерное приложение использует эту библиотеку для обработки некорректных нечисловых данных, браузер может завершить работу аварийно или зависнуть. В коде, оценивающем функцию кумулятивного распределения входных данных, была обнаружена уязвимость, приводящая к бесконечному циклу. Хотя в документации указано, что требуются числовые данные, некоторые пользователи могут ошибочно принять массив строк, такой как ["1","2","3","4","5"], за числовые данные [1,2,3,4,5], хотя на самом деле это данные типа string. Бесконечный цикл возможен при вычислении функции кумулятивного распределения для заданной точки, если входные данные имеют тип string, а не `number`. Данная уязвимость позволяет реализовать атаку на отказ в обслуживании (DoS) с исчерпанием ресурсов процессора (infinite-cpu-loop) в любом приложении, использующем npm:cumulative-distribution-function версии 1.0.3 или более ранней, если злоумышленник может предоставить библиотеке некорректные данные. Уязвимость также может проявиться, если источник данных, подлежащих анализу, изменит тип данных с массивов чисел (корректно) на массивы строк (некорректно, но не обнаруживается более ранними версиями библиотеки). Пользователям следует обновиться как минимум до версии 2.0.0 или до последней доступной версии. Были созданы тесты для нескольких типов некорректных данных, и версия 2.0.0 была протестирована на предмет отклонения этих некорректных данных путем выброса исключения `TypeError()` вместо их обработки. Разработчикам, использующим эту библиотеку, возможно, потребуется немного скорректировать код своих приложений для лучшей толерантности или обработки этого исключения TypeError. Приложения, выполняющие корректную проверку числовых данных перед отправкой их в эту библиотеку, должны быть в основном unaffected этим исправлением. Уязвимость может быть смягчена в более старых версиях путем обеспечения того, чтобы в функцию `cumulative-distribution-function` и её функцию `f(x)` передавались только конечные числовые данные типов `Array[number]` и `number` соответственно.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.