Ao longo do último ano, @pewdiepie tem se tornado um dos maiores defensores da computação privada e auto-hospedada, e tem sido um verdadeiro prazer acompanhar.
O que começou no final de 2025 como um experimento divertido — uma máquina caseira cheia de GPUs modificadas rodando modelos de código aberto, chatbots votando em um "conselho" e poder de processamento doado para pesquisas de enovelamento de proteínas — amadureceu ao longo de aproximadamente doze meses em algo com uma missão clara.
Em 31 de maio de 2026, surgiu como Odysseus, um espaço de trabalho de IA gratuito, de código aberto e auto-hospedado, que ele enquadrou diretamente como um ataque ao modelo de assinatura: prioridade local, prioridade à privacidade, sem telemetria, seus dados permanecendo no seu próprio hardware em vez de fluírem para um punhado de grandes empresas.
Para alguém com seu alcance colocar a inferência local diante de um público mainstream e não técnico é o tipo de coisa que o mundo da privacidade deseja há anos, e estou torcendo por isso.
Também sou a pessoa que, testando minha própria implementação autorizada, descobriu uma maneira de assumir o controle de um desses servidores com um único clique. As duas coisas não estão em conflito. Um software tão ambicioso, lançado tão rápido, em uma categoria tão nova, é exatamente onde bugs de segurança interessantes vivem, e encontrá-los cedo é como o projeto se torna confiável mais tarde.
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 que estamos construindo.
uma porta sem fechadura, e uma porta que só parecia inofensiva
O Odysseus pode passar tarefas pesadas 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 podem, portanto, tocar um shell de comandos — a linha de comando bruta onde, se você conseguir acessá-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 pequeno e discreto cujo trabalho é 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 quem o chamou, então ele não realiza nenhuma verificação de administrador e não pode, nem em princípio.
A única coisa à sua frente é a regra genérica do aplicativo de que você esteja logado, o que significa que qualquer conta — incluindo uma que um estranho registrou um minuto atrás — pode alcançar uma porta que toca o shell, que cada endpoint irmão protege cuidadosamente.

A causa raiz estrutural: um handler que não pode ver quem está chamando não pode impor quem está autorizado, 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 entrega essa linha a uma parte do sistema chamada shell, cujo trabalho é ler a linha e executá-la.
A maneira mais fácil de visualizar o shell é como um assistente que segue instruções escritas de forma completamente literal, onde alguns sinais de pontuação carregam um 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 para executar como 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 sem aspas, com 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, pela mesma razão.)
A falha na suposição é que a porta não precisa ser um número. Ela chega como texto simples puxado diretamente do endereço web, e quem está fazendo a requisição decide o que ela diz.
Então, no lugar de 22, um invasor escreve 22; id; hostname #.
O shell lê a primeira parte, tenta conectar e falha inofensivamente, então chega ao primeiro ponto e vírgula e obedientemente executa os dois comandos do invasor, enquanto o # no final diz a ele para ignorar o texto restante que deveria vir a seguir.

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

A requisição retorna HTTP 200 com o JSON normal dos pacotes — enquanto os comandos injetados são executados no lado do servidor.
Os comandos que coloquei eram 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.

Juntando as duas falhas, o quadro local cabe em uma frase — qualquer usuário logado pode executar comandos de sua escolha no servidor.
O risco de escala é aguçado pela própria coisa que torna o Odysseus empolgante.
Se um criador com cem milhões de inscritos consegue integrar um grande público não técnico na auto-hospedagem, o resultado são milhares de instâncias similares, configuradas de forma similar, expostas de forma similar, o que é uma monocultura, e monoculturas são o que os worms amam.
@ashnichrist colocou bem.
transformando isso 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é esse requisito, porque faz o próprio navegador da vítima executar o ataque.
A técnica é a falsificação de requisição entre sites, e ela se aproveita de um hábito silencioso do navegador.
Assim que você faz login em um site, seu navegador armazena um pequeno token e o anexa automaticamente a requisições destinadas àquele site, baseado puramente no destino da requisição, sem considerar qual página a iniciou.

O Odysseus configurou esse token com a política SameSite=Lax, que é o padrão razoável e bloqueia o token de acompanhar requisições sorrateiras em segundo plano — mas ainda o envia em uma navegação de nível superior, ou seja, um clique comum que move sua aba inteira para algum lugar.
Como o endpoint vulnerável responde a um link simples, não realiza nenhuma verificação de onde a requisição se originou e não usa nenhum token antifalsificação, um invasor 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 ao universo — cores de música infantil, 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, então a requisição maliciosa ocorre como uma navegação de nível superior — carregando o cookie de sessão SameSite=Lax — sem roubar o foco, e se fecha automaticamente um momento depois. O endereço que 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 se digita narrando cada passo da tomada de controle. (O texto do terminal é uma narração encenada para a demonstração; a execução real é a requisição silenciosa que o popup acabou de fazer.)

Para tornar o impacto concreto, aquele ú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 CoMeloNado 🍉", ícones de melancia, o aplicativo renomeado), leu tudo o 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 golpe: uma reinicialização limpa a bagunça óbvia e mantém a conta do invasor.
Aqui está uma demonstração 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 uma única instância deve preocupar você em 2026 é que raramente uma instância é onde essas coisas param, e o worm que definiu o ano mostra por quê.
Shai-Hulud, o worm npm auto-propagante 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, varre a máquina em busca de segredos como tokens npm e GitHub, chaves SSH e credenciais de nuvem, e então usa essas credenciais roubadas para publicar versões com backdoor de outros pacotes da vítima, de modo que cada nova instalação se torna o próximo ponto de lançamento sem esforço adicional do invasor.
A lição que vale a pena levar é 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
esses de graça, porque segurar segredos poderosos e alcançar outras máquinas é todo o seu propósito.
O único clique contra o Odysseus rendeu muito mais do que execução de código. Ele 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 que um ataque auto-propagante usa, 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 comandos e falsificação de requisição têm correções clássicas que um desenvolvedor em 2005 reconheceria, e eles estavam vivendo 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 principais vulnerabilidades de IA acabam sendo falhas clássicas dentro de ferramentas novas e brilhantes.
A fronteira deixou esses fundamentos totalmente em vigor, então 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 tem menos 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 cuidadosa, com orientações de implantação sensatas.
Mas sua seção de relato direcionava potenciais denunciantes para "advisory de segurança do GitHub se disponível", 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 lugar privado para pousar. Essa lacuna foi fechada desde então — a cadeia de injeção de comandos agora é rastreada por um advisory 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 advisories — e desde então submeti várias outras correções.

Mas tirando isso... é um sinal dos tempos.
Projetos agora vão de um hobby em uma GPU caseira a um público de cem milhões de pessoas no espaço de um único anúncio, e o arcabouço de segurança — uma caixa de entrada privada para más notícias, um fluxo de trabalho de advisory, 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 é precisamente o oposto do que um adversário precisa que seja.
Uma grande base de fãs confiante, em grande parte não técnica, instalando o mesmo software na mesma semana, apontada por alguém em quem já confiam, é o alvo mais atraente que existe — enorme, uniforme e pré-convencido.
É exatamente a monocultura que um worm deseja, 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 cerca de um dia depois de ouvir a batida.
Para um software que se move tão rápido, diante de um público desse 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





