O setor de inteligência artificial vive um amplo debate sobre os mecanismos de governança e avaliação de modelos avançados antes de sua implementação. No entanto, essas grandes discussões frequentemente ignoram o código real que decide se um agente de IA tem permissão para executar ações sensíveis, como enviar e-mails, modificar chaves de criptografia, mesclar ramificações de software ou transferir fundos. Essas decisões não são tomadas por grandes laboratórios ou textos regulatórios, mas sim por funções de programação simples que retornam valores verdadeiro ou falso.
Testes de estresse realizados em um protocolo de código aberto para verificação de ações de agentes, chamado "PIC", mostraram que os problemas não decorrem necessariamente de falhas na criptografia, mas da aceitação pelo protocolo de formatos múltiplos que parecem corretos, mas estão sujeitos a interpretações diferentes. Por exemplo, o esquema estrutural pode aceitar hashes com letras maiúsculas ou minúsculas, enquanto o interpretador os processa de maneiras que levam a resultados divergentes entre um sistema e outro, sem violar as especificações padrão declaradas.
Limites dos esquemas JSON na validação de dados
Os esquemas JSON desempenham um papel fundamental, porém limitado, na validação da estrutura de dados; eles verificam a presença dos campos necessários, a correção de seus tipos de valor e sua adequação às regras gerais. No entanto, o esquema é incapaz de impor regras relacionais complexas, como garantir que uma referência específica a evidências aponte para um único elemento dentro de uma matriz de fontes, sem duplicação ou ambiguidade.
As diferenças na implementação de operações de busca ou correspondência de identificadores entre diferentes linguagens de programação levam ao que é conhecido como disparidade de analisadores (parser differential), um tipo antigo de vulnerabilidade de segurança que surgiu anteriormente em protocolos como HTTP e JWT, onde dois componentes leem as mesmas entradas de duas maneiras diferentes. Nos protocolos de agentes modernos, essas nuances levam à aceitação de ações em um determinado serviço, enquanto outro serviço que utiliza a mesma política e especificações as rejeita.
Impacto das operações de normalização na segurança do protocolo
Os desenvolvedores geralmente tendem a normalizar as entradas para evitar a rejeição de dados recuperáveis, como remover espaços extras, converter letras para minúsculas ou corrigir preenchimentos Base64. No entanto, essas práticas representam um risco real nos limites da autenticação. Por exemplo, se o interpretador normalizar o nome de uma ferramenta ou remover espaços antes de compará-lo com uma lista de permissões, o sistema poderá executar uma ação que a parte signatária não aprovou, ou manipular permissões de execução sem o conhecimento dos desenvolvedores.
Além disso, confiar em campos enviados pelo próprio agente para atestar a confiabilidade de sua origem abre as portas para o problema do "deputado confuso" (confused deputy) em formato digital. A confiança deve ser derivada exclusivamente dentro dos limites de aplicação da lei e verificação, por meio da checagem de assinaturas digitais e sua correspondência com chaves criptográficas confiáveis diretamente pelo operador, independentemente das alegações contidas no corpo da solicitação.
Estrutura de três camadas e vetores de correspondência de implementação
Para evitar essas vulnerabilidades, é necessária uma estrutura que separe claramente três camadas sucessivas:
- Validação de esquema: para rejeitar estruturas corrompidas e representações que não correspondem à rede.
- Validação semântica: para resolver referências, verificar associações e derivar a confiança real.
- Avaliação de políticas: para tomar a decisão final sobre permitir ou bloquear a execução da ação.
Não basta limitar-se a notas documentais; são necessárias ferramentas de teste de conformidade de implementação claras que incluam entradas precisas, resultados esperados e códigos de erro estáveis para lidar com casos ambíguos. Esses vetores garantem a uniformidade do comportamento em todas as implementações e impedem que a segurança dependa de configurações padrão divergentes em diferentes pontes de software.