Cuando corro npm install
dice found 33 vulnerabilities (2 low, 31 moderate)
run `npm audit fix` to fix them, or `npm audit` for details
.
Sin embargo, npm audit fix
salidasup to date in 11s
fixed 0 of 33 vulnerabilities in 24653 scanned packages
33 vulnerabilities required manual review and could not be updated
¿ review
Significa eso que no se supone que lo arregle el usuario?
Cuando lo ejecuto npm audit
, me da una lista de tablas, similar a esta:
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ Low │ Prototype Pollution │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ lodash │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ >=4.17.5 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ browser-sync [dev] │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ browser-sync > easy-extender > lodash │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://nodesecurity.io/advisories/577 │
└───────────────┴──────────────────────────────────────────────────────────────┘
En este ejemplo, la sección de corrección de la página vinculada dice Update to version 4.17.5 or later.
. Sin embargo, /node_modules/browser-sync/package.json
hay líneas:
"devDependencies": {
"lodash-cli": "4.17.5",
}
y no más dependencias lodash. Entonces ya debería ser v4.17.5. También verifiqué /node_modules/lodash/lodash.json
cuál tiene var VERSION = '4.17.10';
línea. En /node_modules/lodash/package.json
existen estas líneas:
"_from": "lodash@^4.17.4",
"_id": "[email protected]",
Creo que la versión se muestra en "_id", no en "_from", por lo que las versiones son correctas, pero la vulnerabilidad sigue apareciendo en la lista de auditoría.
Todavía soy nuevo en node.js y esos mensajes me confunden mucho. ¿Hay alguna forma de solucionarlo manualmente o deshacerme de esos mensajes con los que no puedo hacer nada?
Respuestas:
lodash-cli
indevDependencies
no afecta elbrowser-sync
funcionamiento de su proyecto,devDependencies
se ignoran cuando se instala un paquete como dependencia.Lo
audit
que dice el informe es que es loeasy-extender
que tienelodash
dependencia:Que depende de Lodash 3 , mientras que el problema se resolvió en Lodash 4. El problema podría ser fijada por bifurcan
easy-extender
, actualizándolo e instalarlo en lugar del paquete de registro público NGP. Pero no hay ningún problema real con esta dependencia.audit
La importancia del informe debe evaluarse manualmente. Incluso si la dependencia anidada tiene un riesgo de seguridad, esto no significa que se haya utilizado una función que introduce este riesgo. Esto tampoco significa que incluso si se usa, presenta un riesgo real debido a cómo se usa.browser-sync
es una herramienta de desarrollo que no se utiliza en producción, no existen tantos escenarios donde se puedan explotar sus vulnerabilidades. Y Prototype Pollution no es una vulnerabilidad en absoluto, solo un aviso de que un paquete no sigue las buenas prácticas, se puede ignorar.Generalmente, esta es la forma de corregir las vulnerabilidades reportadas:
La mayoría de las veces se espera que no avance más allá de un control de cordura.
patch-package
puede ayudar a parchear dependencias anidadas en el lugar, pero esto no afectará elaudit
informe.fuente
node_modules
, entonces, ¿bifurcar y arreglar es la única forma de deshacerse de ellos? ¿Y como nuevo usuario no tengo capacidad para hacer eso? ¿Debería informar a los desarrolladores de paquetes sobre ellos?audit
), la respuesta responde eso. La gente vivía sin él denpm audit
alguna manera. Las posibilidades de que causen problemas de seguridad reales a la aplicación son muy bajas, pero sin saber qué son y cómo se utilizan en su aplicación, no puedo garantizarlo.Si está absolutamente seguro de que desea omitir la auditoría, puede hacerlo agregando --no-audit
fuente
'npm audit fix' incrementará la versión de dependencia en package.json, lo que podría provocar la ruptura del código. Entonces, una mejor manera es abrir package-lock.json y actualizar las versiones de dependencia / subdependencia a la versión requerida. Mantenga el package-lock.json en el repositorio.
A veces, las vulnerabilidades provienen de paquetes de desarrollo. En ese caso, ignore esas vulnerabilidades, ya que no se detectan en la producción.
fuente
La mayor parte del problema que ocurrió en mi sistema se debió al paquete npm. Lo intenté,
No es necesario que vuelva a instalarlo.
Simplemente ejecute el programa nuevamente. Funcionó para mí.
fuente