CVE-2021-21315
Npm package System Information Library for Node.JS
2022-01-18
In this vulnerability, an attacker can send a malicious payload that will exploit the name parameter. After successful exploitation, attackers can execute remote.
Технический анализ и план устранения
Суть уязвимости
Уязвимость (CWE-78) в библиотеке systeminformation позволяет выполнить произвольные команды на операционной системе. Атакующий может внедрить вредоносные команды в параметр name функции si.inetChecksite(). При обработке этого параметра библиотека некорректно санирует данные, что приводит к выполнению команд оболочки с привилегиями процесса Node.js.
Как исправить
Обновите пакет systeminformation до исправленной версии.
- Минимальная версия с исправлением:
5.3.1 - Рекомендуемая версия: Последняя стабильная версия (на момент написания —
5.21.11).
Команды для обновления:
# Проверьте текущую версию в проекте
npm list systeminformation
# Обновите пакет в проекте
npm update systeminformation
# Или установите конкретную исправленную версию
npm install systeminformation@5.3.1
Для глобально установленного пакета:
npm update -g systeminformation
После обновления перезапустите все приложения и сервисы, зависящие от этого пакета.
Временное решение
Если немедленное обновление невозможно, примите следующие меры:
- Ограничение входных данных: Проверьте код приложения на использование функции
si.inetChecksite()или других методов, принимающих пользовательский ввод. Реализуйте строгую валидацию и санацию всех передаваемых в библиотеку параметров (например, разрешайте только буквенно-цифровые символы и точки для доменных имен). - Запуск с минимальными привилегиями: Убедитесь, что процесс Node.js (или контейнер), в котором работает уязвимый код, запущен от имени непривилегированного пользователя (без прав root или администратора).
- Сетевые ограничения: Если функция используется для проверки внешних ресурсов, ограничьте исходящие сетевые подключения приложения с помощью брандмауэра только до необходимых доверенных адресов.