Quando eu corro npm install
, diz found 33 vulnerabilities (2 low, 31 moderate)
run `npm audit fix` to fix them, or `npm audit` for details
.
No entanto, npm audit fix
saídasup to date in 11s
fixed 0 of 33 vulnerabilities in 24653 scanned packages
33 vulnerabilities required manual review and could not be updated
Isso review
significa que não deve ser consertado pelo usuário?
Quando eu executo, npm audit
ele me dá uma lista de tabelas, semelhante 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 │
└───────────────┴──────────────────────────────────────────────────────────────┘
Neste exemplo, a seção de correção da página vinculada diz Update to version 4.17.5 or later.
. No entanto, /node_modules/browser-sync/package.json
existem linhas:
"devDependencies": {
"lodash-cli": "4.17.5",
}
e não mais dependências de lodash. Portanto, já deve ser v4.17.5. Eu também verifiquei /node_modules/lodash/lodash.json
qual tem var VERSION = '4.17.10';
linha. No /node_modules/lodash/package.json
existem estas linhas:
"_from": "lodash@^4.17.4",
"_id": "[email protected]",
Eu acredito que a versão mostrada em "_id", não em "_from", então as versões estão corretas, mas a vulnerabilidade ainda aparece na lista de auditoria.
Ainda sou novo no node.js e essas mensagens me confundem muito. Existe alguma maneira de consertar manualmente ou me livrar dessas mensagens, com as quais não posso fazer nada?
Respostas:
lodash-cli
emdevDependencies
não afeta comobrowser-sync
funciona em seu projeto,devDependencies
são ignorados quando um pacote é instalado como uma dependência.O que o
audit
relatório diz éeasy-extender
que temlodash
dependência:Ele depende Lodash 3 , enquanto o problema foi corrigido no Lodash 4. O problema poderia ser corrigido por bifurcação
easy-extender
, atualizá-lo e instalá-lo em vez do pacote de registro público NPM. Mas não há nenhum problema real com essa dependência.audit
a importância do relatório deve ser avaliada manualmente. Mesmo que a dependência aninhada tenha risco de segurança, isso não significa que um recurso que apresenta esse risco foi usado. Isso também não significa que, mesmo se usado, apresenta risco real devido à forma como é usado.browser-sync
é uma ferramenta de desenvolvimento que não é usada na produção, não há tantos cenários onde suas vulnerabilidades possam ser exploradas. E o Prototype Pollution não é uma vulnerabilidade, apenas um aviso de que um pacote não segue as boas práticas, pode ser ignorado.Geralmente, esta é a maneira de corrigir as vulnerabilidades relatadas:
Na maioria das vezes, espera-se que você não vá além de uma verificação de sanidade.
patch-package
pode ajudar a corrigir dependências aninhadas no local, mas isso não afetará oaudit
relatório.fonte
node_modules
, então bifurcar e consertar é a única maneira de se livrar deles? E como novo usuário, não tenho capacidade para fazer isso? Devo enviar aos desenvolvedores de pacotes sobre eles?audit
), a resposta responde a isso. As pessoas viviam semnpm audit
alguma forma. As chances de que causem problemas reais de segurança ao aplicativo são muito baixas, mas sem saber o que são e como são usados em seu aplicativo, não posso garantir isso.Se você estiver absolutamente certo de que deseja pular a auditoria, pode fazê-lo anexando --no-audit
fonte
'npm audit fix' irá incrementar a versão da dependência no package.json, o que pode levar à quebra do código. Portanto, a melhor maneira é abrir o package-lock.json e atualizar as versões de dependência / subdependência para a versão necessária. Mantenha o pacote-lock.json no repositório.
Às vezes, as vulnerabilidades são de pacotes de desenvolvimento. Nesse caso, ignore essas vulnerabilidades, pois elas não estão sendo detectadas na produção.
fonte
A maior parte do problema ocorrido no meu sistema foi devido ao pacote npm. Eu tentei,
Você não precisa instalar novamente.
Basta executar o programa novamente. Funcionou para mim
fonte