В широко используемой JavaScript-библиотеке expr-eval обнаружена критическая уязвимость удаленного выполнения кода (RCE), затрагивающая тысячи проектов в области искусственного интеллекта и обработки естественного языка. Уязвимость, получившая идентификатор CVE-2025-12735, представляет серьезную угрозу для серверных сред и AI-приложений, обрабатывающих пользовательский ввод.
Детали уязвимости
Эксперты по безопасности особенно обеспокоены масштабами потенциального воздействия, учитывая широкое распространение библиотеки в производственных средах. Согласно данным GitHub Advisory GHSA-jc85-fpwf-qm7x и CERT/CC Note VU#263614, уязвимость была раскрыта 7 ноября 2025 года при координации исследователя Jangwoo Choe из UKO с командами GitHub Security и npm.
Технический анализ показывает, что проблема кроется в конструктивном недостатке метода evaluate() класса Parser. Злоумышленники могут использовать эту уязвимость, определяя произвольные функции в объекте контекста парсера. Специально созданные вредоносные payload-ы позволяют выполнять команды на уровне системы, что приводит к несанкционированному доступу к локальным ресурсам, утечке данных или полному компрометированию системы.
В соответствии с моделью оценки SSVC, техническое воздействие уязвимости классифицируется как "Total". Это означает, что злоумышленники получают полный контроль над поведением программного обеспечения или достигают тотального раскрытия всей системной информации. Следовательно, пораженные организации должны предпринять немедленные действия по устранению угрозы.
Для разработчиков и системных администраторов доступны два основных пути исправления. Первый вариант предполагает применение патча безопасности из Pull Request #288 в репозитории expr-eval. Данное обновление вводит строгий allowlist разрешенных функций, обязательные механизмы регистрации пользовательских функций и обновленные тестовые случаи для обеспечения дополнительной безопасности.
Второй вариант заключается в обновлении до последней исправленной версии expr-eval или переходе на форк expr-eval-fork. Примечательно, что версия expr-eval-fork v3.0.0 уже доступна и полностью устраняет данную уязвимость. Этот форк изначально был создан для решения проблемы Prototype Pollution (Issue #266), которая оставалась неисправленной в основном неподдерживаемом репозитории.
Организациям, использующим expr-eval, рекомендуется немедленно провести аудит зависимостей и приоритизировать установку исправлений. Поскольку библиотека является фундаментальным компонентом многих AI и NLP-систем, быстрое внедрение исправлений становится критически важным до того, как эксплуатация уязвимости станет массовой.
Специалисты рекомендуют использовать автоматизированные инструменты, такие как npm audit, для идентификации уязвимых версий во всей инфраструктуре. Кроме того, обновления должны развертываться в производственных системах сразу после их доступности. Регулярный мониторинг угроз и своевременное применение патчей помогут минимизировать риски для систем искусственного интеллекта, обрабатывающих конфиденциальные данные.
Важно отметить, что современные системы кибербезопасности должны включать комплексный подход к управлению уязвимостями. В частности, организации могут дополнительно использовать фреймворк MITRE ATT&CK для моделирования потенциальных атак и разработки превентивных мер. Своевременное обновление зависимостей и строгий контроль пользовательского ввода остаются ключевыми элементами защиты от RCE-атак в экосистеме Node.js.
Эксперты предупреждают, что задержки в установке исправлений могут привести к серьезным последствиям, учитывая растущую популярность AI-решений в различных отраслях. Следовательно, координация между командами разработки и информационной безопасности становится imperative для обеспечения непрерывной защиты инфраструктуры.
Ссылки
- https://www.cve.org/CVERecord?id=CVE-2025-12735
- https://nvd.nist.gov/vuln/detail/CVE-2025-12735
- https://www.kb.cert.org/vuls/id/263614
- https://github.com/silentmatt/expr-eval
- https://github.com/jorenbroekema/expr-eval
- https://www.npmjs.com/package/expr-eval-fork
- https://www.npmjs.com/package/expr-eval
- https://github.com/silentmatt/expr-eval/pull/288