Skip to main content

Lições de segurança com um Snyk Ambassador

Escrito por
Headshot of Andres Haro

Andres Haro

11 de outubro de 2022

0 minutos de leitura

Por Andres Haro, Snyk Ambassador

A segurança é uma preocupação no setor de tecnologia há muitos anos. No entanto, muitas empresas não seguem seus próprios protocolos ou guias quando o assunto é proteger o código.

É fácil acreditar que incidentes de segurança são raros (ou improváveis de acontecer na sua organização), mas o caso recente da Uber é apenas um entre muitos exemplos que provam o contrário. O incidente começou quando um jovem de 18 anos usou engenharia social para convencer um funcionário da Uber a entrar em um site falso da empresa. Assim, conseguiu capturar as credenciais digitadas em tempo real e acessar o site verdadeiro da Uber.

A invasão da Uber e as lições aprendidas

Na época, a Uber tinha a MFA ativada: um aplicativo solicitava que o funcionário tocasse em um botão no smartphone no momento do login. Para contornar essa proteção, o invasor inseriu as credenciais no site verdadeiro várias vezes. O funcionário ficou confuso ou cansado e acabou tocando no botão. Quando isso aconteceu, o invasor já estava dentro.

Agora, imagine uma empresa como a Uber sem poder fazer nada. Mesmo com a MFA, um usuário mal-intencionado foi criativo o bastante para obter informações pessoais da empresa e causar danos. Imagine o que poderia ter acontecido se a Uber não tivesse tomado medidas para proteger seu código.

Como proteger seu código?

Se você faz parte da comunidade de tecnologia, provavelmente consulta o Stack Overflow com frequência em busca de código open source e respostas para suas dúvidas. É uma ótima ferramenta para colaboração e resolução de problemas, mas copiar código de um site de terceiros diretamente para sua aplicação pode expor você a diversas vulnerabilidades.

Para evitar esses riscos, recomendo usar a ferramenta Code Checker da Snyk para analisar o código escolhido antes de copiá-lo para uma branch do seu ambiente de produção.

Página do Snyk Code Checker exibindo código JavaScript inserido para análise de segurança, com botões para se cadastrar pelo GitHub e pelo Google e um botão “Verificar código”.

Talvez você esteja se perguntando o que a Snyk pode fazer por mim. Além de ajudar você a analisar código de qualquer plataforma, a Snyk identifica possíveis problemas nos seus repositórios atuais e recomenda como corrigi-los.

Na imagem abaixo, você verá que a Snyk está conectada à minha conta do GitHub.

Painel de segurança da Snyk mostrando tarefas pendentes, projetos vulneráveis e a quantidade atual de problemas de segurança.

Ao conectar a Snyk à sua conta do GitHub, você poderá verificar quais dependências estão desatualizadas, o que está comprometendo seu código e o que precisa ser atualizado.

A imagem a seguir mostra um relatório da Snyk com as vulnerabilidades encontradas na análise, classificadas por gravidade como baixa, média, alta ou crítica. Com essas informações, você pode decidir se vai ignorar ou corrigir cada vulnerabilidade.

Painel do Snyk mostrando vulnerabilidades em package.json, incluindo um problema de poluição de protótipo de alta gravidade no lodash e um botão para corrigir vulnerabilidades.

Como profissional de DevSecOps, sempre priorizo as vulnerabilidades críticas e incentivo as equipes a analisar o scorecard e avaliar se é possível corrigi-las imediatamente. Por quê? Porque os engenheiros de software precisam ser informados sobre as vulnerabilidades descobertas e verificar se há espaço na sprint atual para resolvê-las. Por outro lado, algumas equipes decidem corrigir as vulnerabilidades altas ou críticas no mesmo dia em que são descobertas — tudo depende dos recursos e das pessoas disponíveis na organização. A Snyk é especialmente útil porque atende a qualquer uma dessas decisões: você pode corrigir uma vulnerabilidade mais tarde ou criar um PR imediatamente.

Ao clicar em corrigir esta vulnerabilidade, você verá o seguinte:

Relatório de correções de segurança com pacotes vulneráveis, atualizações disponíveis, correções parciais e problemas sem solução

A tela Abrir um PR de correção lista todas as vulnerabilidades encontradas na análise e pode gerar algumas dúvidas específicas. Para saber mais sobre um problema na lista de PRs, clique em uma das vulnerabilidades. Neste exemplo, vamos clicar em Regular Expression Denial of Service (ReDoS), em Problemas com correção.

Página do banco de dados de vulnerabilidades da Snyk que detalha uma vulnerabilidade de negação de serviço por expressão regular de alta gravidade no pacote npm ansi-html.

Essa tela apresenta uma análise detalhada do problema. Se ele não for real ou tiver sido sinalizado por engano, você pode reportá-lo clicando em “Encontrou um erro?”. Você será direcionado a outra tela para compartilhar os detalhes.

Se você não conhece uma determinada vulnerabilidade, pode aprender mais sobre ela no Snyk Learn. Neste exemplo, acesse a página de lições sobre ReDoS.

Agora que temos mais confiança e informações, podemos criar o PR. No GitHub, ele deve ficar mais ou menos assim:

Pull request do GitHub do Snyk intitulada “Correção de 8 vulnerabilidades”, listando dependências npm vulneráveis, sua gravidade, os problemas e o nível de maturidade da exploração.

Depois disso, você poderá fazer o merge do novo PR e da nova branch com todas as correções.

Solicitação de pull do GitHub mostrando que todas as verificações foram aprovadas, que não há conflitos de mesclagem e a opção de mesclar a solicitação de pull

Se você optar por fazer o merge, verá o seguinte:

Interface do GitHub em tema escuro mostrando uma pull request mesclada e fechada com sucesso, com um editor de comentários e o botão Excluir branch.

Para saber o que mudou no seu repositório, confira os arquivos alterados no GitHub:

Comparação de código em tema escuro mostrando atualizações de versão de dependências em package.json, com uma grande comparação recolhida de package-lock.json acima

Como você pode ver, fizemos algumas atualizações para manter tudo em dia. Agora, podemos voltar ao dashboard da Snyk e verificar se tudo foi corrigido. Se precisar enviar um relatório para a liderança, recomendo adicionar essas pessoas à sua conta da Snyk e compartilhar esse tipo de relatório com elas.

Painel de relatório de segurança com totais de gravidade dos problemas, problemas de licença, tendências ao longo do tempo, períodos de exposição e métricas de atividade

Amplie seus conhecimentos em segurança com a Snyk

Para saber mais sobre segurança para desenvolvedores, confira o Snyk Learn: há muitas lições interativas sobre vulnerabilidades em diversas linguagens e ecossistemas. Se você prefere vídeos, acesse o canal oficial da Snyk no YouTube. Se precisar de orientação sobre segurança, entre em contato com qualquer um dos Snyk Ambassadors — eles são um grupo incrível, com muito conhecimento em cibersegurança, e a comunidade não para de crescer!