Skip to main content
Relatório

Estado da segurança do código aberto de 2023

Este relatório explora a adoção de ferramentas, práticas e tecnologias de segurança e o impacto da automação e inteligência artificial (IA) sobre o desenvolvimento de software.

Parte um

Ferramentas de segurança do código aberto: os processos não conseguem acompanhar o desenvolvimento

80% das organizações enviam código com frequência diária ou semanal, mas apenas 27% realizam auditorias contínuas

Quanto mais frequente a alteração do código, maiores são os riscos de vulnerabilidades do supply chain e a necessidade da aplicação mais ágil de correções. Constatamos que 80% das organizações enviam código com frequência diária ou semanal, o que provavelmente indica um movimento rumo a arquiteturas de código mais modulares, baseadas em aplicativos e bibliotecas de código aberto, com complexidades e estruturas de dependência que exigem atualizações constantes. Nossa pesquisa descobriu que 66% das organizações podem corrigir vulnerabilidades críticas de código aberto em um dia e 27% em algumas horas. Há espaço para aprimoramento, já que apenas 27% das organizações realizam auditorias contínuas de vulnerabilidades no código e outras 28% fazem isso diariamente. Auditorias contínuas ou de alta frequência melhoram a segurança devido ao número crescente de vulnerabilidades do dia zero.

Frequência de implantação de código

Diário

134

Semanal

199

Mensal

53

Trimestral

14

DK

4

40% das organizações ainda não usam tecnologias essenciais de segurança do supply chain, como SCA e SAST

Apesar dos sucessivos recordes de número de ataques cibernéticos de um ano para o outro e o crescente número de ataques visando o código aberto, uma grande porcentagem das organizações participantes ainda não usa as duas tecnologias de segurança do supply chain mais básicas: análise de composição de software (SCA, para dependências de código aberto) e testes de segurança de aplicativo estático (SAST, para implementações de código aberto não público e código proprietário). Um número ainda menor adota medidas de segurança nativas de nuvem, como verificações de configuração de ferramentas de infraestrutura como código e verificação de segredos.

Processos de segurança aplicados pela organização

300

200

100

0

0

100

200

300

Análise de composição de software (SCA)

Análise estática de código/testes de segurança de aplicativos estáticos (SAST)

Gerenciamento automático de pacotes

Análise de dependências

Verificação de licenças

Gerenciamento de segredos

Verificações de configuração

Nenhuma das opções anteriores

Análise de composição de software (SCA)

Análise estática de código/testes de segurança de aplicativos estáticos (SAST)

Gerenciamento automático de pacotes

Análise de dependências

Verificação de licenças

Gerenciamento de segredos

Verificações de configuração

Nenhuma das opções anteriores

Apenas 40% das organizações usam ferramentas formais de avaliação de segurança para verificar a segurança de pacotes de código aberto

A verificação da postura de segurança dos pacotes de código aberto é crucial para manter a segurança do supply chain de software. Sistemas automatizados para verificar a adoção de práticas recomendadas de segurança pelos pacotes, como Snyk Advisor ou OpenSSF Scorecard, são a forma mais confiável para analisar automaticamente os riscos. No entanto, esses sistemas são os menos utilizados para verificar a segurança de pacotes de código aberto. Apenas 40% dos participantes usam o Snyk Advisor e somente 34% usam cartões de pontuação de segurança.

Surpreendentemente, apenas 52% dos participantes verificam se todos os pacotes têm uma política de "divulgações responsáveis", o que deveria ser um cuidado básico em qualquer pacote utilizado.

Como você verifica a segurança dos pacotes de código aberto?

300

200

100

0

0

100

200

300

Eu uso as informações no registro ou gerenciador de pacotes

E uso uma ferramenta como o Snyk Advisor

Eu verifico as classificações ou estatísticas de download de pacotes dos repositórios

Eu verifico a frequência de lançamentos/confirmações/etc.

Eu verifico se o projeto tem uma comunidade ativa

Eu verifico se o projeto tem uma política de divulgação responsável (como SECURITY.md)

Eu verifico o cartão de pontuação de segurança

Eu não verifico a segurança dos pacotes de código aberto.

Eu uso as informações no registro ou gerenciador de pacotes

E uso uma ferramenta como o Snyk Advisor

Eu verifico as classificações ou estatísticas de download de pacotes dos repositórios

Eu verifico a frequência de lançamentos/confirmações/etc.

Eu verifico se o projeto tem uma comunidade ativa

Eu verifico se o projeto tem uma política de divulgação responsável (como SECURITY.md)

Eu verifico o cartão de pontuação de segurança

Eu não verifico a segurança dos pacotes de código aberto.

31% dos participantes ignoram o risco invisível das dependências indiretas

Um desafio importante na segurança do código aberto é o monitoramento de dependências de pacotes e bibliotecas de código aberto de terceiros. Claramente, as organizações reconhecem que o rastreamento de dependências é essencial para a segurança: 67% delas usam uma ferramenta como o Snyk para rastrear dependências diretas e indiretas. Outras 25% rastreiam apenas dependências diretas. O rastreamento de dependências indiretas proporciona uma visualização mais abrangente e precisa de toda a superfície de ataque, frequentemente evidenciando fraquezas ocultas na segurança do supply chain. Muitas vezes, não é fácil corrigir essas debilidades, já que há dependências aninhadas incorporadas nos pacotes e bibliotecas de código aberto, mantidos por partes com pelo menos um grau de separação da dependência direta.

Sua empresa rastreia quais bibliotecas de código aberto são usadas pelos aplicativos?

Não

23

Somente indireto

103

Direto + indireto

270

Não tenho certeza

8

As ferramentas de segurança ainda não adotaram a ideia da segurança desde o início: apenas 40% das organizações têm ferramentas de segurança no IDE

A segurança desde o início tem sido prioritária para muitas organizações de engenharia que tentam ser proativas no aprimoramento da segurança do código e na redução de vulnerabilidades inseridas involuntariamente durante o desenvolvimento do software. Essa medida aumenta a velocidade e eficiência do SDLC, já que reduz o número de compilações bloqueadas nos testes pré-implantação e devolvidas aos desenvolvedores para correção. Além disso, a adoção da segurança desde o início é um processo ainda não concluído: apenas 40% dos participantes indicaram que a organização implanta ferramentas de segurança nos IDEs e uma porcentagem ainda menor as usa localmente na linha de comando.  As localizações mais comuns do ferramental de segurança são as ferramentas de compilação e os repositórios de código, ambos por volta de 65%.

Em que pontos os desenvolvedores integram ferramentas de segurança aos fluxos de trabalho?

300

200

100

0

0

100

200

300

IDE

CLI

Sistema de compilação

Verificações pré-confirmação

Repositório de código

Pipeline de CI/CD

Não sei

IDE

CLI

Sistema de compilação

Verificações pré-confirmação

Repositório de código

Pipeline de CI/CD

Não sei

Proteja suas dependências indiretas com a Snyk

O Snyk Open Source encontra e corrige vulnerabilidades em dependências diretas e indiretas.

Parte dois

Ataques ao supply chain de software e SBOMs

87% dos participantes foram afetados por um ou mais problemas de segurança do supply chain

As respostas da pesquisa sinalizam que a crise de segurança no supply chain de software é real e afeta as organizações de diversas maneiras. A grande maioria dos participantes foi afetada por um ou mais problemas de supply chain no ano anterior. Quando se trata de impactos específicos, 53% precisaram corrigir uma ou mais vulnerabilidades e 61% implementaram novas ferramentas e práticas recomendadas para segurança do código aberto e supply chain, sinalizando que muitos somente tomam medidas depois de serem afetados diretamente por um ataque direcionado ao supply chain. 

Impacto das vulnerabilidades de segurança no supply chain de código aberto no ano passado

250

200

150

100

50

0

0

50

100

150

200

250

Precisamos corrigir uma ou mais vulnerabilidades do supply chain

Implementamos novas ferramentas e práticas para lidar melhor com as vulnerabilidades do supply chain

Treinamos nossa equipe de desenvolvimento para ajudá-los a entender melhor as vulnerabilidades do supply chain

Não fomos afetados por vulnerabilidades do supply chain de software de código aberto no ano passado

Precisamos corrigir uma ou mais vulnerabilidades do supply chain

Implementamos novas ferramentas e práticas para lidar melhor com as vulnerabilidades do supply chain

Treinamos nossa equipe de desenvolvimento para ajudá-los a entender melhor as vulnerabilidades do supply chain

Não fomos afetados por vulnerabilidades do supply chain de software de código aberto no ano passado

94% das organizações implementaram mudanças significativas em resposta ao Log4Shell

Isso é semelhante à resposta geral ao Log4Shell, onde ficou óbvio que as organizações reagem com mudanças significativas. Em resposta ao incidente, 63% dos participantes afirmaram que a organização aumentou a frequência das verificações de código, 59% acrescentaram novas ferramentas e 53% treinaram as equipes de desenvolvimento em práticas de codificação segura. Além disso, o Log4Shell aparentemente aprimorou a higienização de segurança da maioria das organizações: 58% dos participantes disseram que agilizaram a aplicação das correções devido ao Log4Shell. O incidente pode ter causado o caos no curto prazo, com as organizações tentando desesperadamente identificar e corrigir exposições aninhadas, mas o impacto no longo prazo parece ser positivo. As equipes sofisticaram a segurança, pelo menos em parte como uma reação direta ao incidente.

Alterações das práticas de segurança como resposta ao Log4J

300

200

100

0

0

100

200

300

Aumentou a frequência de verificação de código

Treinamos as equipes de desenvolvimento

Aplicamos as correções em menos tempo

Adicionamos novas ferramentas de segurança

Nenhuma das opções anteriores

Aumentou a frequência de verificação de código

Treinamos as equipes de desenvolvimento

Aplicamos as correções em menos tempo

Adicionamos novas ferramentas de segurança

Nenhuma das opções anteriores

96% das organizações estão tomando medidas específicas para reforçar a segurança do supply chain

A adoção real de práticas recomendadas de segurança do supply chain de software parece ser dispersa. Apenas 53% das organizações contam com um programa formal de segurança do supply chain. Um possível motivo é que a segurança do supply chain de software ainda é considerada como um subconjunto da prática geral de segurança, mas fica a pergunta: a segurança do supply chain ainda vai se tornar um problema crítico para as organizações (ou suficientemente crítico para merecer um programa específico de visualização e planejamento)? Em termos de práticas mais específicas, apenas 42% das organizações usam SBOMs, 58% estão implementando assinatura de código em sua atribuição e 62% estão adotando um processo de garantia de ciclo de vida do software (como SLSA).

Práticas adotadas de segurança do supply chain do código aberto

300

200

100

0

0

100

200

300

Programa formal de segurança do supply chain de software

SBOMs

SLSA

Assinatura de código

Auditorias regulares

Nenhuma das opções anteriores

Programa formal de segurança do supply chain de software

SBOMs

SLSA

Assinatura de código

Auditorias regulares

Nenhuma das opções anteriores

Confusão com a SBOM: crescimento rápido do uso, mas correlação dispersa

É evidente que a mensagem de que as SBOMs são uma ferramenta útil está chegando às equipes de engenharia e segurança. 42% dos participantes já usam SBOMs e 31% pretendem adotá-las no futuro próximo, o que sugere um crescimento impressionante. No entanto, segundo os participantes, as SBOMs são geradas usando diversas ferramentas de desenvolvimento de software e CI/CD, bem como sistemas de segurança dedicados de supply chain. Isso pode ser causado pela relativa fragmentação da área de tecnologia de SBOM. Duas normas disputam o espaço (Cyclone e SPDX), sem nenhum padrão aceito de interoperabilidade. Essa situação indica fragmentação e falta de conexão, como uma torre de Babel de SBOMs. As SBOMs são geradas principalmente por ferramentas de verificação e segurança de código (68%), mas também por outros sistemas, como ferramentas de compilação (58%), ferramentas de CI/CD (45%) e ferramentas dedicadas de segurança do supply chain (53%)

Ferramentas que geram SBOMs

300

200

100

0

0

100

200

300

Ferramentas de CI/CD

Ferramentas de compilação

Ferramentas de verificação e segurança de código

Ferramenta dedicada de segurança do supply chain

Nenhuma das opções anteriores

Ferramentas de CI/CD

Ferramentas de compilação

Ferramentas de verificação e segurança de código

Ferramenta dedicada de segurança do supply chain

Nenhuma das opções anteriores

Parte três

O impacto da IA na segurança do código aberto

O paradoxo da IA: 77% dizem que as ferramentas de IA aumentam a segurança do código, mas 59% se preocupam com a introdução de mais vulnerabilidades de segurança por essas ferramentas

As ferramentas de geração de código por IA alcançaram uma adoção geral e estão sendo implantadas em 92% das organizações. 76,5% dos participantes acreditam que essas ferramentas aprimoraram a segurança do código da organização. Apenas 14,9% afirmaram que as ferramentas de IA introduziram "muitas" vulnerabilidades no código. Por outro lado, 73% disseram que a IA introduziu "muito poucas" ou "uma quantidade moderada" de vulnerabilidades no código. No entanto, 59% dos participantes demonstraram preocupação com a introdução de vulnerabilidades de segurança pelas ferramentas de IA e 50% com a introdução de violações de licenciamento. Resumindo, os desenvolvedores acreditam que a IA aprimora a segurança do código sem introduzir muitas novas vulnerabilidades, mas permanecem céticos em relação a esses novos sistemas.

Você se preocupa com a introdução de vulnerabilidades pelas ferramentas de IA?

Muito poucas

132

Uma quantidade moderada

165

Muitas

56

Nenhuma

15

Não sei

9

Não se aplica

27

Sobrecarga de falsos positivos e automação: 61% dos participantes afirmam que a automação aumentou o número de falsos positivos

Uma grande porcentagem das organizações está automatizando todas ou parte das medidas de segurança no pipeline de código. 64% das organizações automatizaram a análise de código, 61% automatizaram o gerenciamento de atualizações de software, 59% automatizaram os testes (unitário e segurança), 58% automatizaram as práticas seguras de codificação (linters, formatação etc.) e aproximadamente metade automatizou a verificação da configuração de contêineres e infraestrutura. Os participantes indicaram que as ferramentas automatizadas de segurança aumentaram consideravelmente a taxa de falsos positivos nos relatórios de vulnerabilidades: 60% afirmaram que a automação aumentou o número de falsos positivos contra 30% que disseram o contrário.

Causas de falsos positivos pela automação

Aumentou

246

Diminuiu

121

Não sei

22

Não se aplica, não usamos automação

15

62% dos participantes disseram que 25% ou mais dos alertas eram falsos positivos

A porcentagem de falsos positivos não é trivial. 62% dos participantes afirmaram que 25% ou mais dos alertas de vulnerabilidade recebidos eram falsos positivos e 35% disseram que os falsos positivos representaram 50% ou mais dos alertas de vulnerabilidade. Essa elevada taxa de falsos positivos provavelmente contribui para o que, superficialmente, aparenta ser uma taxa surpreendentemente baixa de correção de vulnerabilidades.

Qual a porcentagem de falsos positivos nos alertas de segurança?

0% a 25%

139

26% a 50%

110

51% a 75%

93

76% a 100%

47

Não sei

15

AI específica para segurança

O Snyk DeepCode AI utiliza vários modelos de IA treinados em dados específicos de segurança administrados pelos principais pesquisadores de segurança para fornecer a você todo o poder da IA sem nenhuma de suas desvantagens.

Parte quatro

Vulnerabilidades de segurança do código aberto

As vulnerabilidades mais ignoradas: JavaScript e Java lideram o ranking

Para esta análise, consideramos as vulnerabilidades que pelo menos 20 organizações optaram por ignorar (de acordo com dados da Snyk). Com um vasto ecossistema de código herdado e um sistema de empacotamento (arquivos .jar) que costuma ofuscar vulnerabilidades e dependências, não é uma surpresa que o Java tenha a maior porcentagem de vulnerabilidades ignoradas: 42,5%. É compreensível que o JavaScript, com seus inúmeros pacotes (muitos deles, para funções e funcionalidades diminutas), fique em segundo lugar, com 30,6% das vulnerabilidades ignoradas. O Debian, a família de distribuição do Linux, fica em um distante terceiro lugar com 13,6%. Na verdade, essa distribuição subestima a superfície de ataque, pois Java e JavaScript dominam não apenas em quantidade, mas também em relevância. As 34 principais vulnerabilidades ignoradas (em termos do número de organizações que as ignoram) são todas Java e JavaScript.

Vulnerabilidades ignoradas por ecossistema

debian

13%

alpine

0%

golang

3%

python

6%

js

30%

java

42%

ruby

0%

ubuntu

0%

dot.net

1%

Tipos de vulnerabilidade ignoradas: DDoS, poluição de protótipos e desserialização são as dominantes

O tipo de vulnerabilidades ignoradas pelas organizações oferece informações úteis sobre a superfície de ataque e os riscos aceitos de forma consciente ou subconsciente. De longe, o tipo dominante de ameaça entre as CVEs ignoradas por pelo menos 50 contas foram variações da negação de serviço (DoS). Essas vulnerabilidades foram responsáveis por 31,3% de todas as vulnerabilidades ignoradas. Os ataques de DoS são sérios, mas frequentemente mitigados proativamente em CDNs ou infraestruturas. Portanto, é compreensível que muitas equipes não priorizem essas CVEs. A desserialização de dados não confiáveis correspondeu a 14,3% das CVEs ignoradas por mais de 50 contas. Essa é uma classe relativamente abrangente de vulnerabilidades com possíveis impactos em diversas linguagens. Frequentemente, elas podem ser a primeira etapa de um ataque encadeado ou composto, o que as torna vulnerabilidades sérias. A terceira vulnerabilidade mais comum, poluição de protótipos (com 12,5%), afeta principalmente a comunidade de JavaScript. 

Vulnerabilidades ignoradas por tipo

Execução remota de código

3%

Negação de serviço (DoS)

14%

Desserialização de dados não confiáveis

14%

Poluição de protótipos

12%

Exposição de informações

7%

Negação de serviço com expressões regulares (ReDoS)

17%

Travessia de diretórios

2%

Verificação inadequada da assinatura criptográfica

2%

Gravação em arquivo arbitrário

4%

Outro

21%

Parte cinco

Correções de vulnerabilidades de código aberto

Código aberto corrige vulnerabilidades em menos tempo que softwares proprietários

Desde o início do código aberto, há um intenso debate sobre o software de código aberto ser, de fato, mais seguro que o software de código fechado. As vulnerabilidades são publicadas abertamente, assim como as correções correspondentes. Dessa forma, é possível rastrear dados de tempo de correção (TTF) usando bancos de dados de vulnerabilidades. Rastreamos o TTF nos últimos quatro anos completos e constatamos que, desde 2019, o TTF médio dos aplicativos proprietários aumentou de forma consistente, enquanto o de aplicativos de código aberto diminuiu, também de forma consistente. Na verdade, os dois tipos reduziram o TTF em 2021\. No entanto, pela primeira vez desde que rastreamos essa métrica, o TTF dos aplicativos de código aberto foi menor que o dos aplicativos proprietários. Isso implica que o ecossistema de código aberto aprimora a resposta de segurança ao longo do tempo e tende a oferecer melhor segurança que o mundo do código fechado.

Tempo médio de correção

Código aberto

Proprietário

300

200

100

0

0

100

200

300

2019

2020

2021

2022

Melhor verificação do código aberto resulta em correções das vulnerabilidades críticas em menos tempo

Após um grande pico na média de TTF para vulnerabilidades críticas e de alta prioridade, a métrica caiu drasticamente nos últimos dois anos. Esse pico pode indicar que a verificação de código aberto aumentou nesses dois anos, revelando vulnerabilidades previamente não detectadas. De 2021 a 2022, o TTF médio dessas duas designações críticas caiu aproximadamente pela metade: -51% para vulnerabilidades críticas e -49,4% para as de alta prioridade. Pode haver várias explicações para esse declínio constante, como maior adoção de ferramentas de segurança do código aberto (por exemplo, SCA), mais financiamento e pessoal investidos na correção de vulnerabilidades críticas de código aberto e maior reconhecimento de que a segurança é uma prioridade importante nos projetos de código aberto. Seja como for, os sinais são bons e indicam uma forte tendência no rumo correto para o aprimoramento contínuo da segurança de OSS. 

Tempo médio de correção por gravidade

Crítica

Alta

Média

Baixa

1.500

1.000

500

0

0

500

1.000

1.500

2018

2019

2020

2021

2022

Maioria dos principais ecossistemas de código aberto acelera as correções

O TTF variou entre os ecossistemas de código aberto e diminui drasticamente para a maioria desses ecossistemas mais importantes rastreados pela Snyk. As maiores reduções do TTF médio ocorreram para Java e Python (50,8% e 43,4%, respectivamente). Todos os cinco ecossistemas que registraram queda alcançaram reduções de dois dígitos. Go e Python apresentaram a maior queda total em termos de dias, com o Go registrando uma redução do TTF médio de 147 dias e o Python de 115 dias. Dois ecossistemas regrediram. Os ecossistemas de C e Ruby mostraram um crescimento de 144,7% e 102,1% no TTF médio em dias, com um aumento do número total de dias de respectivamente 55 e 49 dias. Os ecossistemas de código aberto aprimoram os tempos de respostas de segurança e, consequentemente, fortalecem a segurança do supply chain, reduzindo o intervalo entre a publicação e a correção das vulnerabilidades.

Tempo médio de correção do ecossistema

2021 a 2022

2022 a 2023

400

300

200

100

0

0

100

200

300

400

cpp

dotnet

go

js

java

php

python

ruby

Conclusão

A segurança do código aberto está melhorando, mas ainda há espaço para evolução

Nos últimos anos, as organizações de segurança progrediram bastante na melhoria da segurança do código aberto e do supply chain. Elas aprenderam com o Log4Shell e fizeram ajustes, incluindo mais ferramentas e treinamento e maior frequência de verificação. Por outro lado, ainda há um espaço considerável para evolução na segurança do código aberto. A grande porcentagem de organizações que ainda não usa tecnologias básicas de segurança, como SCA e SAST, é uma preocupação. Certamente, a segurança do código aberto progrediu bastante e estamos, de forma agregada, mais seguros como comunidade do que antes. Apesar do grande progresso, há muito espaço para melhorar: adoção de tecnologias de segurança do supply chain, novas e maduras; redução da carga de trabalho e melhor priorização para equipes de segurança sobrecarregadas; e transformar a segurança do supply chain em um elemento básico do processo do ciclo de vida do desenvolvimento de software.