Skip to main content

Conheça o monitoramento de segurança de código aberto em tempo de execução

Escrito por
Headshot of Aner Mazur

Aner Mazur

Introducing open source security runtime monitoring Featured

12 de novembro de 2018

0 minutos de leitura

A Snyk acaba de lançar o primeiro recurso de sua solução de monitoramento de segurança de aplicações em tempo de execução, que permite aos desenvolvedores acompanhar o comportamento real dos componentes de código aberto durante a execução!

Atualmente, a integração da Snyk com o repositório do projeto ou com o ciclo de CI permite analisar dependências de código aberto, sinalizar as vulneráveis e sugerir ações para corrigi-las. A Snyk investe muito para facilitar a correção de vulnerabilidades e incorporá-la ao fluxo de desenvolvimento, por exemplo, abrindo PRs com correções, fornecendo patches quando não é possível atualizar e muito mais.

No entanto, mesmo quando a correção é relativamente simples, muitos desenvolvedores e organizações ainda podem ter um grande acúmulo de vulnerabilidades para tratar. Toda orientação que pudermos oferecer para ajudar na priorização é útil. Acreditamos que uma etapa importante é determinar se uma dependência vulnerável está realmente sendo usada em tempo de execução de uma forma que possa ser explorada. Algumas soluções disponíveis no mercado tentam fazer isso por meio da análise estática de código. O principal problema é o alto índice de falsos positivos e negativos que elas geram (por exemplo, quando o código é chamado dinamicamente ou só é acessado com uma entrada específica etc.).

A Snyk oferece uma solução que monitora o comportamento real da aplicação em tempo de execução e mostra com precisão quando funções vulneráveis das dependências de um projeto são chamadas.

Fique tranquilo: estamos nos empenhando para garantir que o impacto no desempenho da aplicação seja mínimo e continuaremos testando. No momento, nossa solução de monitoramento em tempo de execução está disponível em uma versão beta fechada para acesso antecipado. Se quiser experimentar, envie um e-mail para runtime@snyk.io!

Priorize vulnerabilidades com base nos dados de chamadas em tempo de execução

Depois que o agente estiver instalado corretamente e instrumentando as instâncias em execução da aplicação monitorada, um indicador no cartão de detalhes do problema mostrará se funções vulneráveis foram chamadas recentemente em uma instância monitorada. As vulnerabilidades serão ordenadas primeiro conforme tenham sido chamadas ou não em tempo de execução e, em seguida, pelo nível de severidade. Também serão exibidos os nomes e caminhos de todas as funções vulneráveis. Isso facilita a triagem, ajudando você a entender que parte da aplicação as utiliza. Também mostraremos há quanto tempo uma das funções vulneráveis foi chamada pela última vez.

Relatório de segurança que mostra uma vulnerabilidade de travessia de diretório de média gravidade no módulo st, com recomendação de atualização para a versão 0.2.5.

Como pode haver várias instâncias da aplicação em execução e sendo monitoradas, você poderá ver o número de instâncias monitoradas no canto inferior direito dos metadados do projeto.

Painel de visão geral do projeto mostrando a versão 8.12.0, cinco vulnerabilidades, 464 dependências, origem CI/CLI e uma instância de aplicativo monitorada.

Primeiros passos com Node.js

Para começar a monitorar suas aplicações Node.js, adicione a dependência @snyk/nodejs-runtime-agent ao projeto executando npm install @snyk/nodejs-runtime-agent na pasta do projeto e configure-a o quanto antes na sequência de inicialização da aplicação. Veja um exemplo de fluxo:

require('@snyk/nodejs-runtime-agent')({
projectId: '0462e42b-c92f-4b48-bac8-81eb3ff7f43e',
});
const express = require('express');

No trecho acima, a dependência @snyk/nodejs-runtime-agent é carregada antes de qualquer outra instrução require. Assim, o agente pode inspecionar todas as dependências carregadas e criar um hook de execução que o avisa quando a aplicação chama funções vulneráveis.

O agente é configurado com o ID de um projeto monitorado em snyk.io. Você pode obter o ID do projeto pela API ou consultando a página de configurações do projeto em snyk.io.

Para saber mais, consulte nossa documentação sobre como instalar a proteção em tempo de execução.

Primeiros passos com Java

Para começar a monitorar suas aplicações Java, baixe nosso agente de monitoramento em tempo de execução para Java (.ZIP) e descompacte o arquivo.

  1. Copie snyk-java-runtime-agent.jar para o mesmo diretório da aplicação.

  2. Crie um arquivo snyk-agent.properties no local do arquivo JAR do agente, contendo o ID do projeto Snyk, desta forma: projectId=0462e42b-c92f-4b48-bac8-81eb3ff7f43e.

  3. Adicione o agente como argumento de linha de comando ao comando Java usado para iniciar a aplicação. Por exemplo: java -javaagent:path/to/snyk-java-runtime-agent.jar -jar my-app.jar.

    - Se você usa o Apache Maven, adicione -javaagent:path/to/snyk-java-runtime-agent.jar à variável de ambiente MAVEN_OPTS.

    - Se você usa contêineres JavaEE, como o GlassFish, localize as opções de JVM Options e adicione -javaagent:path/to/snyk-java-runtime-agent.jar como uma opção.

Em breve

Planejamos encerrar a beta fechada e lançar nossa solução de monitoramento em tempo de execução nas próximas semanas, depois de receber seus comentários.

E agora? Monitorar o comportamento malicioso de componentes de código aberto em tempo de execução e conectar esses dados aos resultados da análise do código-fonte permite que os desenvolvedores cuidem da segurança de código aberto durante todo o ciclo de vida da aplicação, tanto para vulnerabilidades conhecidas quanto desconhecidas. A instrumentação da aplicação em tempo de execução abre caminho para muitos outros recursos além da priorização de vulnerabilidades baseada em execução, lançada hoje. Esses recursos estarão disponíveis nos próximos meses. Fique de olho!

Comece a resolver desafios de capture the flag

Aprenda a resolver desafios de capture the flag assistindo sob demanda ao nosso workshop virtual introdutório.