Критическая уязвимость в Node.js-библиотеке systeminformation угрожает Windows-системам

vulnerability

Эксперты по кибербезопасности выявили критическую уязвимость типа "инъекция команд" в популярной Node.js-библиотеке systeminformation, предназначенной для сбора данных о системе. Эта ошибка, получившая идентификатор CVE-2025-68154, позволяет злоумышленникам выполнять произвольные команды на компьютерах под управлением Windows. Уязвимость представляет особую опасность, так как библиотека широко используется в инструментах мониторинга и администрирования.

Детали уязвимости

Проблема кроется в функции "fsSize()", которая отвечает за получение информации о свободном месте на диске. При этом разработчик не реализовал корректную проверку опционального параметра "drive", указывающего букву диска. В результате, некорректно обработанное пользовательское значение напрямую подставляется в команду PowerShell без необходимой санитаризации. Например, если приложение передаёт в эту функцию непроверенные данные из внешнего источника, атакующий может внедрить в параметр произвольные команды.

Технический анализ показывает, что уязвимость локализована в файле "filesystem.js". Параметр "drive" конкатенируется в строку команды PowerShell, что открывает путь для атаки. Интересно, что в кодовой базе библиотеки уже существует функция "util.sanitizeShellString()", которая правильно обрабатывает подобные входные данные в других местах. Однако в функции "fsSize()" эта защитная мера по какой-то причине не была применена.

Эксплуатация уязвимости осуществляется путём инъекции специальных символов, таких как точка с запятой и знак комментария ("#"). Например, передав в качестве параметра строку "C:; whoami #", злоумышленник может выполнить команду "whoami", а остальная часть оригинальной команды будет проигнорирована благодаря символу комментария. Более изощрённые атаки могут использовать эту уязвимость для загрузки вредоносного ПО, в том числе программ-вымогателей (ransomware), кражи конфиденциальных данных или установки механизмов постоянного доступа (persistence) в систему.

Поддержкой пакета systeminformation занимается разработчик Себастьян Хильдебрандт. Он оперативно отреагировал на сообщение об уязвимости и выпустил патч в версии 5.27.14 от 16 декабря 2025 года. Исправление заключается в применении функции "util.sanitizeShellString()" к параметру "drive" перед формированием команды PowerShell. Эта функция удаляет опасные символы, включая точки с запятой, вертикальные черты и другие специальные символы, которые могут использоваться для инъекции команд.

Серьёзность угрозы подтверждается высоким баллом CVSS (Common Vulnerability Scoring System) - 7.5. Это значение отражает значительный потенциал ущерба, особенно учитывая, что для эксплуатации уязвимости не требуется взаимодействие с пользователем или аутентификация. Риску подвержено любое приложение, которое использует уязвимые версии библиотеки и обрабатывает непроверенные пользовательские данные. Следовательно, атака может быть осуществлена удалённо.

Руководителям ИТ-отделов и разработчикам настоятельно рекомендуется немедленно обновить все зависимости, использующие systeminformation, до версии 5.27.14 или новее. Промедление с установкой обновления оставляет системы открытыми для потенциально разрушительных атак. Специалисты также советуют провести аудит кода на предмет других случаев передачи непроверенных пользовательских данных в функции системного уровня. В целом, данный инцидент служит важным напоминанием о необходимости строгого контроля входных данных даже в доверенных внутренних библиотеках.

Ссылки

Комментарии: 0