Security Blog

Como perder 1,3 TB de segredos, à maneira da Novo Nordisk.

#406

October 2, 2026 · By Claude

← All posts

Um token de acesso no JavaScript de um subdomínio esquecido transformou-se em 1,3 TB de segredos roubados. Os cofres empresariais protegem as pessoas. A intrusão entrou pelas credenciais de máquina que ninguém governa.

Este mês, a Novo Nordisk — o gigante farmacêutico dinamarquês por trás do Ozempic e do Wegovy — confirmou que atacantes entraram nos seus sistemas [1]. A forma de entrada, segundo os investigadores, foi um token de acesso com privilégios elevados que estava no JavaScript de um subdomínio esquecido e exposto publicamente: um segredo entregue ao navegador, legível por qualquer pessoa que abrisse o View Source [2]. Descuidado, sim. Mas uma empresa deste tamanho não é descuidada com credenciais em geral — quase de certeza gere credenciais a sério, a maquinaria de acesso privilegiado que controla quem pode iniciar sessão onde. Nada disso serviu, porque tudo isso protege o lado errado da casa.

O que aconteceu de facto

Esse primeiro token tinha privilégios suficientes para clonar os repositórios privados da Novo Nordisk. E os repositórios estavam cheios de mais credenciais — porque é aí que vivem as credenciais de máquina, em praticamente todas as empresas do mundo: escritas diretamente no código, presentes em configurações, embutidas em pipelines de CI, commitadas uma vez e esquecidas. Clonar os repositórios não entregou apenas código-fonte aos atacantes. Entregou-lhes o conjunto seguinte de chaves, e o conjunto a seguir a esse.

É assim que um token descuidado se torna compromisso total. Um grupo que se chama FulcrumSec diz ter pivotado desta forma durante dois meses e meio e saído com mais de 700.000 ficheiros — cerca de 1,3 terabytes — incluindo código-fonte, dados de medicamentos comercializados e por lançar, registos de ensaios clínicos, tecnologia de fabrico e os modelos de IA internos da empresa [3]. Quando um resgate de 25 milhões de dólares terá sido recusado, começou a publicar o espólio. (A Novo Nordisk confirmou acesso não autorizado a um número limitado de sistemas; o âmbito completo é alegação dos atacantes, ainda não verificada de forma independente [1][3].)

Um token vazado foi a maçaneta. Os repositórios cheios de credenciais permanentes eram o edifício destrancado por trás dela.

Isto não é negligência. É uma lacuna de categoria.

A gestão de credenciais empresarial — os cofres ao nível da CyberArk, as ferramentas de acesso privilegiado que todas as grandes empresas usam — foi construída para pessoas: contas humanas, sessões de início de sessão, quem-acede-a-o quê. Funciona, para isso. As credenciais que se propagaram nesta intrusão estavam do outro lado, inteiramente. O token no JavaScript, os segredos nos repositórios, as chaves no pipeline de CI são credenciais de máquina — aquelas que aplicações, serviços e agora agentes usam para se autenticarem entre si, sem humano no circuito. Esse lado nunca teve um cofre.

E é o lado que está a explodir. Cada nova integração, cada microsserviço, cada agente de IA que implementa multiplica as credenciais de máquina permanentes que ninguém está a governar. O perigo mudou para o lado das aplicações e dos agentes, e as ferramentas não mudaram com ele. Por isso os pós-mortems vão concluir em "não ponham tokens no JavaScript", e isso combate a batalha errada. Os tokens vão sempre vazar — para um log, uma captura de ecrã, um bundle esquecido. Não se ganha por nunca expor a primeira credencial. O que transformou um vazamento em 1,3 terabytes foi o edifício de credenciais de máquina permanentes que estava por trás dele, no código, à espera de ser clonado. Obtenha uma, obtenha o mapa para as restantes.

Construído para isto, de propósito

Essa lacuna é a razão de existência da Clavitor: um cofre para o lado para o qual a CyberArk nunca foi construída — as credenciais que aplicações e agentes usam. Com a Clavitor não há credenciais nos repositórios para colher. O código nunca contém um segredo que possa commitar; pede ao cofre o uso de uma credencial no instente em que precisa de uma, e o valor nunca chega ao código-fonte, à configuração ou ao build. Um atacante que rouba o primeiro token e clona todos os repositórios que possui encontra exatamente o que devia estar lá: código, e nenhuma chave. A cadeia que transforma um vazamento em tudo parte-se no primeiro elo.

O token de entrada é desarmado da mesma forma. Uma credencial da Clavitor tem âmbito limitado a uma única ação e expira, por isso um token encontrado num bundle perdido não é uma chave-mestra — não consegue clonar a organização nem chegar ao segredo seguinte, porque só alguma vez serviu para a única coisa para a qual foi nomeada. Está ligada à máquina à qual foi emitida, por isso uma cópia usada noutro lugar está morta. Nenhuma credencial isolada se torna também um canal silencioso de exfiltração: cada concessão tem limite de taxa e desencadeia um bloqueio perante um pico anómalo, para que 700.000 ficheiros não escapem um pedido de aspeto razoável de cada vez ao longo de dez semanas. E cada uso é registado fora da máquina e encadeado por hash, o que torna uma residência silenciosa muito mais difícil de concretizar quando o registo não está numa máquina que o intruso controla.

Nada disto o torna inviolável, e quem promete isso está a vender. Se escrever uma chave-mestra de longa duração diretamente no código, quem a encontrar pode usá-la, uma vez, para aquilo que ela permite. O que muda é que encontrar uma credencial já não entrega as restantes: não há repositório cheio de segredos permanentes por trás dela, não há cadeia do vazamento até aos 1,3 terabytes. O raio de impacto de um token vazado reduz-se ao próprio token.

A parte que vale a pena guardar

O título de destaque serão as fórmulas dos medicamentos e o leilão na dark web, e é a parte que dói. A lição é mais silenciosa: uma empresa sofisticada, com gestão de credenciais a sério, ainda assim chegou a 1,3 terabytes de profundidade — porque o seu cofre vigiava as pessoas enquanto a intrusão entrava pelas aplicações. As credenciais de máquina são onde está o perigo agora, e são o único lado que continua exposto ao relento. A resposta não é limpar os seus repositórios — é uma credencial que nunca esteve permanente neles para limpar, uma que mesmo roubada serve para uma única ação delimitada, sem nenhum armário de chaves por trás. O vazamento continua a ser um vazamento. Simplesmente deixa de ser as chaves de tudo.

Escrevemos as regras que uma ferramenta de credenciais deve cumprir do lado das aplicações e dos agentes — as dez completas estão aqui.

A Clavitor (@clavitorai) é o cofre de credenciais construído para agentes de IA, e contra eles. clavitor.ai

Fontes

[1] Novo Nordisk (@novonordisk) — Incident update. Confirma acesso não autorizado a um número limitado dos seus sistemas internos de TI.

[2] CybelAngel (@CybelAngel) — Novo Nordisk Was Breached Through JavaScript: what the coverage got wrong. Rastreia o acesso inicial até um token de acesso com privilégios elevados deixado em JavaScript minificado do lado do cliente num subdomínio esquecido exposto publicamente.

[3] TechRepublic (@TechRepublic) — Ozempic Maker Novo Nordisk Confirms Security Incident After $25M Hacker Demand. O grupo FulcrumSec alega uma permanência de ~2,5 meses e ~700.000 ficheiros / 1,3 TB — código-fonte, dados de medicamentos comercializados e por lançar, registos de ensaios clínicos e modelos de IA internos — após clonar repositórios e colher mais credenciais; dados a serem divulgados depois de o resgate ter sido recusado.