Skip to main content

6 boas práticas de análise de composição de software (SCA)

Escrito por
blog feature open source security

27 de abril de 2022

0 minutos de leitura

O software de código aberto é a base do desenvolvimento moderno de aplicações e permite que as equipes criem e inovem com mais rapidez. No entanto, toda essa flexibilidade traz desafios significativos de segurança. As dependências de código aberto podem introduzir vulnerabilidades e riscos de licenciamento que afetam toda a cadeia de suprimentos de software. Organizações bem-sucedidas adotam boas práticas de análise de composição de software (SCA) para reforçar a segurança sem comprometer a eficiência dos fluxos de trabalho de desenvolvimento. Este guia apresenta seis boas práticas essenciais para ajudar você a aproveitar ao máximo a SCA e minimizar os riscos.

1. Encontre uma ferramenta fácil de usar para desenvolvedores (e mostre a eles como ela ajuda)

Desenvolvedores têm muito trabalho escrevendo código. Eles precisam pensar de forma abrangente, projetar com eficiência e iterar rapidamente. Uma ferramenta de SCA que não seja fácil de usar para desenvolvedores vai deixar o fluxo de trabalho deles mais lento, reduzindo a disposição para usá-la. Uma ferramenta de SCA fácil de usar deve ser simples de configurar e utilizar. Também deve se integrar facilmente aos fluxos de trabalho e às ferramentas de desenvolvimento de SDLC já existentes, o quanto antes (como ferramentas de controle de versão e IDEs). 

Depois de escolher uma ferramenta, explique aos desenvolvedores por que a SCA é importante e como ela pode ajudá-los. Quem não considera a segurança uma responsabilidade própria pode resistir a assumir essa tarefa. Mostre que pensar em segurança desde o início e integrar verificações de segurança ao fluxo de trabalho poupa tempo mais adiante, pois evita a necessidade de reescrever código para incorporar correções. Código desenvolvido com segurança desde o começo não precisa ser refeito!

2. Entenda as dependências

Os pacotes de código aberto têm dois tipos de dependências: diretas e transitivas. Uma dependência direta é um pacote que você inclui no seu projeto; uma dependência transitiva (indireta) é um pacote usado por uma das suas dependências diretas. Pense nisso como uma árvore com vários níveis: seus pacotes têm dependências, que também têm dependências… e assim por diante.

Análises mostram que 80% das vulnerabilidades em pacotes de código aberto estão em dependências transitivas! Isso significa que a maioria das vulnerabilidades no seu código está em dependências (aninhadas) que você provavelmente nem sabia que estava usando. Uma boa ferramenta de SCA deve inspecionar todas as dependências do seu código com precisão e ser capaz de identificar e analisar dependências transitivas. Conhecer a profundidade e a complexidade dos pacotes de código aberto usados no seu código ajuda a garantir a detecção de vulnerabilidades em todos os níveis. 

3. Automatize as verificações e identifique correções práticas

Uma boa ferramenta de SCA permite executar verificações automatizadas em intervalos regulares. Aproveite esse recurso! Configure o monitoramento proativo e contínuo do seu código. As verificações automatizadas enviam alertas práticos que mostram onde estão as vulnerabilidades e como corrigi-las. Avalie com atenção as orientações da ferramenta de SCA para corrigir vulnerabilidades e garanta que seus desenvolvedores se sintam confiantes para aplicar as correções sugeridas.

4. Integre a SCA ao seu pipeline de CI/CD

Sua ferramenta de SCA não deve ser um obstáculo no caminho do desenvolvimento até os testes e a produção. Você deve poder integrar as verificações de SCA ao pipeline de CI/CD, incorporando a identificação e a correção de vulnerabilidades ao processo de desenvolvimento e compilação de software. Integrar a ferramenta de SCA às demais etapas do pipeline também facilita a adoção de uma cultura em que a segurança do código faz parte do fluxo de trabalho diário dos desenvolvedores.

5. Aproveite o potencial dos relatórios e dos recursos de geração de SBoM

Muitas organizações — incluindo o governo federal dos EUA — exigem um relatório de lista de materiais de software (SBoM) na compra de um software. Fornecer uma SBoM detalhada com seu produto demonstra que você entende o valor de acompanhar cada componente da aplicação.

Relatórios claros sobre verificações de segurança e correções também são poderosos. Relatórios detalhados sobre suas práticas de segurança e o número de vulnerabilidades corrigidas demonstram seu compromisso com a segurança (e fortalecem sua posição no mercado).

6. Reforce as políticas de segurança e melhore a conformidade com licenças

Ter visibilidade clara dos pacotes de código aberto usados pelos desenvolvedores ajuda você a criar políticas que definam e façam cumprir as diretrizes de segurança da organização. Use o conhecimento obtido com as verificações de vulnerabilidades para estabelecer proteções para seus desenvolvedores e orientá-los a escolher pacotes de código aberto com a segurança em mente.

Acompanhar o código de código aberto é importante para a segurança das aplicações, mas monitorar as licenças de código aberto é essencial para a conformidade! As licenças definem os termos legais de uso dos pacotes de código aberto. Use sua ferramenta de SCA para conhecer os termos e as condições das licenças dos componentes de código aberto. Ao criar políticas de segurança, você pode incluir orientações que incentivem os desenvolvedores a cumprir as licenças desde o início do ciclo de vida do desenvolvimento de software.

Por definição, os projetos de código aberto são públicos e visíveis para todos — inclusive agentes mal-intencionados. Qualquer vulnerabilidade descoberta e corrigida neles fica, implicitamente, exposta para que atacantes a encontrem. Quanto mais popular o projeto de código aberto, mais atraente o pacote se torna, pois o impacto de um ataque é maior. Como exemplo, a violação da Equifax mencionada acima explorou a biblioteca Apache Struts, do Java, um pacote de código aberto usado por muitas aplicações. Isso tornou o ataque notório pelo amplo alcance de seus danos.

É claro que as organizações que usam código aberto o fazem “por sua conta e risco”, já que não há um fornecedor para notificá-las sobre falhas nem um contrato assinado que as isente dessa responsabilidade. Cabe inteiramente a quem consome esses componentes mantê-los seguros.

Soluções de análise de composição de software da Snyk

A Snyk oferece soluções abrangentes de SCA para ajudar as organizações a colocar essas boas práticas em ação. Snyk Open Source capacita desenvolvedores a encontrar e corrigir vulnerabilidades em dependências de código aberto diretamente nos fluxos de trabalho. Com integração perfeita a IDEs, sistemas de controle de versão e pipelines de CI/CD, a Snyk possibilita o monitoramento contínuo e a correção automatizada. Seu robusto banco de dados de vulnerabilidades e os recursos de priorização ajudam os desenvolvedores a resolver primeiro os problemas mais críticos. Além disso, a Snyk oferece relatórios detalhados e geração de SBoM, ajudando as organizações a atender aos requisitos de conformidade e demonstrar seu compromisso com a segurança. Com a SCA da Snyk, as organizações podem reforçar sua postura de segurança, melhorar a conformidade com licenças e promover uma cultura de segurança em todo o ciclo de vida do desenvolvimento.

Conheça o cenário atual da segurança de código aberto

Entenda as tendências e abordagens atuais para proteger softwares de código aberto e a cadeia de suprimentos.