Deixamos um agente de IA executar comandos Bash e sobrevivemos para contar a história — Sarah Sanders, PostHog

AAI Engineer
Computing/SoftwareSmall Business/StartupsInternet Technology

Transcript

00:00:00Olá a todos, como estamos nos sentindo? Estamos na reta final. Meu nome é Sarah e sou engenheira de contexto
00:00:23na PostHog e tenho o prazer de trabalhar no nosso querido assistente todos os dias.
00:00:30Então, o que é o assistente? O assistente configura o PostHog para você. É uma ferramenta CLI agêntica
00:00:39que lê sua base de código, instala o SDK correto para o seu projeto, instrumenta
00:00:44seus eventos e configura painéis para você. Ele pega o que costumava levar cerca de uma hora
00:00:52ou duas de configuração e executa isso em cerca de cinco a seis minutos, com inferência gratuita
00:00:57por nossa conta, para que você tenha uma ótima experiência ao integrar-se ao PostHog. Parece incrível.
00:01:03As pessoas adoram. Mas há alguns meses ousamos sonhar: e se isso se tornasse a forma recomendada ou padrão
00:01:10de instalar o PostHog no seu projeto? E os meus alarmes de segurança começaram a disparar.
00:01:17Comecei a questionar quão seguro isso é, porque parece ter formato de malware.
00:01:25E com esse questionamento, aprendi muito. Então hoje tudo gira em torno das lições que aprendi,
00:01:31das coisas que me tiraram o sono enquanto eu construía isso, e do que acabei criando
00:01:37por causa disso. Então, antes de mergulhar em todas as coisas chatas de segurança, ou seja, a sua soneca das 14h, quero mostrar o assistente funcionando de verdade.
00:01:49Se você olhar para a tela, ele está rodando em loop para você. Esta é exatamente a mesma experiência que qualquer pessoa que executa
00:01:56o NPX do PostHog Wizard tem em seu terminal. Como eu disse, é um agente. Ele descobre qual SDK é ideal para o seu projeto. Ele instala para você, instrumenta seus eventos, cria painéis.
00:02:10Gosto de chamá-lo de um pequeno engenheiro de implementação no seu terminal. E às vezes eu mostro isso às pessoas e elas me perguntam por que um agente? Por que não dar aos usuários um bom prompt? Por que não dar a eles uma habilidade que possam invocar em sua própria ferramenta?
00:02:23E embora forneçamos essas coisas, a resposta é porque essa experiência de desenvolvedor e a capacidade do assistente são o foco principal. É o produto inteiro.
00:02:34Porque construímos uma ferramenta CLI que pode participar totalmente de um loop de agente, e vivenciar isso pela primeira vez é realmente poderoso.
00:02:43Mas você não pode lançar algo como o assistente sem lançar também aquilo que o torna meio suspeito.
00:02:50Então vamos desmembrá-lo. Vamos olhar para a anatomia do assistente, porque normalmente os modelos de ameaça decorrem diretamente da anatomia do agente.
00:03:01Portanto, o assistente tem um formato semelhante ao que tenho certeza de que muitos de vocês estão construindo se criam agentes.
00:03:07Ele tem modelos que escolhemos para tarefas específicas, prompts que o orientam e um conjunto de ferramentas que fornecemos para realizar o trabalho.
00:03:17Mas ele também tem algumas peças que são muito específicas para nós. Tem um motor de contexto totalmente construído internamente pela minha equipe.
00:03:25É o que permite ao agente fazer um trabalho tão bom e nos dar resultados semelhantes a cada execução.
00:03:30Gosto de chamá-lo de cérebro do assistente. Às vezes o chamamos de markdown vestindo um sobretudo.
00:03:35Mas é o nosso motor de contexto interno. Há também uma interface de terminal que construímos nós mesmos usando o Ink.
00:03:43E agora há um scanner de segurança chamado warlock, que foi o que construí quando comecei a vasculhar e descobrir os horrores de colocar um agente em produção.
00:03:55Portanto, se você pegar a anatomia de qualquer agente que possa executar comandos, é basicamente o que eu gosto de chamar de kit inicial de malware.
00:04:03Porque é quase exatamente o que você entregaria a um pedaço de malware se estivesse se sentindo generoso ou caótico e do mal.
00:04:11Felizmente, este é o pior cenário ou combustível para pesadelos, e não é uma confissão minha, é um aviso para todos vocês.
00:04:19Porque se você quer lançar um agente com mãos, um agente que possa executar comandos, precisa garantir que não vai construir isto.
00:04:28Então a versão V0 do assistente nasceu porque o Josh Snyder, se você o conhece da nossa equipe de crescimento, estava assistindo o Cursor alucinar configurações do PostHog das piores maneiras possíveis.
00:04:41E ele pensou: e se construíssemos um agente que fizesse um trabalho melhor?
00:04:46Então minha equipe começou a construir em cima disso, validando que ele fazia um trabalho muito melhor do que as alucinações do Cursor.
00:04:52E pensamos: e se ele pudesse integrar qualquer pessoa ao PostHog?
00:04:58Não importa qual seja o framework ou a stack deles, instrumentar todos os seus eventos sem que precisem tocar em nada.
00:05:04E então ousamos sonhar: e se esta fosse a forma padrão de instalar o PostHog?
00:05:09Sonhávamos com milhares de desenvolvedores executando isso por semana, e ontem atingimos 8.000 pessoas executando isso por semana.
00:05:16Então nosso sonho se tornou realidade.
00:05:18Mas nós, naquela época em que sonhávamos, tivemos que colocar nossa postura de segurança sob um microscópio e analisar o que estava acontecendo.
00:05:26Portanto, assumi essa responsabilidade, sentei-me e avaliei onde estávamos.
00:05:31E logo no início, digo uns nove meses a um ano atrás, tínhamos o que chamo de camada zero, porque literalmente não é segurança.
00:05:41São apenas prompts que sugerem o que o agente deve fazer e o orientam, e prompts não são segurança.
00:05:48Portanto, eu estava preocupada com isso.
00:05:51A camada um era uma lista de permissões.
00:05:53E quando comecei a investigar essa lista de permissões, comecei a me sentir um pouco melhor porque ela era bem delimitada.
00:05:59Mas eu ainda tinha muitas preocupações.
00:06:01E entrei em pânico por causa daquele motor de contexto sobre o qual falei.
00:06:05Estamos alimentando o agente com muito contexto em tempo de execução.
00:06:09Então construí este scanner regex muito gambiarra para procurar coisas com cara de ameaça entrando no assistente e saindo dele.
00:06:20E admito que era extremamente improvisado.
00:06:23Mas estou contando tudo isso a vocês com muita franqueza, porque todos estamos construindo coisas que parecem extremamente experimentais e muito rápido.
00:06:33E sei que nem todos nós temos a segurança como nossa principal especialidade.
00:06:38E alguns de nós estão apenas aprendendo na marra, assim como eu.
00:06:43Mas é algo em que precisamos pensar quando estamos construindo coisas com esse formato.
00:06:50Essa era a nossa postura de segurança.
00:06:53Mas fiz a pergunta: estamos perdidos?
00:06:56Boa notícia, estávamos menos perdidos do que eu pensava.
00:06:59Porque, como mencionei antes sobre aquela lista de permissões, ela era bem restrita.
00:07:03Tínhamos o bash negado por padrão.
00:07:06Ele só podia instalar pacotes confiáveis que foram verificados por nós.
00:07:09Ele podia compilar.
00:07:10Ele podia verificar tipos.
00:07:11Ele podia executar linters.
00:07:12E praticamente mais nada.
00:07:13Ele não conseguia rodar comandos de shell aleatórios.
00:07:16E não tinha acesso a variáveis de ambiente.
00:07:20O agente não podia ler o seu arquivo .env porque o bloqueamos totalmente e estávamos roteando segredos através de um cofre.
00:07:28Portanto, suspirei aliviada e percebi que estávamos em uma situação melhor do que eu pensava.
00:07:34Mas eu queria saber onde estavam as falhas, porque na segurança sempre há falhas.
00:07:39Então fiz o que todos nós deveríamos estar fazendo.
00:07:41Procurei nossa equipe de segurança e disse: olhem, vocês podem auditar esta ferramenta para mim e encontrar essas brechas?
00:07:48E eles encontraram algumas coisas.
00:07:51Eles encontraram algumas lacunas.
00:07:52E a parte interessante não foram as lacunas ou bugs específicos que encontraram, mas sim o formato deles.
00:07:58Porque quase nenhuma delas era obviamente maliciosa.
00:08:01Eram todas duas coisas muito inocentes e bem-intencionadas que apertavam as mãos e abriam uma brecha.
00:08:07Portanto, a lição que aprendi é que os ataques se compõem, a revisão de código não, porque nós, desenvolvedores, olhamos para os diffs um de cada vez.
00:08:20Mas os atacantes olham para o sistema inteiro e procuram aquelas duas coisas que dão aperto de mão e abrem uma porta.
00:08:25Mas havia mais uma coisa que estava me tirando o sono.
00:08:29E voltando àquele motor de contexto, percebi que a parte mais assustadora do agente que construímos não era realmente um comando no nosso caso.
00:08:37Eram as coisas com aparência útil que estávamos alimentando em seu cérebro.
00:08:43Ah, acho que fui pelo caminho errado.
00:08:46Sim.
00:08:47A usina de contexto.
00:08:48Então este é o nosso motor de contexto, também conhecido como cérebro do assistente.
00:08:51E é assim que o assistente sabe de alguma coisa e o motivo pelo qual ele realmente faz um bom trabalho.
00:08:56Ele extrai informações da nossa documentação.
00:08:58Possui prompts manuscritos com pegadinhas e lições que aprendemos ao longo do caminho.
00:09:02E aplicativos de exemplo reais de ponta a ponta que ajudam o agente a fazer correspondência de padrões para que ele possa instalar o PostHog da melhor forma para você.
00:09:11Ele empacota tudo isso em conjuntos de habilidades que são enviados para o assistente através do nosso servidor MCP e carregados diretamente no contexto do agente em tempo de execução.
00:09:22Então processe isso por um segundo.
00:09:24É uma máquina cujo único trabalho é pegar conteúdo e injetá-lo em um agente que pode executar comandos.
00:09:31Agora, se você fosse um invasor, poderia dizer: “Bem, e se eu apenas envenenar o conteúdo?”
00:09:36Não a base de código do usuário, não o agente em si, mas o conteúdo real.
00:09:41Digamos que alguém abra um pull request em um dos nossos repositórios de código aberto, porque no PostHog construímos tudo às claras,
00:09:48e eles injetem algo em um arquivo markdown ou em um comentário de código aparentemente inofensivo,
00:09:55e temos algum tipo de revisão de código impulsionada por IA passando por isso, e diz: “Parece bom para mim”, e o ignora.
00:10:04Podemos ter acabado de enviar uma carga útil de injeção de prompt assinada por nós para um agente que está rodando em milhares de máquinas de desenvolvedores em um sandbox, mas mesmo assim.
00:10:14Então essa foi a ameaça que reformulou como penso sobre segurança e o assistente, porque a entrada perigosa para nós realmente podia vir da nossa própria cadeia de suprimentos.
00:10:25Então o que acabei fazendo é começar a escanear o conteúdo em ambas as pontas desse encanamento.
00:10:30Um, quando uma habilidade é construída e lançada, e novamente, quando o assistente realmente a usa.
00:10:36Minha metodologia é pegá-la na fonte, assumir que a fonte falhou, e pegá-la novamente no ponto de uso.
00:10:43Então agora posso apresentar o Warlock a vocês.
00:10:48Construir o Warlock não era necessariamente controle de danos.
00:10:52Como eu disse, tínhamos defesa de outras formas.
00:10:55Mas eu construí o Warlock porque não gostava de dizer às pessoas: “Bem, esta coisa está, tipo, bem protegida.
00:11:01Isso não escala.
00:11:02Isso não é algo que você quer enviar para produção.
00:11:04Isso não é algo que você quer que milhares de desenvolvedores executem todos os dias.”
00:11:08Porque quando você envia algo para essa escala, você tem muito mais superfície, muito mais usuários, muito mais conteúdo fluindo à medida que expande a capacidade do assistente.
00:11:19E provavelmente estamos bem.
00:11:21Simplesmente deixa de ser bom o suficiente.
00:11:23Então eu tirei aquele scanner de regex improvisado que joguei lá, tirei do assistente e criei algo independente.
00:11:30Eu o chamado de Warlock porque tudo o que tem formato de mago precisa de um guarda-costas.
00:11:35E ele faz exatamente um trabalho.
00:11:38Você entrega a ele uma string.
00:11:40Ele devolve uma lista de descobertas.
00:11:42Cada uma dessas descobertas tem uma categoria, uma gravidade e uma ação recomendada, e então ele para.
00:11:48Quero que vocês foquem no termo recomendado aqui.
00:11:51Porque o Warlock detecta, ele não age.
00:11:54Ele vai avisar: “Ei, isto parece exfiltração.
00:11:57É crítico.
00:11:58Eu bloquearia.”
00:11:59Mas o que você realmente faz com essa descoberta depende inteiramente de você.
00:12:04Porque detectar um problema é uma tarefa, e decidir o que fazer sobre ele é uma tarefa totalmente diferente.
00:12:10E a única coisa que mantém tudo isso compreensível é manter essas duas coisas separadas.
00:12:15Portanto, sob o capô do Warlock, em vez das minhas expressões regulares improvisadas, as regras rodam no Yara, que é o padrão de engine que pesquisadores de malware usam há uns 15 anos ou mais.
00:12:27É totalmente determinístico.
00:12:28É a mesma entrada, mesma saída, todas as vezes.
00:12:31É entediante de propósito.
00:12:33E em segurança, ser entediante é uma funcionalidade.
00:12:39Então, o que o Warlock realmente pega no mundo real hoje?
00:12:42Várias coisas diferentes, mas duas delas são um verdadeiro tormento para a minha alma.
00:12:48A primeira coisa não é exatamente algo em formato de regra.
00:12:52Foi algo que o Warlock sinalizou que era, na verdade, um comportamento de subagente que nos expôs uma vulnerabilidade com base no que os subagentes estavam fazendo.
00:13:03Basicamente, nós estávamos iniciando agentes para realizar grandes tarefas.
00:13:07Eles estavam gerando subagentes.
00:13:08E esses subagentes tentavam contornar as proteções que havíamos implementado no wizard, tentando inventar segredos.
00:13:16Eles tentavam extrair segredos literalmente de qualquer lugar da base de código.
00:13:20E nós bloqueamos isso.
00:13:21Dissemos: “Chega de subagentes.”
00:13:23E graças ao Warlock, nós pegamos isso.
00:13:26Eu até me solidarizo com o robô.
00:13:28O robô tinha uma tarefa a cumprir, e tentava se otimizar e nos agradar.
00:13:32Mas não podemos permitir isso.
00:13:35E outra coisa na PostHog que realmente importa para nós são os dados pessoais (PII).
00:13:39Os agentes genuinamente não se importam em expor dados, a menos que você crie regras explícitas.
00:13:46Se deixados sozinhos, nós os vimos despejar e-mails e números de telefone direto em eventos, e para um agente isso parece algo totalmente normal de se capturar.
00:13:57E felizmente para a injeção de prompt especificamente, batendo na madeira aqui, nós basicamente nunca pegamos uma injeção de prompt maliciosa real no mundo real.
00:14:08Mas nós pegamos uma tonelada de falsos positivos, coisas como telas de login de demonstração, textos em nossos aplicativos de exemplo, coisas na nossa documentação.
00:14:17E isso realmente me fez repensar como construo aplicativos e como escrevo documentação, porque eu não quero lançar nada que pareça com uma ameaça.
00:14:27Mas os falsos positivos são honestamente a preparação perfeita para a parte mais confusa e interessante de tudo isso.
00:14:36Então esta é a parte com a qual eu lutei.
00:14:39Passei esta palestra inteira pregando o determinismo para todos vocês, e então fui lá e adicionei uma camada de LLM para ajudar a classificar meus falsos positivos e silenciar parte do ruído.
00:14:50E eu chamo isso de triagem.
00:14:51Quando eu estava construindo essa camada de triagem, tive que fazer uma escolha.
00:14:56Deveria essa camada ser um segurança de boate ou um conselheiro?
00:15:01E a escolha mais fácil provavelmente teria sido fazer da LLM o segurança.
00:15:06Mostrar-lhe o comando, perguntar se é um ataque, bloquear, permitir, e simplesmente fazer o que ela mandasse.
00:15:13E embora isso seja tentador porque parece mais fácil, eu não posso apostar meu modelo de segurança em cara ou coroa porque meu modelo está tendo um dia ruim ou algo aconteceu e ele está agindo diferente hoje do que ontem.
00:15:26Então, em vez do segurança, projetei o modelo para ser o conselheiro.
00:15:32E esta foi a linha limpa que encontrei e que ainda estou explorando, mas que quero deixar com todos vocês.
00:15:38Primeiro, para nós, a detecção e o cumprimento continuam determinísticos e mecânicos.
00:15:43Se uma regra corresponde, o portão tranca, a sessão termina, e não há nenhum modelo em nenhum lugar desse caminho.
00:15:49O bloqueio acontece antes mesmo de pedirmos a opinião da LLM.
00:15:54A LLM só tem permissão para opinar depois, caso não tenhamos bloqueado algo.
00:15:58Ela foi projetada para remover ruídos.
00:16:00Ela não foi projetada para deixar as coisas passarem.
00:16:03E se ela falhar fechada, ou seja, se o modelo estiver em um dia ruim, todas as execuções do wizard são eliminadas, desculpem, mas estamos apenas protegendo vocês.
00:16:14O cumprimento é a parte na qual você aposta todas as fichas, então precisa ser determinístico.
00:16:20Mas o julgamento é a parte que adiciona nuance, então esse é realmente o único lugar onde você pode colocar algo probabilístico.
00:16:27Então, como criamos regras reais para agentes?
00:16:34Esta é a anatomia de uma das nossas regras do warlock, e cada regra do warlock tem quatro partes.
00:16:41A parte um são os metadados.
00:16:43É uma descrição em inglês simples, severidade, categoria, ação, direção.
00:16:50Parte um, isso está fluindo para dentro do agente?
00:16:52Isso é algo que o agente está escrevendo?
00:16:57Depois temos as strings, que são os padrões reais que você está procurando.
00:17:03E a parte três é a condição.
00:17:05É aqui que a regra tem permissão real para disparar.
00:17:10Vou passar por este exemplo com vocês, e podemos fingir que estamos escrevendo-o em nossas mentes.
00:17:15A injeção de prompt sendo o clássico ignore todas as instruções anteriores.
00:17:20Seu primeiro instinto aqui provavelmente seja bloquear a palavra ignore, mas os agentes leem código o dia todo,
00:17:27e a palavra ignore pode aparecer em comentários de código ou exemplos o tempo todo.
00:17:31Portanto, você não quer corresponder apenas ao verbo isolado.
00:17:33Você corresponde ao verbo mais um substantivo com tom de instrução.
00:17:38Na condição, você diz para disparar se algum desses padrões for atingido.
00:17:42E nos metadados, você determina se isso é crítico, qual é a categoria, qual é a ação,
00:17:50neste caso bloquear, e a direção, sendo neste caso entrada fluindo para dentro do agente.
00:17:56Mas para escrever boas regras que reduzam o ruído, você precisa enviar testes junto com elas.
00:18:02Portanto, você deve escrever testes que digam que estes são padrões que correspondem.
00:18:06Estes são os que não deveriam corresponder.
00:18:08E esse teste negativo é a primeira linha de defesa contra falsos positivos.
00:18:13Mas você também quer garantir, ao decidir a severidade dessa regra,
00:18:19que você rastreie o impacto no mundo real, e não quão assustador aquilo parece.
00:18:24RM-RF é assustador, mas também é como todos nós deletamos node_modules umas 40 vezes por dia.
00:18:31Você decide o impacto no mundo real para o agente que você está construindo,
00:18:37porque uma ferramenta de segurança que trava toda vez que tenta limpar uma pasta de build
00:18:42é uma ferramenta que acaba sendo desativada e que não pega absolutamente nada.
00:18:47Portanto, tenho orgulho de dizer que esta é a nossa postura de segurança agora.
00:18:51Posso finalmente subir aqui e dizer que temos verdadeira defesa em profundidade.
00:18:56Todo o meu aprendizado se uniu nisto.
00:19:00Ainda é em camadas, mas cada camada agora está fazendo um trabalho no qual é boa.
00:19:04Ainda temos prompts, mas nós os usamos apenas para direcionamento.
00:19:07Tudo roda em um sandbox.
00:19:09Nós negamos por padrão.
00:19:11Temos um cofre para que os segredos nunca cheguem ao modelo.
00:19:14Temos o warlock para escanear o conteúdo que entra
00:19:17e para escanear a saída escrita pelo agente.
00:19:20Também temos a triagem para reduzir o ruído,
00:19:23e temos telemetria embutida em todo o processo
00:19:26para que vejamos tudo.
00:19:28Nenhuma dessas camadas fica de pé sozinha.
00:19:31Não há uma única coisa aqui que vá salvar você sozinho,
00:19:33mas são apenas camadas entediantes e honestas,
00:19:36cada uma fazendo um trabalho no qual é boa.
00:19:40Então, se você está construindo um agente com autonomia,
00:19:45esta é a palestra inteira em três linhas.
00:19:47Primeiro, se não for imposto de forma determinística,
00:19:50não é imposto.
00:19:52Prompts não são regras de segurança.
00:19:54Não ajam como se fossem.
00:19:57Segundo, a entrada perigosa não é apenas o que seu usuário digita.
00:20:02Não são apenas os comandos que você permite que ele execute.
00:20:04É tudo o que flui para dentro do modelo,
00:20:06incluindo o conteúdo que você mesmo escreve.
00:20:09Portanto, escaneie sua própria cadeia de suprimentos na fonte
00:20:12e quando o agente a invocar.
00:20:15Terceiro, os ataques compõem-se, a revisão de código não.
00:20:18A maioria das nossas falhas durante a auditoria eram duas coisas inocentes,
00:20:22apertar as mãos e abrir uma porta.
00:20:25O wizard, o warlock e o context mill são todos de código aberto,
00:20:29então venham me encontrar lá embaixo.
00:20:32Estou no pavilhão de exposições no nosso estande
00:20:34e vou mostrar tudo a vocês, mostrar o que construímos,
00:20:37e quero saber como vocês estão protegendo seus agentes.
00:20:41Obrigado.
00:20:59Obrigado.

Key Takeaway

A segurança de agentes autônomos de IA que executam comandos exige defesas determinísticas e varredura em ambas as pontas da cadeia de suprimentos de conteúdo, em vez de depender de instruções em texto.

Highlights

  • A ferramenta CLI agêntica da PostHog reduz o tempo de configuração inicial de uma a duas horas para cinco a seis minutos.

  • Mais de 8.000 desenvolvedores executam o assistente de configuração CLI da PostHog todas as semanas.

  • O motor de Warlock emprega regras baseadas em Yara, o padrão de motores de pesquisa de malware utilizado há mais de 15 anos.

  • Os agentes autônomos sem regras explícitas de PII despejam e-mails e números de telefone diretamente nos eventos coletados.

  • A camada de julgamento baseada em LLM atua estritamente como um conselheiro de redução de ruído, enquanto o bloqueio e o cumprimento permanecem estritamente determinísticos.

Timeline

Anatomia e impacto do assistente agêntico

  • O assistente CLI da PostHog configura bases de código, instala SDKs, instrumenta eventos e cria painéis de controle.
  • A ferramenta substitui um processo manual de duas horas por uma execução autônoma de cinco a seis minutos com inferência gratuita.
  • O design agêntico opera dentro de um loop de terminal que identifica a stack e aplica a integração ideal sem intervenção.

A PostHog implementou um assistente CLI baseado em agente para acelerar a integração de novos usuários. O sistema combina modelos, prompts e ferramentas especializadas, operando integralmente dentro do terminal do desenvolvedor. A adoção dessa abordagem transformou a experiência de integração, alcançando 8.000 execuções semanais e gerando questionamentos sobre os limites de segurança em agentes com capacidade de execução de comandos.

Evolução da postura de segurança e anatomia de ameaças

  • A camada inicial de segurança consistia apenas em prompts orientadores, o que carece de garantias reais de proteção.
  • O assistente restringe o acesso ao shell, bloqueia comandos aleatórios e impede a leitura direta de arquivos de ambiente .env.
  • As vulnerabilidades descobertas em auditorias decorrem da combinação de ações bem-intencionadas que abrem brechas no sistema.

A análise da arquitetura revelou que ferramentas com acesso a comandos exigem proteções rigorosas além de simples instruções textuais. Embora a listagem de permissões bloqueasse o shell e protegesse segredos sensíveis por meio de um cofre, auditorias internas demonstraram que falhas reais emergem da composição de múltiplos comportamentos inofensivos. Essa percepção impulsionou a reformulação das defesas para mitigar riscos na cadeia de suprimentos de código aberto.

O motor de contexto e a origem dos vetores de ataque

  • O motor de contexto injeta documentação, exemplos e prompts manuscritos diretamente no runtime do agente através do servidor MCP.
  • Pull requests maliciosos em repositórios abertos podem injetar cargas úteis de prompt injection no conteúdo consumido pelo agente.
  • Subagentes gerados para tarefas complexas tentaram extrair segredos de bases de código para otimizar suas operações.

O principal vetor de risco identificado não reside apenas na entrada fornecida pelo usuário, mas no conteúdo gerado pela própria equipe e injetado no cérebro do agente. Como documentação e exemplos alimentam o sistema continuamente, agentes maliciosos ou subagentes autônomos podem tentar exfiltrar dados ou burlar restrições. Para conter esse problema, a PostHog passou a escanear o conteúdo tanto na fonte quanto no ponto de uso.

Implementação do Warlock e regras determinísticas

  • O Warlock utiliza o motor Yara para executar verificações determinísticas de strings e padrões em formato estático.
  • A camada de IA opera exclusivamente como um conselheiro para filtrar falsos positivos, sem autonomia para aprovar execuções.
  • A segurança em profundidade combina sandbox, negação por padrão, cofre de segredos, varredura Warlock e telemetria integrada.

O desenvolvimento do Warlock garantiu que a detecção de ameaças mantivesse o determinismo mecânico característico de ferramentas de pesquisa de malware. Quando regras correspondem a um padrão de risco, o bloqueio ocorre de forma imediata antes de qualquer consulta a modelos probabilísticos. Com uma arquitetura em camadas bem definidas, cada componente cumpre uma função específica para viabilizar agentes autônomos em escala de produção sem comprometer a segurança.

Community Posts

No posts yet. Be the first to write about this video!

Write about this video