Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Checando suas dependências com npm audit

Checando suas dependências com npm audit

Auditando Suas Dependências / Inajara Leppa && Lucas Vieira

"Você confia nas dependências das suas dependências?
A ideia dessa conversa é apresentar o comando npm audit, que serve para identificar vulnerabilidades nas dependências da aplicação e poder resolvê-las antes de estourar em produção!"

Avatar for Inajara Leppa

Inajara Leppa

June 19, 2019
Tweet

More Decks by Inajara Leppa

Other Decks in Technology

Transcript

  1. Consultora de Desenvolvimento na ThoughtWorks e representante do pilar de

    Justiça Econômica e Social em Porto Alegre Inajara Leppa ©ThoughtWorks 2018 Commercial in Confidence
  2. ©ThoughtWorks 2018 Commercial in Confidence 4 OWASP TOP 10 Sua

    aplicação está vulnerável? • Se você não souber as versões de todos os componentes usados. Isso inclui componentes que você usa diretamente, bem como dependências aninhadas. • Se você não verificar vulnerabilidades regularmente e se inscrever em boletins de segurança relacionados aos componentes que você usa. • Se você não corrigir ou atualizar a plataforma, as estruturas e as dependências subjacentes de maneira oportuna e baseada em risco. • Se os desenvolvedores de software não testarem a compatibilidade de bibliotecas atualizadas, atualizadas ou corrigidas. A9:2017: Utilizando componentes com vulnerabilidades conhecidas
  3. ©ThoughtWorks 2018 Commercial in Confidence – Robbie Sinclair Head of

    Security, Country Energy, NSW Australia "Security is always excessive until it is not enough."
  4. ©ThoughtWorks 2018 Commercial in Confidence O que é? • Comando

    que analisa as dependências da sua aplicação, buscando vulnerabilidades conhecidas pela comunidade. • npm audit checa dependencias diretas, devDependencies, bundledDependencies, e optionalDependencies, mas não checa peerDependencies. • Está disponível a partir da versão 6 do npm
  5. ©ThoughtWorks 2018 Commercial in Confidence Como faz? > npm audit

    [--json|--parseable] --json Relatório detalhado em formato JSON --parseable Relatório detalhado em formato de texto
  6. ©ThoughtWorks 2018 Commercial in Confidence 9 Vulnerabilidade que necessita de

    revisão manual Vulnerabilidade com ação recomendada para resolução
  7. ©ThoughtWorks 2018 Commercial in Confidence 11 Severidade Ação Recomendada Crítica

    (Critical) Endereçar imediatamente Alta (High) Endereçar o quanto antes Moderada (Moderate) Endereçar quando possível Baixa (Low) Endereçar sem pressa É possível passar o nível mínimo de severidade no npm config (audit-level)
  8. ©ThoughtWorks 2018 Commercial in Confidence O que é? • Comando

    que instala automaticamente as atualizações para as dependências vulneráveis que não necessitam de revisão manual.
  9. ©ThoughtWorks 2018 Commercial in Confidence Como faz? > npm audit

    fix [--only|--dry-run] --only=prod executa apenas nas dependências diretas --dry-run mostra prévia do que vai acontecer ao executar o comando
  10. ©ThoughtWorks 2018 Commercial in Confidence • Se o projeto utiliza

    um registry privado para o npm (ex: jfrog artifactory), é necessário passar o registry público junto do comando e o audit será executado apenas nos repositórios públicos do npm. ex: npm audit --registry=https://registry.npmjs.org • Não recomendamos utilizar o comando de fix caso sua aplicação utilize um registry privado, pois isso irá alterar a url da dependência para apontar para o registry público. A solução para isso é executar os comandos recomendados pelo audit manualmente.
  11. ©ThoughtWorks 2018 Commercial in Confidence • Diferente do comando de

    fix, o comando de audit ainda não suporta verificar apenas dependências de produção e essa verificação deve ser feita manualmente. • Como forma de trazer esse olhar de segurança para o time, adicionamos essa verificação em nossa pipeline, que é executada 2x por dia e caso encontre vulnerabilidades envia uma mensagem em nosso canal de alertas do time.
  12. ©ThoughtWorks 2018 Commercial in Confidence • https://github.com/thoughtworks/talisman: A tool to

    detect and prevent secrets from getting checked in. • https://github.com/AGWA/git-crypt: git-crypt enables transparent encryption and decryption of files in a git repository. • https://github.com/zaproxy/zaproxy: It can help you automatically find security vulnerabilities in your web applications while you are developing and testing your applications. It's also a great tool for experienced pentesters to use for manual security testing. • https://yarnpkg.com/lang/en/docs/cli/audit/: Yarn also has an audit tool, but we didn't test it as much as the npm one.