Uma parte da sua cadeia de suprimentos digital pode mudar de proprietário sem que uma linha de código mude. O domínio resolve igual. O script tem o mesmo hash. O tráfego parece idêntico, porque é idêntico. O que mudou é quem decide o que aquele componente faz em seguida, e nada dessa decisão é visível em uma captura de rede.
O comprometimento, quando chega, vem meses ou anos depois por um canal em que já se confiava. E a pergunta que o teria detectado nunca foi técnica. Foi quem comprou isso, quando e de quem.
O mecanismo

Cada uma dessas transferências fica registrada no papel em algum lugar

Cada uma deixa um registro documentado em algum lugar. Um contrato de venda, um assento em registro público, uma mudança de permissões, um arquivo de pessoal. Nenhuma produz um pacote, um alerta ou um hash diferente, e é exatamente por isso que o monitoramento que as detectaria não fica na rede.

01

O ativo é comprado
Um domínio, um repositório, um pacote, uma extensão ou a empresa por trás de qualquer um deles muda de mãos. A base instalada e a confiança acumulada são, com frequência, o objetivo da compra, e não uma parte incidental dela. Os pesquisadores já descrevem a aquisição de extensões de navegador consolidadas justamente pelos seus usuários existentes como um modelo de negócio permanente, e não como uma série de incidentes isolados.

02

Os direitos de publicação são entregues
Um mantenedor não remunerado de um pacote do qual milhares de organizações dependem recebe oferta de ajuda de um desconhecido, e aceita. Nos principais registros isso não exige nenhuma verificação de identidade da parte que entra além do controle de um endereço de e-mail, nenhum prazo de espera e nenhuma comunicação a ninguém abaixo. É um único comando.

03

A confiança é cultivada
Uma identidade contribui com trabalho real e útil por meses ou anos, é promovida por mérito e fica então em posição de publicar o que quiser. Não há nenhuma etapa fraudulenta a detectar no caminho, porque cada etapa é autêntica até a última. Quando o mantenedor existente está sobrecarregado, uma campanha coordenada de vozes aparentemente independentes pressionando por um comantenedor acelera o processo.

04

As pessoas de dentro mudam
O desenvolvedor com permissão de escrita, o prestador com acesso à implantação, o administrador de um fornecedor três níveis abaixo. Nada muda no acesso deles, porque o acesso sempre foi legítimo. O que muda são as suas circunstâncias, o seu empregador, os seus incentivos, ou quem tem poder de pressão sobre eles, e nada disso é observável de fora da organização que os emprega.
Fora da rede

Os registros que importam ficam fora da rede

Cada mecanismo desta página produz um registro. As empresas se registram e levam os seus atos societários a registro. Os domínios são transferidos, e os registradores anotam. As mudanças de propriedade de repositórios e registros são escritas nas listas de membros e nos metadados dos pacotes. Os programas raiz exigem a comunicação exatamente desse tipo de mudança. As sanções e as medidas de fiscalização nomeiam partes. Nada disso é secreto. Tudo isso fica fora da rede que uma equipe de segurança monitora, em fontes que ninguém transformou no trabalho de alguém.
É por isso que a observação sozinha não basta, e por isso que este método não para no que uma aplicação contata. Uma captura estabelece quais partes estão dentro do seu limite de confiança. Resolver essas partes em empresas e proprietários é o que torna possível perceber, mais tarde, que uma delas já não é a empresa que você avaliou. As duas metades não são alternativas.
Os dados de registro também pioraram muito como fonte. Até 2024, cerca de 89% dos domínios genéricos de primeiro nível não tinham nenhum titular identificável nos registros públicos, contra cerca de 24% antes da mudança das regras de privacidade. O registro de uma transferência continua existindo. Ele apenas se afastou mais de quem agiria sobre ele, o que eleva o custo de olhar e reduz a probabilidade de que alguém olhe.
A demora

Antes de alguém perceber

Uma cadeia societária traçada para cima a partir de uma empresa, por holdings em camadas e investidores opacos em várias jurisdições, até as pessoas por trás delas.
Resolver um fornecedor nas partes por trás dele é o que torna visível uma mudança posterior dessas partes. Ler o Mapeamento da Cadeia Societária.
Na prática

Cada um desses registros muda em um relógio diferente

A lista de publicadores de um pacote muda no segundo em que o comando roda. Um assento de registrador muda no dia em que a transferência se conclui. Um registro societário pode levar semanas para aparecer, e uma designação de sanções chega quando chega. Acompanhar os quatro é o que faz o mais rápido deles valer algo.
Eventos corporativos
Aquisições, mudanças de controle registrado, novos atos societários, mudanças de administradores ou de sede, insolvência, e a chegada de um investidor cujos interesses diferem dos que você avaliou. A empresa que você aprovou não é sempre a empresa que continua operando com aquele nome.
Transferência de domínios e infraestrutura
Mudanças de registrador e de servidores de nomes, mudanças de hospedagem e de distribuição, troca de emissores de certificados, e espaços de endereçamento que mudam de mãos. Banais isoladamente, e em conjunto o sinal inicial mais claro de que algo em um fornecedor se moveu.
Controle de repositórios e registros
Mudanças de propriedade e de mantenedor em pacotes e repositórios dos quais a cadeia realmente depende, o aparecimento de novos publicadores em um pacote consolidado, e mudanças abruptas em quem assina uma publicação. O registro é público. Quase ninguém abaixo o lê.
Reputação e medidas de fiscalização
Designações de sanções, medidas de fiscalização, litígios, decisões de desconfiança dos programas raiz, e informações adversas sobre qualquer parte da cadeia, e não apenas sobre o fornecedor com quem você contratou. A exposição é herdada de cada nível, e o descrédito também.
O intervalo

Oito dessas transferências, medidas a partir do dia em que o controle se moveu

Duas semanas para o Nano Adblocker. Vinte e oito meses para o xz-utils. O intervalo não é função do tamanho do componente, de quantas pessoas dependem dele, nem do cuidado com que foi escolhido. É função de quanto tempo levou para alguém olhar.
Oito casos documentados desenhados como barras horizontais em uma escala de meses a partir do momento em que o controle de um componente mudou de mãos. Particle e Nano Adblocker em questão de dias, event-stream dois meses, Polyfill.io quatro, The Great Suspender cinco, WoSign e StartCom doze, Stylish dezoito, e xz-utils vinte e oito.
O histórico

Treze anos da mesma falha chegando por seis caminhos diferentes

Vinte eventos em ordem de data, por seis caminhos de entrada. Três deles são transferências de controle, e são os que não deixaram nenhum rastro técnico no momento em que aconteceram. Os demais estão aqui porque o mesmo vale para a parte que carrega a exposição: quase nunca é a parte que falhou.
Uma linha do tempo da esquerda para a direita de 2013 a 2026, com um eixo de anos acima e abaixo e vinte eventos desenhados como barras de duração em seis faixas: canal de compilação ou de atualização, propriedade ou controle transferidos, conta de mantenedor ou de publicação, script de terceiros em uma página em produção, plataforma ou serviço gerenciado, e componente que todos incorporam.
Target, 2013
Os atacantes entraram com credenciais emitidas a um prestador de refrigeração e climatização que tinha acesso remoto à rede da Target, e de lá chegaram aos sistemas de pagamento. Cerca de 40 milhões de registros de cartões e 70 milhões de registros de clientes foram levados. O fornecedor não tinha papel algum nos pagamentos e nenhuma razão para estar perto deles.
WoSign e StartCom, 2015
Uma autoridade certificadora adquiriu discretamente outra e não divulgou, em violação das regras dos programas raiz dos navegadores, que exigem exatamente essa divulgação. Seguiram-se certificados retroativos e emissões indevidas. Mozilla, Google e Apple retiraram a confiança das duas, e trataram a mudança de controle ocultada como a falta principal.
left-pad, 2016
Um autor retirou do registro público um pacote de onze linhas após uma disputa de nome, e milhares de compilações quebraram no mundo inteiro em questão de horas. Nada foi comprometido e ninguém foi atacado. Ficou estabelecido que um componente que ninguém havia escolhido deliberadamente podia, ainda assim, parar uma enorme quantidade de trabalho.
M.E.Doc e NotPetya, 2017
O canal de atualização de um programa ucraniano de contabilidade fiscal foi usado para distribuir malware destrutivo a todas as organizações que o executavam, e de lá se espalhou pelas redes conectadas. Merck e Maersk estiveram entre as empresas cujas operações ficaram paradas por semanas. O pedido de indenização da Merck ao seguro pela perda chegou a cerca de 1,4 bilhão de dólares e levou anos de litígio para ser resolvido.
CCleaner, 2017
Uma compilação com backdoor de um utilitário de uso amplo foi assinada com o próprio certificado do fabricante e distribuída pela sua própria infraestrutura de download. Cerca de 2,27 milhões de usuários a instalaram antes de o comprometimento ser descoberto. O fabricante havia sido adquirido pouco antes, mas as evidências apontam para uma intrusão no ambiente de compilação e não para a transação.
Ticketmaster e Inbenta, 2018
Um script de chatbot fornecido por um terceiro estava sendo executado em páginas de pagamento. O que foi comprometido foi a infraestrutura do fornecedor, não a do varejista, e até nove milhões de clientes foram afetados. O regulador multou o varejista, que contestou a responsabilidade por um script que não havia escrito.
British Airways, 2018
Vinte e duas linhas de script foram acrescentadas a código hospedado pela própria companhia, e os dados de pagamento de cerca de 429.000 pessoas foram levados ao longo de três semanas. Foi um comprometimento de primeira parte com as mesmas técnicas, e não uma falha de fornecedor externo, e os dois são agrupados com frequência e de forma equivocada. O regulador multou a companhia em 20 milhões de libras.
event-stream, 2018
Um mantenedor que havia se afastado de um pacote baixado milhões de vezes por semana foi abordado por um desconhecido oferecendo ajuda, e concedeu direitos de publicação. Dois meses depois, uma dependência acrescentada pelo novo mantenedor trazia uma carga dirigida a uma carteira de criptomoedas específica. Foi descoberta três meses depois disso, por um desenvolvedor que leu o código.
Stylish, 2017
Uma extensão de navegador com cerca de dois milhões de usuários foi adquirida por uma empresa de analytics em 2017. Dezoito meses depois, um pesquisador documentou que ela enviava o histórico completo de navegação de todos que a tinham instalado ao novo proprietário. Chrome e Firefox a retiraram poucos dias depois do relatório.
Nano Adblocker, 2020
O desenvolvedor de duas extensões de bloqueio de anúncios as vendeu em outubro de 2020 e disse isso publicamente na época. Em cerca de duas semanas, os novos proprietários já haviam publicado uma atualização que coletava dados de usuários, e as extensões foram retiradas. Onde o intervalo do Polyfill.io foi de quatro meses e o do xz-utils de vinte e oito, este foi de quinze dias.
ASUS, 2019
Um utilitário de atualização do fabricante, corretamente assinado e servido dos seus próprios servidores, entregou um backdoor a um grande número de máquinas. Os pesquisadores constataram que a carga verificava cada máquina contra uma lista fixa de várias centenas de endereços de rede e não fazia nada em nenhuma das demais. A distribuição em massa foi o meio de entrega para um número muito pequeno de alvos pretendidos.
SolarWinds, 2020
Os atacantes alcançaram a cadeia de compilação de um produto de gestão de redes e inseriram código em uma versão assinada. Acredita-se que menos de 18.000 clientes instalaram a versão afetada, e um número muito menor foi perseguido depois. A descoberta veio de uma empresa de segurança que investigava uma intrusão nos seus próprios sistemas, e não de um cliente.
The Great Suspender, 2020
Uma extensão de navegador com mais de dois milhões de instalações foi vendida pelo seu desenvolvedor a um comprador cuja identidade não foi revelada. A funcionalidade não mudou e nenhuma atualização pareceu incomum. O comportamento malicioso apareceu cinco meses depois, e a extensão foi retirada e desativada remotamente nas máquinas dos usuários no fevereiro seguinte.
Kaseya, 2021
Ransomware foi distribuído pela plataforma de gestão remota que os prestadores de serviços gerenciados usam para administrar os seus clientes. Até cerca de 1.500 negócios abaixo na cadeia foram afetados, e a maioria deles nunca havia ouvido falar da plataforma. Ficaram expostos pelas ferramentas do seu prestador, e não por algo que eles mesmos executassem.
Log4Shell, 2021
Uma falha em uma biblioteca de log em Java presente em um número enorme de aplicações tornou-se trivialmente explorável, e as organizações passaram semanas tentando estabelecer onde a biblioteca sequer estava. A maioria não conseguiu responder rápido à pergunta. A correria foi menos pela falha do que pela ausência de qualquer inventário contra o qual verificá-la.
3CX, 2023
Um funcionário instalou em uma máquina pessoal uma cópia com trojan de um software de negociação sem relação com a empresa. Os atacantes usaram as credenciais obtidas ali para alcançar o ambiente de compilação da própria empresa e inserir um trojan na sua aplicação de desktop, que tinha mais de 600.000 organizações clientes. É o caso documentado mais claro de um comprometimento de cadeia de suprimentos usado para preparar outro.
MOVEit, 2023
Uma falha em um produto de transferência gerenciada de arquivos foi usada para extrair dados das organizações que o executavam e das muito mais numerosas cujos dados essas organizações guardavam. Os levantamentos registraram bem mais de 2.000 organizações afetadas e dezenas de milhões de pessoas. Uma grande parcela dessas pessoas não tinha relação alguma com o software nem com as empresas que o operavam.
xz-utils, de 2021 a 2024
Uma identidade fez a sua primeira contribuição comum a uma biblioteca de compressão essencial em outubro de 2021, recebeu um papel maior em meados de 2022 após uma campanha sustentada de vozes aparentemente sem relação pressionando o único mantenedor a aceitar ajuda, e inseriu um backdoor nos scripts de compilação em fevereiro de 2024. Passaram-se vinte e oito meses sem nenhuma etapa fraudulenta a detectar, porque cada etapa foi autêntica até a última. A descoberta foi acidental, por um engenheiro que investigava um problema de desempenho sem relação, e havia alcançado distribuições de teste e de atualização contínua, não versões estáveis.
Polyfill.io, 2024
Um serviço de scripts de uso amplo teve o seu domínio e o seu repositório vendidos em fevereiro de 2024 a uma empresa registrada na China, e os desenvolvedores levantaram a mudança em uma issue de repositório público no mesmo mês. No fim de junho foram documentados de forma independente redirecionamentos maliciosos que afetavam mais de 100.000 sites. O adquirente foi sancionado pelo Tesouro dos Estados Unidos em maio de 2025 por uma operação de fraude sem relação com este caso.
CrowdStrike, 2024
Uma atualização de conteúdo defeituosa de um agente de segurança fez com que cerca de 8,5 milhões de máquinas Windows não iniciassem, segundo a Microsoft. Nada foi comprometido e ninguém atacou nada. Companhias aéreas, hospitais e bancos pararam de funcionar porque todos dependiam do mesmo componente, e é assim que a concentração se parece quando falha por acidente.
tj-actions, 2025
Um token de acesso roubado foi usado para reescrever as marcas de versão de uma ação de integração contínua de uso amplo, de modo que apontassem para código que imprimia os segredos de compilação em logs de leitura pública. Cerca de 23.000 repositórios referenciavam essa ação. O token havia sido obtido alguns meses antes por meio de um projeto sem relação.
Shai-Hulud, 2025
Credenciais de publicação roubadas foram usadas para acrescentar código a versões de pacotes que depois colhiam credenciais das máquinas que as instalavam, e as usavam para publicar novas versões afetadas. É o primeiro caso documentado de um comprometimento autopropagável em um registro de pacotes importante. Mais de cem pacotes foram afetados na primeira onda.

Uma avaliação expira no momento em que a propriedade se move

Esse é o argumento para resolver as partes em primeiro lugar, e para ler os registros depois. O método que produz o mapa, e o que uma única sessão estabelece, são o texto seguinte.