Proteger agentes nos pontos finais de clientes da Perplexity com o Numbat
O Numbat é a suite de segurança de agentes de código aberto da Perplexity para pontos finais de clientes. Deteta, previne e investiga comportamento de agentes de IA de risco no macOS, Linux e Windows.
Os agentes de IA devem ser seguros para serem úteis. À medida que as capacidades dos modelos e sistemas avançam, o mesmo acontece com a vigilância necessária para proteger os utilizadores.
A investigação inicial sobre a segurança de agentes concentrou-se em injeções de comandos e outras formas de entradas adversariais. No entanto, os avanços recentes na autonomia dos agentes dão origem a incidentes de segurança que não precisam de assumir a existência de entradas adversariais — ou de adversários humanos sequer.
Em vez disso, os agentes orientados para perseguir objetivos de alto nível, sem orientações prescritivas sobre como alcançar esses objetivos, podem tornar-se o adversário. Isto ocorre quando um agente, em resposta a um objetivo especificado pelo utilizador, seleciona um curso de ação que o utilizador não pretendia e não teria aprovado. Embora tais incidentes tenham sido teorizados há apenas alguns meses, tornaram-se rapidamente em motivos de preocupação prática.
Como estes comportamentos não podem ser totalmente corrigidos na camada do modelo, uma defesa robusta deve, portanto, habitar o sistema circundante, incluindo o arnês do agente que serve de interface do modelo com o mundo exterior. Estamos a disponibilizar em código aberto o Numbat, a nossa suite de segurança de agentes que ajuda os defensores a prevenir, detetar e mitigar incidentes relacionados com agentes. O Numbat identifica e integra-se diretamente com os arneses de agentes habitualmente encontrados em pontos finais de clientes empresariais, aplicando regras de segurança e permitindo uma deteção e resposta rápidas.
Introdução
A adoção de agentes coloca novos desafios de segurança tanto para programadores, adotantes como defensores. Isto é especialmente verdade quando as empresas implementam agentes diretamente em pontos finais de clientes com acesso privilegiado a sistemas e dados empresariais.
As implementações de agentes em pontos finais de clientes, tais como agentes de programação baseados em CLI ou aplicações de ambiente de trabalho, vêm com níveis variados de sandboxing e isolamento. Os utilizadores tiram partido destes agentes para inúmeros casos de uso, cada um com o seu próprio espaço de ação inerente que pode afetar o próprio ponto final ou outros sistemas acessíveis a partir do ponto final. Cada vez mais, espera-se que os agentes operem autonomamente durante horas ou mesmo dias. Para estes fluxos de trabalho, muitos utilizadores optam por delegar aprovações de ações de agentes em classificadores, ou contornar totalmente as aprovações com sinalizadores de configuração com nomes preocupantes como --dangerously-skip-permissions e --yolo. A multiplicidade de casos de uso e configurações de agentes, combinada com a amplitude de ações que os agentes de programação podem realizar em pontos finais privilegiados, resulta num perfil de risco que requer uma gestão proativa por parte das equipas de segurança.
Hoje, estamos a lançar o Numbat, uma suite de segurança de agentes de código aberto que construímos para detetar, investigar e prevenir atividades perigosas de agentes de IA. À medida que mais empresas adotam produtos de agentes de vanguarda, o Numbat capacita as equipas de segurança para acompanharem os desafios de segurança resultantes. Integra-se em cada um dos arneses de agentes do lado do cliente mais amplamente utilizados, enquanto expõe uma interface consistente em todos eles. O Numbat liberta assim as equipas de segurança do peso de construir salvaguardas personalizadas e ferramentas de monitorização para cada agente individual em que os seus utilizadores confiam. O Numbat está disponível para o ecossistema de defensores como parte da participação da Perplexity na Open Secure AI Alliance com a NVIDIA e outras organizações.
Este artigo começa com uma discussão sobre os desafios de segurança que motivam o Numbat. Apresentamos de seguida o design e a arquitetura do Numbat, juntamente com as nossas lições obtidas ao implementar o Numbat em milhares de pontos finais da própria Perplexity.
Contextualizar o Panorama de Vulnerabilidades
O panorama dos incidentes de segurança de agentes de IA está a evoluir rapidamente. Grande parte da literatura existente sobre segurança de agentes concentra-se em ataques de injeção, nos quais uma carga útil maliciosa é introduzida nas instruções ou no contexto do modelo para confundir os agentes, levando-os a um comportamento inadequado. Os ataques de injeção e as salvaguardas têm sido extensivamente estudados, e os criadores de agentes, incluindo a Perplexity, conceberam defesas cada vez mais robustas contra ataques de injeção.
Mas um agente de IA não precisa de uma carga útil maliciosa para criar um incidente de segurança. De facto, não é necessário assumir a existência de um adversário de todo. Um agente de confiança, a operar dentro de um ambiente de confiança com ferramentas aprovadas pelo administrador, pode tomar ações nocivas simplesmente porque está a tentar demasiado cumprir a sua tarefa.
Os investigadores descrevem este modo de falha como um “colapso acidental”: comportamento nocivo do agente desencadeado não por entrada adversarial, mas por um erro ambiental comum. Um ficheiro em falta, um pedido de API falhado, uma credencial expirada ou uma negação de permissão podem enviar um agente à procura de uma solução alternativa. Ao perseguir o seu objetivo original especificado pelo utilizador, o agente pode cruzar limites de segurança através de reconhecimento não autorizado, alterações de controlo de acessos, descoberta de segredos ou exfiltração de dados. Em vez de o agente ser cooptado por um atacante, o próprio agente é o atacante. Além disso, o ataque pode atingir sistemas internos, sistemas externos, ou ambos, sem forma de saber até que o ataque já esteja em curso.
O primeiro colapso acidental amplamente reportado chegou este mês, com a divulgação por parte da OpenAI de um ataque iniciado por um agente que comprometeu a infraestrutura de produção da Hugging Face. Durante avaliações de um modelo GPT em pré-lançamento, o modelo viu-se incapaz de progredir na avaliação com o contexto fornecido. Para quebrar este impasse, o modelo encontrou uma forma de escapar ao seu ambiente de teste em sandbox e exfiltrar as respostas da avaliação da Hugging Face. O modelo tirou partido do seu arnês para escapar às restrições de rede pretendidas, escalar privilégios para além dos limites da sandbox, obter segredos e aceder a sistemas seguros da Hugging Face, tudo para perseguir o objetivo restrito de resolver a avaliação.
Os colapsos também incluem mutações e eliminações indesejadas do sistema. Embora talvez mais banais do que violar um sistema externo, estas ocorrências são mais frequentes e marcantes para qualquer utilizador avançado de agentes de programação. Apagar bases de dados de produção ou diretórios home é o pior pesadelo de qualquer programador, e os agentes devem ser capazes de evitar tais comportamentos ao longo de toda a sua execução.
Os investigadores de IA estão a trabalhar para mitigar estes comportamentos dentro dos próprios modelos. Embora estes esforços sejam certamente valiosos, muitos na comunidade de investigação percecionam uma tensão fundamental entre treinar modelos para propriedades de segurança fortes e treinar esses mesmos modelos para realizar tarefas cada vez mais complexas. Acreditamos ser improvável que defesas centradas exclusivamente na camada do modelo reduzam o risco de colapso para níveis aceitáveis.
Proteger Agentes de Programação Através de Integrações Nativas de Arneses
A conclusão é que a segurança dos agentes não pode repousar unicamente em salvaguardas ao nível do modelo, do utilizador ou da tarefa. Em vez disso, as equipas de segurança precisam de visibilidade sobre o que os agentes realmente fazem nos pontos finais dos clientes, juntamente com controlos que possam parar ações perigosas antes que sejam executadas. Estes são controlos ao nível do sistema que devem estar fortemente integrados com o arnês do agente.
O Numbat fornece estes controlos sob a forma de um binário Go estático e leve que se liga perfeitamente a arneses de agentes líderes do lado do cliente. Oferece monitorização em direto, aplicação de políticas e reconstrução forense em vários arneses de agentes e ambientes de execução.
Os pontos de integração chave entre o Numbat e um arnês de agente são os ganchos (hooks), os artefactos de sessão e a telemetria OTLP. Discutiremos cada um deles de seguida.
Ganchos
Praticamente todos os agentes de programação possuem um subsistema de ganchos. Os ganchos permitem que os agentes executem deterministicamente subrotinas em pontos pré-especificados dentro do ciclo de vida de execução do agente. Os utilizadores de agentes configuram tipicamente ganchos para fornecer aos modelos contexto adicional de formas previsíveis, implementar ciclos de teste e verificação, e fazer outras melhorias às capacidades dos agentes.
As mesmas propriedades determinísticas que tornam os ganchos atraentes para estes fins também os tornam atraentes para a deteção e resposta. É tipicamente insuficiente apanhar a maioria das ocorrências de um evento potencialmente preocupante. Em vez disso, é preciso abranger todas essas ocorrências para deteção e resposta. O Numbat configura vários tipos de ganchos, permitindo que as equipas de segurança e os administradores de TI implementem uma rica lógica de deteção.
Na maioria dos agentes de programação, certos tipos de ganchos (vulgarmente apelidados de ganchos "pré-ação") também são capazes de bloquear a execução da ação seguinte do agente. Utilizando estes ganchos pré-ação, o Numbat é capaz de implementar não apenas lógica de deteção, mas também regras de segurança preventivas para impedir que um colapso ocorra em primeiro lugar.
Artefactos de sessão
Os ganchos são meios poderosos para implementar lógica de deteção e prevenção em tempo real. No entanto, esta lógica deve ser especificável em código. Muitas vezes, um incidente de segurança de agentes assume uma forma que não podia ter sido prevista com antecedência, quanto mais reduzida a código fonte. Portanto, o Numbat tem também a capacidade de aceder e analisar artefactos de sessão retroativamente.
Os artefactos de sessão incluem muitos tipos de registos e diagnósticos. Talvez o tipo de registo mais importante seja a transcrição da sessão, que regista as conversas com o LLM que ditam a sequência de ações do agente. Os utilizadores avançados de agentes de programação já estão habituados a exportar transcrições de sessões para análise posterior através de comandos fornecidos pelo arnês. Mas estas exportações estão tipicamente em formato de texto simples, o que é inadequado para equipas de segurança que requerem registos legíveis por máquina com um esquema consistente e previsível.
O Numbat obtém assim artefactos de sessão diretamente do próprio sistema de ficheiros. Como a maioria dos arneses de agentes do lado do cliente armazena artefactos originais no sistema de ficheiros (tipicamente num diretório com ponto específico do agente sob $HOME), explorar o sistema de ficheiros fornece a rota mais direta para estes dados na sua forma mais utilizável e intocada. As equipas de segurança que utilizam o Numbat podem recolher estes artefactos em formato de linha temporal NDJSON normalizado através de numbat scan, quer para processamento local no ponto final do cliente, quer para análise remota assíncrona. Como os artefactos de sessão são registos estáticos e autónomos, o Numbat é capaz de reconstruir estas linhas temporais mesmo para sessões ocorridas muito antes de o Numbat ter sido instalado.
Telemetria OTLP
A maioria dos arneses de agentes do lado do cliente oferece extensa telemetria através do protocolo OpenTelemetry (OTLP). Esta telemetria fornece tipicamente muitos sinais para além daqueles disponíveis através de ganchos ou artefactos de sessão.
O Numbat pode funcionar como um recetor OTLP através do comando numbat collect. Este comando inicia um servidor para o qual os agentes de programação enviam telemetria OTLP para análise a jusante. É importante salientar que este servidor é local e escuta por predefinição apenas em localhost, o que significa que toda a telemetria permanece no dispositivo por predefinição. Os administradores de segurança podem então determinar o que fazer com a telemetria registada, quer isso envolva implementar processamento leve no dispositivo, processamento remoto através de numbat ship, ou análise mais aprofundada em plataformas de analítica como o ClickHouse.
Implementar o Numbat na Perplexity
Dentro da Perplexity, utilizamos o Numbat para proteger a utilização por parte dos nossos engenheiros de agentes de programação do lado do cliente, incluindo o Claude Code, o Codex, o OpenCode e o Pi.
Tanto os nossos esforços de prevenção como de deteção fazem uso extensivo de regras do Numbat, que são implementadas através do subsistema de ganchos de cada agente. Formulamos várias regras básicas para as nossas próprias necessidades, muitas das quais enviámos como parte das 52 regras incorporadas do Numbat. Estas regras estão organizadas em 11 categorias de comportamento e um conjunto de deteções de sequências em várias etapas, tais como acesso a segredos, exfiltração, escalotecniz de privilégios e movimento lateral. As regras utilizam expressões CEL sobre eventos normalizados, e os operadores podem adicionar as suas próprias regras e testes sem alterar o código do Numbat.
Por exemplo, a regra incorporada privilege.sudoers_tamper deteta escritas na política sudoers, utilização de visudo e tentativas de instalar concessões de NOPASSWD. Estas são ações de alto sinal que podem transformar um processo de agente limitado num acesso root persistente.
# privilege.sudoers_tamper (simplified for readability)
id: privilege.sudoers_tamper
severity: high
expr: |
(
event.event_type == "file.write" &&
event.file_path.matches("(^|/)etc/sudoers$|(^|/)etc/sudoers\\.d/[^/]+$")
) || (
event.event_type == "command.exec" &&
event.command.matches("\\bvisudo\\b|\\bNOPASSWD\\s*:")
)Comandos individuais nem sempre parecem maliciosos por si só, pelo que o Numbat também correlaciona sequências dentro de uma sessão de agente. A regra incorporada chain.secret_manager_read_then_egress deteta quando um agente lê um valor de uma ferramenta comum de gestão de segredos e posteriormente tenta um pedido curl ou wget portador de dados. Uma leitura de segredo pode ser legítima. Um pedido de saída pode ser legítimo. Sequenciados em conjunto, exigem investigação.
# chain.secret_manager_read_then_egress (simplified for readability)
id: chain.secret_manager_read_then_egress
severity: high
sequence:
within_events: 64
steps:
- expr: |
event.event_type == "command.exec" &&
event.command.matches("secretsmanager|get-secret|vault read")
- expr: |
event.event_type == "command.exec" &&
event.command.matches("curl.*(--data|--upload-file)|wget.*--post")Gerir e monitorizar Numbats em toda a frota
Tal como o Bumblebee, o nosso scanner de código aberto para exposição da cadeia de abastecimento em pontos finais de programadores, o Numbat é implementado em toda a nossa frota através de MDM. Cada Numbat regista a atividade do agente localmente e envia telemetria estruturada para os nossos sistemas de segurança centralizados.
A partir daí, o Perplexity Computer revê descobertas recentes do Numbat e registos de auditoria num agendamento recorrente para detetar comportamento suspeito ou malicioso. Investiga deteções, reconstrói sessões de agentes relevantes e dá escrutínio adicional a ações que o Numbat bloqueou.
O Computer também procura lacunas na nossa cobertura. Analisa novo comportamento, propõe melhorias para as deteções do Numbat, testa essas alterações e abre pedidos Pull para revisão humana. Uma vez aprovadas e implementadas, essas regras melhoram a monitorização em toda a frota e produzem melhores evidências para a investigação seguinte.
Isto cria um volante de segurança de auto-melhoria: os agentes geram atividade, o Numbat transforma essa atividade em linhas temporais e telemetria normalizadas, o Computer investiga e melhora as regras, e atualizações revistas por humanos fortalecem os controlos que protegem futuras sessões de agentes.
Conclusão
Na Perplexity, acreditamos que os agentes de IA serão executados em todos os tipos de ambientes: local, cloud e híbrido. Cada combinação de arnês de agente e ambiente de execução coloca desafios de segurança únicos, sendo que a complexidade combinatória ameaça sobrecarregar as equipas de segurança com largura de banda limitada. Os colapsos de agentes e outras vulnerabilidades inovadoras complicam ainda mais o panorama de segurança.
As defesas que habitam o próprio sistema do agente podem melhorar a postura de segurança de um utilizador, independentemente de onde o agente é executado. É precisamente isto que o Numbat entrega: salvaguardas de agentes fortemente integradas que permitem aos defensores prevenir, detetar e responder a comportamentos preocupantes em tempo real. Combinar o Numbat com o Perplexity Computer cria uma plataforma de segurança de agentes de alta potência que capacita os defensores a manterem-se à frente da curva.
O Numbat está disponível hoje como um projeto de código aberto para macOS, Linux e Windows. Os nossos próprios pontos finais de clientes são protegidos pelo Numbat, permitindo que os membros da equipa da Perplexity utilizem com confiança agentes em tarefas de âmbito alargado e longos horizontes. Convidamos as equipas de segurança em todo o lado a tirar partido da abordagem ao nível do sistema do Numbat para garantir e proteger as suas implementações de agentes.
Citação
@online{perplexity2026SecuringAgentsAcrossPerplexitySClientEndpointsWithNumbat,
author = {{Perplexity} and Adel Karimishiraz and Bex Brooker and Phi Hoang and Jerry Ma},
title = {{Securing agents across Perplexity's client endpoints with Numbat}},
date = {2026-07-29},
url = {https://perplexity.coolkeypoint.com/hub/blog/securing-agents-across-perplexity-s-client-endpoints-with-numbat}
}