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#
| Guarda | O ataque que ela corta |
|---|---|
o sha256 no lock | o tarball trocado numa versão já publicada |
a extração que recusa ../ e link simbólico | Zip Slip: escrever fora da pasta do pacote |
| o tarball reprodutível | um sha256 que muda sozinho e não significa nada |
relay explícito | o auxiliar interno virar contrato por acidente |
| zero dependência transitiva escondida | cada dependência nova é uma decisão visível no forge.toml |
O que a sua biblioteca não deve fazer#
| Não | Porque |
|---|---|
| ler variável de ambiente por conta própria | o 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ção | um 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 teste | ela 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.