Pular para o conteúdo

A biblioteca como superfície

O que um pacote pode fazer na máquina de quem instala — e as cinco guardas que reduzem isso.

Uma biblioteca roda com toda a autoridade do programa que a adotou: o disco, a rede, as variáveis de ambiente. Quem a publica assume isso.

As cinco guardas#

GuardaO ataque que ela corta
o sha256 no locko tarball trocado numa versão já publicada
a extração que recusa ../ e link simbólicoZip Slip: escrever fora da pasta do pacote
o tarball reprodutívelum sha256 que muda sozinho e não significa nada
relay explícitoo auxiliar interno virar contrato por acidente
zero dependência transitiva escondidacada dependência nova é uma decisão visível no forge.toml

O que a sua biblioteca não deve fazer#

NãoPorque
ler variável de ambiente por conta própriao segredo do usuário vira seu, e ele não escolheu isso
escrever fora da pasta que recebeu~/.config de quem instalou não é seu
abrir rede na importaçãoum adopt não pode ter efeito; e o CI de outra pessoa quebra sem rede
registrar telemetria caladaé o que faz uma biblioteca ser removida de uma empresa inteira
embutir uma chave, mesmo de testeela vira exemplo, e o exemplo vira produção

A varredura de segredo#

dataforge
adopt Arcane.Seguranca as S

achados := S.procurar_segredos("token := \"ghp_\" + gerar()")
out $"{len(achados)} achado(s)"

// Numa biblioteca, a varredura roda no CI antes do 'pack'.
// Ela e conservadora de proposito: um falso alarme num repositorio
// que fala SOBRE seguranca ensina a ignorar a varredura inteira —
// e foi o que aconteceu aqui, com 19 falsos positivos no proprio
// material didatico antes de a lista de excecoes existir.

assert typeof(achados) is "Cluster"

Continue em Segurança da informação e Capacidade.