Pular para o conteúdo
Todos os conceitos

Cadeia de suprimentos de software

Seu app instala e roda uma árvore inteira de pacotes de terceiros; confiar nele é confiar em todos eles.

Quando você escreve import de uma biblioteca, está trazendo para dentro do seu programa código que outra pessoa escreveu e publicou. Esse pacote costuma depender de outros, que dependem de outros: o seu app baixa e executa a árvore inteira. Um projeto pequeno acaba com centenas de pacotes que ninguém da equipe leu.

A cadeia de suprimentos é esse caminho, da pessoa que publica um pacote até a sua máquina: o autor, o registro (como o npm para Node ou o PyPI para Python), o espelho de onde você baixa e o processo que instala. Uma falha em qualquer ponto vira falha sua. Se um pacote é sequestrado, se alguém publica um pacote com nome parecido, se um espelho troca o arquivo, o código malicioso roda com as suas permissões.

A defesa não é ler todo o código de terceiros (é impossível), e sim reduzir a confiança cega: fixar as versões, versionar o lockfile (o arquivo que grava exatamente o que foi instalado), conferir a integridade pelo hash, revisar toda dependência nova antes de adicioná-la e rodar uma ferramenta de SCA (análise de composição de software, como npm audit ou pip-audit) que compara a sua árvore com a lista de vulnerabilidades conhecidas.

o seu app config-loader color-convert http-router yaml-stream ini-parse color-name path-match diretas (você escolheu) transitivas (vieram junto) o app instala e executa a árvore inteira
O seu app depende de poucos pacotes diretos, mas cada um traz outros: a árvore que é instalada e executada é bem maior do que o que você escreveu.

Aparece nestes desafios