Cibersegurança

Código malicioso em pacotes da Red Hat se espalhou sozinho e roubou chaves

Susan Hill

Por um tempo, algumas das peças de software distribuídas com o nome da Red Hat trabalharam em silêncio contra quem as instalava. Dentro de mais de 30 pacotes da coleção pública @redhat-cloud-services da empresa havia um pequeno script pronto para rodar no instante em que um desenvolvedor instalava qualquer um deles. Ele estava configurado como uma etapa preinstall, uma daquelas tarefas automáticas que a ferramenta npm executa por conta própria, antes de carregar uma única linha do software de verdade. Sua função era achar senhas e, depois, se espalhar.

A Red Hat não faz aplicativos que a maioria das pessoas abre pelo nome, mas seu código sustenta boa parte do que elas usam todo dia: os painéis na nuvem por onde um banco entra, os sistemas em que rodam hospitais e órgãos públicos, as ferramentas com que outras empresas montam os próprios produtos. Quando um código com esse rótulo fica hostil, o raio de impacto não é um aplicativo. É tudo o que foi construído por cima.

O script escondido saiu à caça das chaves que abrem a computação moderna. Segundo a empresa de segurança StepSecurity, a primeira a alertar sobre os pacotes, ele recolheu tokens de acesso da Amazon Web Services, Google Cloud, Microsoft Azure, Kubernetes, HashiCorp Vault, da própria npm e do serviço de automação CircleCI, além dos segredos guardados dentro das esteiras de compilação do GitHub. Para alcançá-los, lia a memória bruta do processo de compilação em andamento, um truque que escapa das proteções que deveriam manter os segredos fora dos registros.

O que transforma um roubo de dados comum em algo mais parecido com um surto é o que o código fazia em seguida. Com os tokens de publicação da npm roubados, ele tentava subir versões recém-adulteradas de qualquer outro pacote ao qual a conta sequestrada tivesse acesso, usando um parâmetro que dispensa a verificação em duas etapas que normalmente estaria no caminho. Um roubo que se copia não fica com as primeiras vítimas. Ele viaja pela mesma confiança sobre a qual todo o sistema se apoia.

Nas máquinas dos próprios desenvolvedores a carga foi mais longe: deixava instruções dentro das configurações de tarefas do Visual Studio Code e nos ajustes do Claude Code, o assistente de programação com inteligência artificial, para continuar rodando muito depois de a instalação terminar. Quem mais costuma instalar esses pacotes, os engenheiros que mantêm o software de todo mundo, eram também aqueles cujos laptops viravam porta de entrada.

O detalhe mais incômodo é de onde saíram as versões ruins. Os desenvolvedores da Red Hat, que reconheceram o problema no repositório público do projeto, e os pesquisadores que desmontaram o código concordam: as versões envenenadas saíram pela própria esteira de publicação automática da Red Hat, a maquinaria que pega o código dos repositórios e o manda para o mundo. Os atacantes não se passaram pela Red Hat. Por um tempo, puderam publicar como Red Hat. O selo de confiança e aquilo em que se confiava se separaram.

Não é a primeira vez que a cadeia de suprimentos do software livre vira rota de entrega. Extensões de navegador adulteradas e contas de desenvolvedores sequestradas apareceram repetidas vezes ao longo da primavera, todas explorando o mesmo hábito: o software moderno é montado a partir de milhares de componentes gratuitos que ninguém escreve do zero. O que faz este caso pesar mais é o nome na caixa. A razão de pegar código de um fornecedor como a Red Hat, e não de um colaborador anônimo, é justamente que esse nome deveria ser a garantia.

Vale dizer com clareza o que o incidente não significa. Até agora não há sinal de que aparelhos de usuários comuns tenham sido infectados, nem de que os produtos corporativos pagos da Red Hat e os sistemas em produção de seus clientes tenham sido invadidos. As versões maliciosas miraram o meio bagunçado do desenvolvimento, os servidores de compilação automáticos e as máquinas dos engenheiros, e muitos dos pacotes afetados são ferramentas de interface e de desenvolvimento, não o núcleo de nenhum serviço no ar. O quadro também segue mudando, e o número exato de pacotes contaminados se moveu enquanto a Red Hat e os pesquisadores externos percorrem a lista. O dano que mais importa, as credenciais roubadas, fica invisível até alguém usá-las.

A Red Hat foi removendo as versões maliciosas, e as publicações comprometidas estão sendo retiradas da npm. A quem as instalou na janela afetada, pede-se que considere queimado cada token que a compilação pôde ver e o renove. A divulgação chegou no início de junho, e a limpeza vai durar mais que as manchetes. O problema estrutural vai durar mais que a limpeza: a internet é montada, em alta velocidade, a partir de milhões de peças pequenas mantidas por gente que nunca vamos conhecer e, cada vez mais, por sistemas automáticos que podem ser sequestrados para assinar essas peças no lugar delas.

Tags: , , ,

Discussão

Há 0 comentários.