Este mes ha sido descubierta que una biblioteca Node.js muy utilizada contiene una grave vulnerabilidad de inyección de comandos de nivel crítico.
Se le ha asignado como código de error CVE-2021-21315, el error afecta el componente npm «systemminformation» que recibe alrededor de 800,000 descargas semanales y ha obtenido cerca de 34 millones de descargas hasta la fecha desde su inicio.
El error de inyección de comandos de la citada librería ya ha sido solucionado y en pocas palabras el error en la librería «systemminformation«, que es una librería ligera de Node.js que les permite a los desarrolladores recuperar información del sistema relacionada con la CPU, el hardware, la batería, la red, los servicios y los procesos del sistema.
Según el desarrollador del proyecto, se espera que los desarrolladores utilicen información del sistema en el backend.
El desarrollador de la libraría ha declarado:
Node.js viene con información básica del sistema operativo, pero siempre quise un poco más. Así que se me ocurrió escribir esta pequeña biblioteca
Esta biblioteca aún está en progreso. Se supone que debe usarse como una biblioteca del lado del servidor/backend (definitivamente no funcionará dentro de un navegador)
Sin embargo, la presencia de la falla de inyección de código dentro de la librería «systemminformation» significaba que un atacante podía ejecutar comandos del sistema inyectando cuidadosamente la carga útil dentro de los parámetros no desinfectados utilizados por el componente.
La corrección que se muestra a continuación que se incluyó en la versión 5.3.1 de «systemminformation» desinfecta los parámetros, verifica si son del tipo de datos de cadena y además, si el parámetro había contaminado el prototipo en algún momento, antes de invocar más comandos.
Los usuarios de «systemminformation» deben actualizar a las versiones 5.3.1 y superiores para resolver la vulnerabilidad CVE-2021-21315 en su aplicación.
Solución rápida.
Para los desarrolladores que no pueden actualizar a la versión fija, el creador del proyecto ha compartido información sobre una solución alternativa que se puede adoptar en su lugar.
Esto nuevamente implica limpiar los parámetros de cualquier carácter ofensivo y validar adecuadamente si son del tipo de datos de cadena.
«Como solución alternativa en lugar de actualizar, asegúrese de verificar o desinfectar los parámetros de servicio que se pasan a si.inetLatency (), si.inetChecksite (), si.services (), si.processLoad () … solo permiten cadenas , rechace cualquier arreglo. El saneamiento de cadenas funciona como se esperaba «, se lee en el aviso de seguridad asociado de npm.
Se recomienda a los desarrolladores de Node.js que se aseguren de que sus aplicaciones desinfecten adecuadamente la entrada del usuario antes de usarla en los comandos y consultas de la base de datos.
Los usuarios también deben visitar periódicamente los avisos de seguridad de npm para obtener información sobre las últimas correcciones de seguridad realizadas en los componentes de Node.js.