Ao longo do último ano, @pewdiepie se tornou um dos defensores mais visíveis da computação privada e auto-hospedada, e tem sido um prazer genuíno acompanhar.
O que começou no final de 2025 como um experimento divertido — uma estação caseira repleta de GPUs modificadas rodando modelos de código aberto, chatbots votando em um "conselho", poder computacional excedente doado para pesquisas de enovelamento de proteínas — amadureceu em cerca de doze meses até se tornar algo com uma missão clara.
Em 31 de maio de 2026, chegou como Odysseus, um espaço de trabalho de IA gratuito, de código aberto e auto-hospedado, que ele apresentou de forma direta como um ataque ao modelo de assinatura: local primeiro, privacidade primeiro, sem telemetria, seus dados permanecendo no seu próprio hardware em vez de fluir para um punhado de grandes empresas.
Para alguém com seu alcance, colocar inferência local diante de um público mainstream não técnico é o tipo de coisa que o mundo da privacidade deseja há anos, e estou torcendo para que dê certo.
Eu também sou a pessoa que, testando minha própria implantação autorizada, encontrou uma maneira de tomar o controle de um desses servidores com um único clique. As duas coisas não estão em conflito. Software tão ambicioso, lançado tão rápido, numa categoria tão nova, é exatamente onde bugs de segurança interessantes vivem, e encontrá-los cedo é como o projeto se torna confiável depois.
Então, no espírito de ajudar, aqui está a cadeia completa, explicada desde o início, junto com o que ela diz sobre o momento em que estamos construindo.
uma porta sem fechadura, e uma porta que só parecia inofensiva
Odysseus pode entregar trabalhos pesados para máquinas GPU remotas que ele acessa via SSH, a forma padrão de um computador executar comandos em outro.
Alguns de seus endpoints internos, portanto, podem tocar um shell de comandos — a linha de comando bruta onde, se você conseguir alcançá-la, pode fazer a máquina fazer quase qualquer coisa.
Sensatamente, quase todos esses endpoints começam verificando se quem está chamando é um administrador.
A exceção é um endpoint silencioso cuja função é listar quais pacotes Python estão instalados em um servidor remoto, e é essa exceção que desfaz tudo.
O primeiro problema é que esse endpoint nunca recebe as informações que precisaria para identificar seu chamador, então ele não realiza nenhuma verificação de administrador e não pode, nem mesmo em princípio.
A única coisa na frente dele é a regra geral do aplicativo de que você esteja logado, o que significa que qualquer conta — incluindo uma que um estranho registrou há um minuto — pode alcançar uma porta que toca o shell, enquanto cada endpoint irmão a protege cuidadosamente.

A causa raiz estrutural: um handler que não pode ver quem está chamando não pode impor quem é permitido, como visto abaixo.

Por si só, isso poderia ser sobrevivível, mas há um segundo problema em como esse endpoint faz seu trabalho real, e é o coração de todo o ataque.
Para descobrir quais pacotes uma máquina remota tem instalados, o programa escreve uma instrução como uma única linha de texto simples e passa essa linha para uma parte do sistema chamada o shell, cuja função é ler a linha e executá-la.
A maneira mais fácil de imaginar o shell é como um assistente que segue instruções escritas de forma absolutamente literal, onde alguns sinais de pontuação carregam significado especial.
O importante aqui é o ponto e vírgula, que o shell lê como "essa instrução terminou, agora faça a próxima coisa", então uma única linha com ponto e vírgula é executada como vários comandos em sequência.


Por causa disso, programas cuidadosos pegam qualquer coisa que uma pessoa digitou e a envolvem em aspas antes de entregá-la ao shell — a maneira do shell ser instruído a tratar esses caracteres como texto comum, sem poder de executar comandos.
O desenvolvedor fez isso corretamente para o nome do servidor e para o comando sendo enviado, então essas entradas estavam seguras.
O número da porta, no entanto, foi inserido na linha diretamente, sem aspas, sob a suposição aparentemente razoável de que uma porta é sempre apenas um número e um número não pode causar dano. (O caminho do ambiente virtual foi concatenado da mesma forma sem aspas, pelo mesmo motivo.)
A falha na suposição é que a porta não precisa ser um número. Ela chega como texto simples extraído diretamente do endereço da web, e quem está fazendo a solicitação decide o que ela diz.
Então, no lugar de 22, um atacante escreve 22; id; hostname #.
O shell lê a primeira parte, tenta conectar e falha inofensivamente, então atinge o primeiro ponto e vírgula e obedientemente executa os dois comandos do atacante, enquanto o # no final diz a ele para ignorar o texto restante que deveria vir depois.

Um ponto e vírgula transforma "listar pacotes em uma caixa remota" em "executar meus comandos nesta caixa".
Alcançá-lo não exige nada mais exótico do que uma sessão logada e um endereço web adulterado:

A solicitação retorna HTTP 200 com o JSON normal de pacotes — enquanto os comandos injetados são executados no lado do servidor.
Os comandos que inseri foram sondas inofensivas, e quando sua saída voltou nomeando a conta de serviço do próprio servidor, confirmou que minhas instruções foram executadas na própria máquina.

Junte as duas falhas e o quadro local cabe em uma frase — qualquer usuário logado pode executar comandos de sua escolha no servidor.
O risco de escala é acentuado exatamente pela coisa que torna Odysseus empolgante.
Se um criador com cem milhões de inscritos integrar com sucesso um grande público não técnico na auto-hospedagem, o resultado são milhares de instâncias semelhantes, configuradas de forma semelhante, expostas de forma semelhante, o que é uma monocultura, e monoculturas são o que os worms amam.
@ashnichrist colocou bem.
transformando em um único clique
Um bug que "qualquer usuário logado" pode acionar ainda soa como se precisasse de um insider malicioso, e o próximo passo é o que remove até mesmo esse requisito, porque faz o próprio navegador da vítima executar o ataque.
A técnica é falsificação de solicitação entre sites (CSRF), e ela se aproveita de um hábito silencioso do navegador.
Depois que você faz login em um site, seu navegador armazena um pequeno token e o anexa automaticamente a solicitações destinadas àquele site, baseado puramente no destino da solicitação, sem considerar qual página a iniciou.

Odysseus configurou esse token com a política SameSite=Lax, que é o padrão razoável e bloqueia o token de acompanhar solicitações sorrateiras em segundo plano — mas ainda assim o envia deliberadamente em uma navegação de nível superior, ou seja, um clique comum que move sua guia inteira para algum lugar.
Como o endpoint vulnerável responde a um link simples, não realiza nenhuma verificação de onde a solicitação se originou e não usa nenhum token antifalsificação, um atacante só precisa hospedar uma página com um botão convidativo.
Para a demonstração, construí exatamente isso — uma página de tributo ao CoComelon alegre, amigável para crianças e, acima de tudo, fiel à tradição — cores de canções de ninar, Comic Sans, um grande botão "play".

O botão não é um link para uma música. Seu manipulador de clique abre o alvo real em uma pequena janela pop-up descartável, para que a solicitação maliciosa ocorra como uma navegação de nível superior — carregando o cookie de sessão SameSite=Lax — sem roubar o foco, e então se fecha automaticamente um momento depois. O endereço que ele abre é apenas o endpoint de pacotes com o comando contrabandeado na "porta":

Enquanto esse clique acontece, a página de isca faz um show para a câmera: a arte do CoComelon pisca pela tela como um clarão, e um terminal digita a si mesmo narrando cada etapa da tomada de controle. (O texto do terminal é uma narração encenada para a demo; a execução real é a solicitação silenciosa que o pop-up acabou de fazer.)

Para tornar o impacto concreto, esse único clique fez três coisas: reescreveu a interface servida para uma desfiguração visual óbvia (uma sobreposição de tela cheia "🍉 seu Odysseus foi CoComelon-izado 🍉", ícones de melancia, o aplicativo renomeado), leu tudo que o usuário do serviço podia ler e — mais duravelmente — escreveu uma conta de administrador oculta diretamente no auth.json do aplicativo.

O detalhe: uma reinicialização limpa a bagunça óbvia e mantém a conta do atacante.
Aqui está uma demo ao vivo.
por que esse é o pior tipo de bug para se ter em uma ferramenta agentiva
A razão pela qual um comprometimento de instância única deve preocupá-lo em 2026 é que uma instância raramente é onde essas coisas param, e o worm que definiu o ano mostra por quê.
Shai-Hulud, o worm npm autopropagante visto pela primeira vez em setembro de 2025 e retornando em ondas maiores desde então, executa um loop brutalmente simples — um script malicioso em tempo de instalação é executado no momento em que um pacote é instalado, escaneia a máquina em busca de segredos como tokens npm e GitHub, chaves SSH e credenciais em nuvem, e então usa essas credenciais roubadas para publicar versões adulteradas dos outros pacotes da vítima, de modo que cada nova instalação se torna o próximo ponto de lançamento sem nenhum esforço adicional do atacante.
A lição que vale a pena carregar é que o trabalho mais difícil de um worm é colher credenciais e encontrar uma maneira de chegar à próxima máquina.
Um assistente de IA agentivo entrega a um worm
ambos
de graça, porque segurar segredos poderosos e alcançar outras máquinas é seu propósito inteiro.
O clique único contra Odysseus rendeu muito mais do que execução de código. Entregou um cofre pré-coletado de chaves de API armazenadas, o banco de dados, a configuração e o acesso SSH que a ferramenta usa para fazer login nos servidores GPU remotos que gerencia. Esse é exatamente o combustível com o qual um ataque autopropagante funciona, sentado em um só lugar com o rótulo voltado para fora, e o manual para usá-lo já existe no mundo real.

o que tudo isso significa
O que mais me impressiona é que o bug que realmente tomou o servidor é antigo. Injeção de comando e falsificação de solicitação têm correções clássicas que um desenvolvedor em 2005 reconheceria, e elas estavam vivas dentro de um dos softwares de IA de consumo mais visionários por aí — que é o padrão em toda a indústria este ano, onde as vulnerabilidades de IA manchete acabam sendo falhas clássicas dentro de ferramentas novas e brilhantes.
A fronteira deixou esses fundamentos totalmente em vigor, depois empilhou uma camada poderosa, rápida e muitas vezes excessivamente confiável sobre eles e conectou essa camada a tudo que você possui.

a campainha que ainda não estava ligada
Há mais um detalhe que vale a pena aprender, porque é a parte que menos tem a ver com código.
Quando fui relatar isso pela primeira vez, havia uma política de segurança no repositório — uma política ponderada, com orientações de implantação sensatas.
Mas sua seção de relato direcionava possíveis denunciantes para "GitHub security advisories if available", e no início esse canal privado simplesmente não estava aberto.
A coisa mais sensível que um estranho podia encontrar sobre o projeto não tinha onde pousar em privado. Essa lacuna foi fechada desde então — a cadeia de injeção de comando agora é rastreada por um aviso crítico, e as correções foram mescladas — mas a ausência inicial é o sinal.
Felizmente, consegui conversar com um dos mantenedores, que abriu o recurso de avisos — e desde então submeti várias outras correções.

Mas, apesar de tudo isso... é um sinal dos tempos.
Projetos agora vão de um hobby em uma GPU doméstica para um público de cem milhões de pessoas no espaço de um único anúncio, e o andaime de segurança — uma caixa de entrada privada para más notícias, um fluxo de trabalho de avisos, o hábito de tratar a saída do modelo como hostil — fica atrás do código, que por sua vez fica atrás do público.
Essa ordem é exatamente o oposto do que um adversário precisa que seja.
Uma grande base de fãs confiante, amplamente não técnica, instalando o mesmo software na mesma semana, apontada para ele por alguém em quem já confiam, é o alvo mais atraente que existe — enorme, uniforme e pré-vencido.
É exatamente a monocultura que um worm quer, com o tapete de boas-vindas já estendido.
Então a metade encorajadora desta história não é que o código era perfeito — não era — mas que o projeto ligou a campainha e enviou as correções em cerca de um dia após ouvir a batida.
Para software se movendo tão rápido, diante de um público deste tamanho, esse reflexo — abrir um canal privado, responder rapidamente, corrigir abertamente — vale mais do que ter tido um histórico impecável para começar. É, no final, como a confiança na auto-hospedagem é realmente conquistada.
Por enquanto... é isso, pessoal!

https://x.com/Grummz/status/2061300454907371953
https://x.com/ashnichrist/status/2061481763516399737





