A definição se decompõe

Apenas três meses depois, um novo tipo de ataque se materializou e não se encaixava na tipologia existente. Um novo tipo de ataque chamado “confusão de dependência” foi cunhado quando o pesquisador de segurança Alex Birsan publicou um artigo no Medium com o subtítulo “Como invadi a Apple, a Microsoft e dezenas de outras empresas”. O que foi inteligente sobre esse novo tipo de ataque é como ele tirou vantagem do comportamento não intuitivo dos gerenciadores de pacotes, permitindo que um invasor enganasse os desenvolvedores para baixar código malicioso de um registro de pacote externo em vez de, como planejado, um registro de pacote interno. Embora semelhante ao typosquatting, que já era uma categoria secundária em nossa tipologia, esse ataque não envolveu um erro de digitação. Nossa definição original de segurança da cadeia de suprimentos de software já havia sido ampliada. Adicionamos outra categoria secundária e seguimos em frente.

Então, em dezembro de 2021, o Log4shell aconteceu e a “internet estava pegando fogo”. Agora nossa tipologia sofreu uma ferida mortal. A tipologia anterior focava exclusivamente na inserção de código malicioso, mas a vulnerabilidade do Log4shell não envolvia código malicioso. No entanto, o Log4shell representava claramente uma vulnerabilidade generalizada na cadeia de suprimentos de software. Era uma vulnerabilidade grave e facilmente explorada, introduzida por uma falha em uma biblioteca de registro Java de código aberto amplamente popular. O episódio revelou uma falha crucial em nossa definição existente de segurança da cadeia de suprimentos de software: falhas de segurança não intencionais em software de código aberto amplamente usado não tinham lugar. Essa tipologia original, para os propósitos da minha carreira, estava morta apenas 18 meses após a invenção.

Aceitando uma definição mais ampla

Após reflexão, o aspecto de “cadeia de suprimentos” da segurança da cadeia de suprimentos de software sugere o ingrediente crucial de uma definição melhorada. Produtores de software, assim como fabricantes, têm uma cadeia de suprimentos. E produtores de software, assim como fabricantes, exigem insumos e então realizam um processo de fabricação para construir um produto acabado. Em outras palavras, um produtor de software usa componentes, desenvolvidos por terceiros e por eles mesmos, e tecnologias para escrever, construir e distribuir software. Uma vulnerabilidade ou comprometimento dessa cadeia, seja feito por meio de código malicioso ou pela exploração de uma vulnerabilidade não intencional, é o que define a segurança da cadeia de suprimentos de software. Devo mencionar que um conjunto de dados similar e rival mantido pelo Atlantic Council usa essa definição mais ampla. (Divulgação completa: agora sou um membro não residente do Atlantic Council. Se você não pode vencê-los, junte-se a eles.)