Vulnerabilidades de segurança em código
Software de sistema operacional, software aplicativo ou firmware em um sistema embarcado são componentes elementares de qualquer infraestrutura digital. No entanto, a aceleração crescente e a pressão de prazo em projetos de digitalização geralmente levam à negligência de aspectos imperativos de segurança da informação. Os requisitos de desenvolvimento de software geralmente são centrados na função e enfatizam aspectos construtivos, de modo que a visão destrutiva de possíveis vulnerabilidades de segurança é diametralmente oposta aos objetivos de desenvolvimento reais: muitos programadores simplesmente também carecem de uma visão estruturada e aguçada da segurança cibernética.
Sob essas condições, as equipes de desenvolvimento têm dificuldade em revisar continuamente e proteger consistentemente a codificação de seu software, como evidenciado pelas muitas vulnerabilidades que a MITRE Corporation sem fins lucrativos publica todos os anos em seu CVE (Vulnerabilidades e exposições comuns). Os patches de segurança regulares de fabricantes de software conhecidos são um indicador da tarefa de Sísifo de fechar bugs relevantes para a segurança, quanto mais identificá-los antes mesmo de serem lançados no mercado.
Código fonte aberto - um caso especial
Ao codificar software autodesenvolvido, os programadores gostam de recorrer a bibliotecas e módulos de código aberto. As vantagens práticas são óbvias: se você não precisa reinventar a roda repetidamente, você se beneficia desse impulso tecnológico, desenvolvimento rápido, custos de desenvolvimento mais baixos, mais transparência por meio de código-fonte aberto e maior interoperabilidade por meio de padrões e interfaces abertos.
Também costuma-se dizer que o código de código aberto oferece um alto grau de segurança porque o código foi validado por muitos usuários e a inteligência de enxame da comunidade de código aberto permite a correção rápida e eficiente de bugs.
Na prática, essa confiança agora deve ser avaliada de forma diferenciada e crítica. O exemplo mais sério é a vulnerabilidade de segurança de dia zero Log4Shell na biblioteca de log amplamente usada Log4J para aplicativos Java, que foi descoberta em novembro de 2021. Você deve ter ouvido falar sobre o nível de alerta vermelho emitido pelo Escritório Federal Alemão de Segurança da Informação (BSI ) para Log4Shell. A biblioteca Log4J, distribuída como um quase-padrão de funcionamento confiável por meio da Apache Foundation, estabeleceu-se em muitos sistemas desde 2013 - incluindo serviços da Web conhecidos, como Amazon AWS.
A complexidade dessas bibliotecas bem desenvolvidas e também mantidas fornece implicitamente funcionalidades poderosas das quais um desenvolvedor importador geralmente não tem conhecimento em seu próprio novo desenvolvimento combinado, mas que podem ser exploradas por invasores.
Outro fator de insegurança dos componentes de código aberto são os chamados ataques à cadeia de suprimentos, ou seja, vulnerabilidades incorporadas pretendidas por atores mal-intencionados que se apresentam como parte da comunidade de código aberto e auxiliam no desenvolvimento de código. Essa vulnerabilidade é uma maneira extremamente eficiente para os hackers atacarem um grande número de organizações de usuários downstream. Não é de admirar, então, que esse vetor de ataque esteja crescendo rapidamente: um estudo Sonatype diagnosticou um aumento de 650% ao comparar 2020 e 2021.