Publicado a

O código também é superfície

A maior parte do código que se implementa não foi escrita pela organização: são dependências, imagens base e ferramentas de terceiros. Saber o que contém cada artefacto, verificá-lo em cada construção e assinar o que se publica fecha uma porta que quase ninguém vigia.

Linha de serviço Cibersegurança

O código que ninguém escreveu

Uma aplicação moderna pode ter uns poucos milhares de linhas próprias e centenas de milhares de linhas de dependências: bibliotecas, frameworks, imagens de sistema operativo. Cada uma pode ter vulnerabilidades conhecidas, e algumas podem ter sido manipuladas de propósito antes de chegar.

Revisar o código próprio é necessário. Ignorar tudo o resto deixa aberta a maior parte da superfície.

O que contém cada artefacto

O que contém o que se publicaCódigo próprio, dependências e imagem base passam por inventário, análise, versões fixadas e assinatura; uma vulnerabilidade crítica detém a publicação.SEGURANÇA · CADEIA DE FORNECIMENTOO que contém o que se publica Código próprio4 % do código Dependências81 % do código Imagem base15 % do códigoCONSTRUÇÃOLista de componentes612 bibliotecas inventariadasAnálise de vulnerabilidades1 crítica detetadaVersões fixadastodasAssinatura do artefactosó se tudo passarDetidonão se publicaaté atualizara dependênciaA impressão digital diz o que é; a assinatura diz quem o fez.Com a lista guardada, «estamos afetados?» responde-se em minutos.Dados ilustrativos, não correspondem a nenhum caso realN100F · n100f.com

A prática que o resolve apoia-se na própria construção, que já é uma porta de aprovação (como em que falhe a construção, não a produção):

  1. Lista de componentes. Cada construção gera um inventário de tudo o que o artefacto contém (o que se costuma chamar SBOM): cada biblioteca, com a sua versão.
  2. Análise de vulnerabilidades. Esse inventário cruza-se com as bases de vulnerabilidades conhecidas. O crítico detém a construção; o restante registra-se com prazo.
  3. Versões fixadas. As dependências fixam-se a versões concretas, para que a construção de hoje e a de amanhã contenham o mesmo.
  4. Assinatura do artefacto. O que se publica vai assinado, e a implementação só aceita artefactos assinados pela própria construção. Encaixa com implementar por digest: a impressão digital diz o que é; a assinatura diz quem o fez.

O que vem depois da implementação

Uma dependência sem vulnerabilidades hoje pode tê-las amanhã, quando se descobre uma nova. Como cada artefacto em produção tem a sua lista de componentes guardada, responder a «estamos afetados por esta vulnerabilidade?» é uma consulta de minutos, não uma busca de dias por todos os repositórios.

Também os segredos e a configuração

O código que se publica não deve levar dentro credenciais (vimo-lo em segredos com nome, nunca com valor), e a configuração de infraestrutura analisa-se tal como o código da aplicação, com regras como código.

Com o software sob controlo, falta proteger o que mais importa no fim: os dados.


Como o aplicamos: Cibersegurança.

Se o seu custo cloud cresce sem que ninguém saiba porquê, ou a sua arquitetura depende de quem a montou, falemos.

Falemos