Proteja suas dependências indiretas com a Snyk
O Snyk Open Source encontra e corrige vulnerabilidades em dependências diretas e indiretas.
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
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.
Diário
134
Semanal
199
Mensal
53
Trimestral
14
DK
4
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.
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
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.
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.
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.
Não
23
Somente indireto
103
Direto + indireto
270
Não tenho certeza
8
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%.
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
O Snyk Open Source encontra e corrige vulnerabilidades em dependências diretas e indiretas.
Parte dois
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.
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
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.
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
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).
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
É 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%)
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
87% dos participantes foram afetados por problemas de segurança do supply chain. Proteja o seu com a Snyk.
Parte três
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.
Muito poucas
132
Uma quantidade moderada
165
Muitas
56
Nenhuma
15
Não sei
9
Não se aplica
27
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.
Aumentou
246
Diminuiu
121
Não sei
22
Não se aplica, não usamos automação
15
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.
0% a 25%
139
26% a 50%
110
51% a 75%
93
76% a 100%
47
Não sei
15
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
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.
debian
13%
alpine
0%
golang
3%
python
6%
js
30%
java
42%
ruby
0%
ubuntu
0%
dot.net
1%
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.
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
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.
Código aberto
Proprietário
300
200
100
0
0
100
200
300
2019
2020
2021
2022
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.
Crítica
Alta
Média
Baixa
1.500
1.000
500
0
0
500
1.000
1.500
2018
2019
2020
2021
2022
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.
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
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.
Leia o relatório completo da Snyk sobre o estado da segurança do código aberto em 2023 para conhecer em mais detalhes os riscos causados por problemas ignorados e confusão com a SBOM. Descubra os sólidos aprimoramentos realizados para incentivar o progresso de OSS.