Phase 15 - Lesson 11
Agentes de Navegador e Tarefas Web de Longo Horizonte
O ChatGPT agent (julho de 2025) mesclou o Operator e a pesquisa profunda (deep research) em um único agente de navegador/terminal e estabeleceu o estado da arte (SOTA) do BrowseComp em 68,9%. A OpenAI encerrou o Operator em 31 de agosto de 2025 — consolidação na camada de produto. A aquisição da Vercept pela Anthropic levou o Claude Sonnet no OSWorld de menos de 15% para 72,5%. O WebArena-Verified (ServiceNow, ICLR 2026) corrigiu 11,3 pontos percentuais da taxa de falsos negativos no WebArena original e lançou o subconjunto Hard com 258 tarefas. Os números são reais. O mesmo vale para a superfície de ataque: o chefe de preparação da OpenAI declarou publicamente que a injeção indireta de prompt em agentes de navegador "não é um bug que possa ser totalmente corrigido". Ataques documentados de 2025–2026: Tainted Memories (Atlas CSRF), HashJack (Cato Networks) e sequestros de um clique (one-click hijacks) no Perplexity Comet.
Tipo: Aprender Idiomas: Python (stdlib, modelo de superfície de ataque de injeção indireta de prompt) Pré-requisitos: Fase 15 · 10 (Modos de permissão), Fase 15 · 01 (Agentes de longo horizonte) Tempo: ~45 minutos
O Problema
Um agente de navegador é um agente de longo horizonte que lê conteúdo não confiável e toma ações consequenciais. Cada página que o agente visita é uma entrada que o usuário não escreveu. Cada formulário em cada página é um canal de comando em potencial. O corpus de ataque de 2025–2026 mostra que isso não é hipotético: o Tainted Memories permite que um invasor vincule instruções maliciosas à memória do agente por meio de uma página criada para esse fim; o HashJack oculta comandos em fragmentos de URL que o agente visita; os sequestros do Perplexity Comet ocorrem com um único clique.
O cenário defensivo é desconfortável. O chefe de preparação da OpenAI disse o que muitos pensavam: a injeção indireta de prompt "não é um bug que possa ser totalmente corrigido". Isso ocorre porque o ataque reside na fronteira entre leitura e ação do agente, que é arquitetonicamente difusa — cada token que o modelo lê poderia, em princípio, ser lido como uma instrução.
Esta lição define a superfície de ataque, descreve o cenário dos benchmarks (BrowseComp, OSWorld, WebArena-Verified) e modela um cenário minimalista de injeção indireta de prompt para que você possa raciocinar sobre defesas reais nas Lições 14 e 18.
O Conceito
O cenário de 2026, em um parágrafo por sistema
ChatGPT agent (OpenAI). Lançado em julho de 2025. Unifica o Operator (navegação) e o Deep Research (pesquisa profunda de várias horas). Encerrou o Operator autônomo em 31 de agosto de 2025. SOTA no BrowseComp com 68,9%; números robustos no OSWorld e no WebArena-Verified.
Claude Sonnet + Vercept (Anthropic). A aquisição da Vercept pela Anthropic focou em capacidades de uso do computador. Elevou o Claude Sonnet no OSWorld de <15% para 72,5%. O Claude Computer Use é distribuído como uma API de ferramenta.
Gemini 3 Pro com Browser Use (DeepMind). A integração com o Browser Use traz controles de uso do computador; o FSF v3 (abril de 2026, Lição 20) acompanha a autonomia especificamente no domínio de P&D de ML.
WebArena-Verified (ServiceNow, ICLR 2026). Corrige um problema bem documentado: o WebArena original tinha uma taxa de falsos negativos de ~11,3% (tarefas marcadas como falhas que na verdade foram resolvidas). O lançamento do Verified reavalia as tarefas com critérios de sucesso selecionados por humanos e adiciona um subconjunto Hard com 258 tarefas (artigo do ICLR 2026, openreview.net/forum?id=94tlGxmqkN).
BrowseComp vs OSWorld vs WebArena
| Benchmark | O que ele mede | Horizonte |
|---|---|---|
| BrowseComp | Encontrar fatos específicos na web aberta sob pressão de tempo | minutos |
| OSWorld | Agente operando um desktop completo (mouse, teclado, shell) | dezenas de minutos |
| WebArena-Verified | Tarefas web transacionais em sites simulados | minutos |
| Hard subset | Tarefas do WebArena-Verified com transições de estado de várias páginas | dezenas de minutos |
Diferentes eixos. Uma pontuação alta no BrowseComp indica que o agente encontra fatos; não significa que o agente possa reservar um voo. A pontuação do OSWorld é mais próxima de "funciona no meu desktop". O WebArena-Verified é mais próximo de "ele consegue concluir um fluxo". Qualquer decisão de produção precisa do benchmark que corresponda à distribuição das tarefas.
A superfície de ataque, detalhada
- Injeção indireta de prompt. O conteúdo de uma página não confiável contém instruções. O agente as lê. O agente as executa. Exemplos públicos: 2024 Kai Greshake et al., artigo de 2025 do Tainted Memories, 2026 HashJack (Cato Networks).
- Injeção de fragmento de URL / consulta. O
#fragmentou string de consulta de uma URL rastreada contém comandos. Nunca renderizados visivelmente; ainda assim, permanecem dentro do contexto do agente. - Ataques de vinculação de memória. A página instrui o agente a gravar uma memória persistente (a Lição 12 cobre estado durável). Na próxima sessão, a memória aciona a carga útil (payload) sem nenhum gatilho visível.
- Ataques do tipo CSRF em sessões autenticadas. Classe Tainted Memories: o agente está conectado em algum lugar; a página do invasor emite solicitações de alteração de estado que o agente executa com os cookies do usuário.
- Sequestro de um clique. Um botão visualmente inofensivo carrega uma carga útil que o agente executa. Classe Comet.
- Brechas de Content-Security-Policy na superfície de hospedagem do agente. As camadas de renderização e de ferramentas podem, por si só, ser vetores de ataque; a pilha de navegador em um agente de navegador é ampla.
Por que "não é totalmente corrigível"
O ataque é isomórfico à capacidade do agente. O agente precisa ler conteúdo não confiável para realizar seu trabalho. Qualquer conteúdo que o agente leia pode conter instruções. Quaisquer instruções que o agente siga podem estar desalinhadas com a solicitação real do usuário. As defesas (limites de confiança, classificadores, listas de permissões de ferramentas, HITL em ações consequenciais) aumentam o custo do ataque e reduzem seu raio de impacto. Elas não eliminam a classe de ataque.
Este é o mesmo padrão de raciocínio do teorema de Löb (Lição 8): o agente não pode provar que o próximo token é seguro; ele só pode configurar um sistema onde os tokens inseguros sejam mais detectáveis.
Postura de defesa real implementada
- Fronteira de leitura / gravação. A leitura nunca é consequencial. A gravação (enviar um formulário, postar conteúdo, chamar uma ferramenta com efeitos colaterais) requer nova aprovação humana se o conteúdo de origem veio de fora do limite de confiança.
- Lista de permissões de ferramentas por tarefa. O agente pode navegar; ele não pode iniciar uma transferência eletrônica a menos que essa ferramenta tenha sido habilitada explicitamente para a tarefa. A Lição 13 cobre orçamentos.
- Isolamento de sessão. As sessões do agente de navegador são executadas apenas com credenciais limitadas. Sem autenticação de produção, sem e-mail pessoal. Registros de cada solicitação HTTP são mantidos para fins de auditoria.
- Higienizador de conteúdo. O HTML obtido é limpo de padrões sabidamente maliciosos antes de ser concatenado ao contexto do modelo. (Reduz os ataques fáceis; não impede cargas úteis sofisticadas.)
- HITL em ações consequenciais. Padrão propor-depois-confirmar (Lição 15).
- Canários de segurança na memória. Se uma entrada de memória for acionada, o usuário verá (Lição 14).
Use
code/main.py modela uma execução simples de um agente de navegador contra três páginas sintéticas. Uma página é benigna, uma tem um bloco de injeção direta de prompt em texto visível e uma tem uma injeção de fragmento de URL (não visível, mas dentro do contexto do agente). O script mostra (a) o que um agente ingênuo faria, (b) o que uma fronteira de leitura/gravação detecta, (c) o que um higienizador detecta e (d) o que nenhum dos dois detecta.
Publique
outputs/skill-browser-agent-trust-boundary.md define o escopo de uma implantação proposta de agente de navegador: quais zonas de confiança ela toca, o que ela está autorizada a gravar e quais defesas devem estar implementadas antes da primeira execução.
Exercícios
Execute
code/main.py. Identifique qual ataque o higienizador detecta, mas a fronteira de leitura/gravação não, e qual ataque apenas a fronteira de leitura/gravação detecta.Estenda o higienizador para detectar uma classe de injeção de fragmento de URL ao estilo HashJack. Meça a taxa de falsos positivos em URLs benignas com fragmentos legítimos.
Escolha um fluxo de trabalho real de agente de navegador que você conheça (por exemplo, "reservar um voo"). Liste cada leitura e gravação. Marque quais gravações precisam de HITL e o porquê.
Leia o artigo do WebArena-Verified do ICLR 2026. Identifique uma categoria de tarefa em que a pontuação do WebArena original não era confiável e explique como o subconjunto Verified resolve isso.
Projete um canário de memória para um cenário de agente de navegador. O que você armazenaria, onde e o que aciona o alarme?
Termos-Chave
| Termo | O que as pessoas dizem | O que realmente significa |
|---|---|---|
| Injeção indireta de prompt | "Texto ruim de página" | Conteúdo não confiável em uma página que o agente lê contém instruções que o agente executa |
| Tainted Memories | "Ataque de memória" | O agente grava uma instrução fornecida pelo invasor na memória durável; acionada na próxima sessão |
| HashJack | "Ataque de fragmento de URL" | Carga útil oculta no fragmento de URL / string de consulta está no contexto do agente, mas não é renderizada visivelmente |
| Sequestro de um clique | "Botão ruim" | Elemento de interface visível carrega uma carga útil subsequente que o agente executa |
| BrowseComp | "Benchmark de busca web" | Encontrar fatos específicos na web aberta; horizonte na escala de minutos |
| OSWorld | "Benchmark de desktop" | Controle total do sistema operacional; tarefas de GUI de várias etapas |
| WebArena-Verified | "Benchmark de tarefa web corrigido" | O WebArena reavaliado pela ServiceNow com o subconjunto Hard |
| Fronteira de leitura/gravação | "Portão de efeito colateral" | A leitura nunca tem consequências; a gravação requer nova aprovação se o conteúdo for de fora do limite de confiança |
Leituras Adicionais
- OpenAI — Introducing ChatGPT agent — fusão do Operator e deep research; BrowseComp SOTA.
- OpenAI — Computer-Using Agent — a linhagem do Operator e a arquitetura que se tornou o ChatGPT agent.
- Zhou et al. — WebArena — o benchmark original.
- WebArena-Verified (OpenReview) — artigo do subconjunto corrigido do ICLR 2026.
- Anthropic — Measuring agent autonomy in practice — inclui discussão sobre superfície de ataque para agentes de uso do computador.