Skip to main content

Conheça as tecnologias avançadas por trás do Snyk Code

Escrito por

Frank Fischer

blog feature snyk code dark

20 de outubro de 2021

0 minutos de leitura

Snyk Code é a solução de testes de segurança estática de aplicações (SAST) da Snyk e traz tecnologias revolucionárias para esse campo. Ela se baseia em pesquisas e tecnologias desenvolvidas por uma empresa derivada da ETH (Zurique, Suíça), a DeepCode, que se uniu à Snyk no fim de 2020. Este artigo apresenta essas tecnologias e mostra como a Snyk contribui para a comunidade de código aberto, além de promover a colaboração com a comunidade acadêmica na área de análise estática de programas.

Como funciona o Snyk Code

O processo geral está ilustrado abaixo.

Diagrama do fluxo de trabalho do Snyk Code mostrando código extenso dividido em árvores, analisado por mecanismos de resolução e algoritmos de aprendizado de máquina e avaliado com regras de segurança selecionadas

Tudo começa à esquerda, com o “Big Code”: um conjunto de treinamento formado por centenas de milhares de repositórios de código aberto e o histórico de alterações deles, abrangendo várias linguagens de programação. Primeiro, o código é analisado e transformado em representações intermediárias. O Snyk Code usa uma árvore sintática abstrata (AST) e um grafo de eventos (EG), que permitem uma análise sensível ao fluxo de dados e ao contexto. Você encontra mais detalhes nos artigos acadêmicos citados mais adiante. O EG consegue representar diversas linguagens de programação.

Em seguida, um solucionador lógico aplica regras de lógica à representação intermediária. Esse solucionador tem alguns aspectos notáveis. Primeiro, é proprietário e foi otimizado para essa tarefa com algoritmos de menor complexidade temporal do que os usados em solucionadores Datalog convencionais. Isso também contribui para um desempenho em tempo de execução de ponta. Por fim, por ser um sistema baseado em restrições, ele gera fatos semânticos que podem ser usados como entrada no processo de aprendizado orientado por especialistas.

Com o código aberto, o Snyk Code aproveita o conhecimento da comunidade global de desenvolvedores para identificar e resolver problemas de segurança. Ele também encontra combinações de fontes e destinos que, por exemplo, ainda não aparecem no conjunto de treinamento, mas podem representar uma ameaça. Além disso, é possível adicionar regras para exploits de dia zero mesmo quando ainda não há dados de treinamento disponíveis.

No processo de aprendizado, os engenheiros de segurança da Snyk trabalham com algoritmos de machine learning para gerar e manter a base de conhecimento. Eles também acrescentam informações para ajudar os desenvolvedores a entender e corrigir os problemas encontrados.

Em produção, o Snyk Code segue esse pipeline, mas não usa o código para aprender. Em vez disso, aplica a base de conhecimento e apresenta resultados precisos em minutos ou até segundos. E pronto! É assim que conseguimos tornar o Snyk Code uma solução SAST tão poderosa.

Comece a jogar Capture the Flag

Aprenda a resolver desafios de Capture the Flag assistindo à gravação sob demanda do nosso workshop virtual introdutório.

Participação em publicações e conferências acadêmicas

Além de desenvolver essa ferramenta SAST, a equipe por trás do Snyk Code participa ativamente, há muitos anos, de publicações em conferências importantes de machine learning e linguagens de programação, além de publicar diversas ferramentas acadêmicas para análise estática de programas.

Confira uma seleção de publicações e sistemas de pesquisa:

Ferramentas disponíveis publicamente

Além disso, durante o desenvolvimento das tecnologias que estão por trás do Snyk Code, foram criadas e publicadas ferramentas de pesquisa. Veja a seguir uma visão geral dessas ferramentas.

Observação: A Snyk não é responsável por essas ferramentas, nem as mantém ou hospeda. Elas fazem parte de projetos de pesquisa dos quais membros da equipe da Snyk participaram.

JSNice

O JSNice desofusca programas JavaScript usando machine learning. Dezenas de milhares de programadores em todo o mundo usam a ferramenta.

Logo do JS Nice em branco e roxo

Nice2Predict

O Nice2Predict é uma estrutura de código aberto eficiente e escalável para predição estruturada, que permite criar novos mecanismos estatísticos com mais rapidez.

Banner roxo com o texto “NICE 2 Predict” em branco

DeGuard

O DeGuard reverte a ofuscação de layout de aplicativos Android. Analistas de segurança usam a ferramenta diariamente.

Logotipo da DEGUARD em azul e branco

Para concluir

Como vimos, a equipe do Snyk Code está na vanguarda da pesquisa e contribui com a produção de artigos científicos, a orientação de estudantes e a participação em outros projetos científicos. Conheça os resultados desse trabalho na prática: inscreva-se hoje no Snyk Code.

Comece a jogar Capture the Flag

Aprenda a resolver desafios de Capture the Flag assistindo à gravação sob demanda do nosso workshop virtual introdutório.