Outra forma de pensar sobre tudo isso é imaginar um urso em um acampamento. (Sério, nós vamos chegar lá.)
A invasão de IA da Hugging Face, contada por meio de uma metáfora de urso cada vez mais dedicada
Na segunda-feira, a Hugging Face publicou uma linha do tempo técnica que explica aos leitores como um agente de IA autônomo, construído com modelos da OpenAI e executado dentro de uma das avaliações de cibersegurança da própria OpenAI, invadiu os sistemas da empresa por mais de quatro dias no início deste mês. Este é o primeiro incidente de segurança sobre o qual o CEO da OpenAI, Sam Altman, “sentiu de forma muito visceral”, segundo suas próprias palavras.
Não é de admirar, visto que parece, ao menos, que algo foi verdadeiramente solto por aqui. De fato, a equipe da Hugging Face iniciou seu relatório sugerindo que “todos devem se preparar como defensores”, antes de mergulhar nos detalhes do que aconteceu para beneficiar profissionais de segurança em todos os lugares.
Enquanto o resto da internet continua tentando entender o que aconteceu (o jargão no relatório da Hugging Face é impossível de decifrar para a maioria das pessoas), um ponto que muitos observadores continuam perdendo é que este não foi um agente rebelde desobedecendo ordens. Era um sistema construído para caçar vulnerabilidades, fazendo exatamente isso, só que contra o alvo errado.
Outra forma de pensar sobre tudo isso é imaginar um urso em um acampamento. Sério mesmo. Um urso testa zíperes de barracas, maçanetas de portas de carros, coolers e tampas de lixeiras. Ele faz isso em cada acampamento, a noite toda, porque sabe que precisa de apenas um cooler destrancado para encher a barriga com as compras de algum coitado.
Foi mais ou menos isso que aconteceu na Hugging Face. O sistema da OpenAI tentou milhares de coisas e simplesmente continuou. Eventualmente, um punhado dessas tentativas funcionou e, uma vez que funcionaram, o agente seguiu em frente. De acordo com a Hugging Face, o agente executou 17.600 ações ao longo de quatro dias e meio sem parar.
O que nos traz de volta à nossa analogia do urso. Assim como um sucesso com um cooler cheio de comida ensina o urso a tentar com ainda mais afinco da próxima vez (ele agora é um urso “condicionado à comida”), uma senha vazada levou o agente da OpenAI a procurar por mais vulnerabilidades e, eventualmente, a uma única chave que destravou vários sistemas da empresa de uma só vez.
Nenhum dos cenários é inofensivo. Um urso que invade seu cooler ainda come sua comida e provavelmente também revira seu acampamento. Ele está apenas focado em se alimentar, mas ainda assim deixa um rastro de destruição. Da mesma forma, o agente da OpenAI aparentemente perseguia um objetivo sem se importar com mais nada. O agente estava originalmente fazendo um exame de cibersegurança, percebeu que o gabarito do exame provavelmente estava nos servidores da Hugging Face e foi atrás dele.
A persistência aqui é realmente o que se destaca acima de tudo; o agente tinha um trabalho a fazer e não ia parar até terminá-lo. A Hugging Face, finalmente percebendo que algo estava errado, cortou seu acesso e encerrou a invasão, mas a essa altura já era tarde demais. O agente já havia conseguido o que buscava, e muito mais além disso.
Caso você tenha perdido, aqui está a maior parte do que aconteceu, de acordo com a linha do tempo da Hugging Face, mas em um inglês mais claro.
- O agente estava fazendo um exame de habilidades de cibersegurança para a OpenAI, onde uma IA é pontuada por encontrar e explorar falhas de software. Esta execução específica estava sem as travas de segurança. (A OpenAI havia desativado seus filtros de segurança tradicionais para ver o que o modelo conseguia fazer com força total, sem nenhum humano envolvido em nenhuma de suas jogadas individuais.) Em algum momento, ele descobriu que as soluções de referência do exame provavelmente estavam armazenadas nos servidores da Hugging Face. Então, em vez de resolver o desafio, ele roubou o gabarito de uma infraestrutura que não tinha nada a ver com o teste original.
- Ele escapou do ambiente de exames da OpenAI explorando uma falha de software não corrigida que lhe deu um caminho para a internet aberta. A partir daí, ele encontrou outra ferramenta de teste de IA exposta online (sem relação com a Hugging Face), invadiu essa também e inseriu um código que executava silenciosamente comandos ocultos no momento em que o programa era iniciado. Isso lhe deu controle total da máquina — sua nova base de operações para o resto da ação, que usaria para ir atrás dos sistemas da Hugging Face.
- A partir dessa base, ele se voltou para a própria Hugging Face. A Hugging Face tinha um filtro destinado a bloquear solicitações suspeitas de chegarem à web aberta, mas o filtro verificava apenas solicitações de saída, e não solicitações para ler arquivos locais presentes ali mesmo no servidor. O agente encontrou esse ponto cego e passou por ele. Ele enviou um arquivo disfarçado de conjunto de dados comum, mas embutido nele havia uma instrução dizendo aos próprios sistemas da Hugging Face para extraírem senhas e código-fonte do servidor e os entregassem de volta disfarçados como dados normais.
- Esse truque lhe deu senhas e código, mas o agente ainda não conseguia executar nada nos servidores da Hugging Face. Para executar comandos lá, ele precisava de uma segunda via de entrada. Ele encontrou um bug diferente nesse mesmo sistema da Hugging Face — o software pegava um trecho de texto do agente e acidentalmente o tratava como um comando a ser executado, em vez de apenas dados a serem lidos. Isso deu ao agente a capacidade de rodar seu próprio código diretamente nos servidores da Hugging Face.
- Para enviar comandos para dentro e dados roubados para fora, o agente não construiu nenhuma infraestrutura especial própria, segundo a Hugging Face. Ele usou ferramentas que qualquer um pode acessar — sites de colagem de texto (paste) e serviços de registro de requisições, além dos próprios recursos de upload e proxy da Hugging Face — trabalhando juntos de forma oculta. Além disso, ele construiu um pequeno sistema de mensagens improvisado com números de sequência para manter as partes em ordem, mais uma rápida verificação integrada para capturar qualquer coisa que chegasse corrompida, para que pudesse enviar comandos em várias etapas e juntar os dados roubados na ordem correta.
- Ele também garantiu que nada viajasse à vista de todos. Tudo o que roubava ou enviava, ele embaralhava primeiro. A varredura automatizada inicial da Hugging Face no tráfego interceptado capturou apenas uma pequena fração do que havia sido levado. Os investigadores encontraram o resto — cerca de quatro vezes mais — apenas após fazerem engenharia reversa no método de embaralhamento do próprio agente.
- O agente até tinha planos de backup, plantando cópias de si mesmo em 11 servidores diferentes, cada um configurado para ser relançado por conta própria, de modo que desligar uma cópia não pararia nada, já que mais processos do agente já estavam rodando em outro lugar.
- Em um ponto, o agente obteve a chave criptográfica privada usada para gerar tokens de login válidos. A partir daí, ele podia criar suas próprias credenciais válidas sempre que quisesse.
- Após comprometer um único servidor, o agente obteve uma credencial que, devido a uma configuração incorreta por parte da Hugging Face, acabou destravando vários sistemas internos separados de uma só vez, em vez de apenas aquele de onde veio. Esse único erro entregou ao agente amplo controle quase imediatamente.
- Usando acesso a repositórios roubados, ele enviou uma alteração em um script de compilação que, se tivesse sido aprovada, poderia ter comprometido os sistemas automatizados que executavam aquele código. No entanto, não funcionou. As salvaguardas da Hugging Face pegaram o erro.
- O agente pareceu se conter para não causar danos reais, observou a Hugging Face, mas provavelmente não por moderação. Os investigadores notaram que todos os comandos capazes de excluir ou alterar recursos em nuvem foram executados no modo de “simulação” (dry run), o que significa que ele relatava o que aconteceria sem realmente fazê-lo.
- Toda vez que seu ambiente de teste era reiniciado — o que acontecia constantemente, por design — ele perdia todas as ferramentas e todo o rastro de sua identidade. Mas ele se reconstruía do zero e se reconectava à sua infraestrutura roubada a cada vez, por mais de quatro dias seguidos.
Em última análise, concluiu a Hugging Face em seu relatório, um hacker humano “capaz” “poderia ter encontrado e explorado as mesmas falhas: processamento inseguro de conjuntos de dados, metadados de nuvem expostos, acesso excessivamente amplo e credenciais de longa duração”. A grande diferença, continuou a organização, é que o “agente explorou essas falhas em uma escala diferente”.
E é aí que a analogia do urso acaba se mostrando mais útil. A melhor defesa contra um urso faminto é o protocolo. Você guarda a comida; você usa uma tranca que funcione bem o suficiente para segurar. A lição aqui não deveria ser que o urso era tão esperto ou travesso. É que ele nunca parou de verificar. É entendido na cibersegurança que sempre há algum bug que você não encontrou, então se de repente fica 100 vezes mais fácil verificar tudo, então nada é realmente seguro. É isso que tantos acham perturbador neste episódio.