Limitações do filtro EVE

A EVE é um correspondente de padrões. Decide se o texto de uma mensagem corresponde a uma regra. É boa nisto, e a camada de símbolos e evasão torna-a tolerante a um vasto leque de truques. Mas um correspondente de padrões tem limites estruturais rígidos, e é importante ser honesto sobre eles antes de confiar no filtro.

Esta página é deliberadamente franca. Um filtro que é sobrevalorizado é um filtro em que se confia em situações que não consegue tratar.

A EVE corresponde a texto de superfície, não a significado

A coisa mais importante a compreender: a EVE não tem compreensão do que uma pessoa quis dizer. Compara os caracteres de uma mensagem com padrões. Não sabe quem está a falar, sobre o que é a conversa, se uma palavra está a ser citada, recuperada, condenada ou usada a sério. Vê texto, e decide se esse texto corresponde a uma regra.

Tudo o que se segue decorre deste único facto.

Uma correspondência é um bloqueio rígido

Quando uma mensagem corresponde a uma regra, o resultado é binário. O filtro reporta um de um pequeno conjunto de resultados, e qualquer resultado que não seja CLEAN bloqueia a mensagem. Não há pontuação, nem "provavelmente", nem crédito parcial que um sistema a jusante possa ponderar. Uma mensagem ou aciona uma regra ou não.

Isto é um design deliberado. Um filtro de chat tem de tomar uma decisão instantânea e automática em cada mensagem, e um bloqueio rígido é previsível e rápido. Mas também significa que o filtro não tem espaço para nuances no momento da decisão. Não consegue deixar passar uma mensagem limítrofe com um aviso, nem retê-la para revisão, por conta própria. Bloqueia, ou não.

Não há meio-termo na própria correspondência

Uma correspondência de regra é tudo ou nada. O filtro não consegue distinguir um ataque genuíno de uma mensagem inocente que por acaso contém as mesmas letras. Ambas acionam a regra, e ambas são bloqueadas. Qualquer nuance tem de vir da forma como o seu servidor responde a um bloqueio, não da correspondência.

As duas consequências de um bloqueio rígido e cego ao significado são os falsos positivos e a evasão. São dois lados da mesma moeda: o filtro traça uma linha no texto, e qualquer linha traçada apenas no texto irá tanto apanhar mensagens inocentes de um lado como falhar as culpadas do outro.

Falsos positivos: o problema de Scunthorpe

Como a EVE corresponde a letras e não a intenção, uma mensagem inocente que por acaso contém uma sequência proibida de letras é bloqueada exatamente como se fosse um ataque.

O exemplo clássico dá o nome ao problema. A cidade inglesa Scunthorpe contém uma sequência grosseira de quatro letras no seu meio. Um filtro ingénuo que procura essa sequência bloqueia o nome da cidade, e por extensão cada lugar, apelido ou palavra que por acaso a contenha. A palavra é inocente; as letras não são; o filtro não consegue distinguir, porque só vê as letras.

Isto não é um bug que possa ser totalmente corrigido. É o resultado direto de corresponder a texto de superfície. Cada padrão proibido é uma afirmação de que uma sequência de caracteres é sempre má, e para quase qualquer sequência desse tipo existe alguma palavra, nome ou frase inocente que a contém.

A EVE reduz os falsos positivos com ferramentas direcionadas:

  • As listas never permitem a um padrão excluir palavras inocentes específicas que de outra forma o acionariam. Uma regra para um insulto pode listar as palavras inofensivas que partilham as suas letras e recusar-se a corresponder-lhes.
  • O condicionamento mantém um padrão agressivo inerte a menos que uma frase acionadora esteja presente por perto, ou a própria palavra corresponda claramente, para que o padrão só dispare num contexto onde um acerto verdadeiro é provável.
  • Os vetos permitem a um padrão recuar quando uma frase que sinaliza uso inocente está presente na linha.

Estes ajudam, e são utilizados intensivamente nos filtros fornecidos. Mas são remendos em padrões individuais, escritos à mão, um caso inocente de cada vez. Não conseguem antecipar cada mensagem inocente, e uma lista never só consegue excluir palavras em que o seu autor pensou. Os falsos positivos são reduzidos, não eliminados.

Os falsos positivos são inevitáveis

Qualquer filtro que bloqueia texto irá por vezes bloquear texto inocente. As passagens de evasão agressivas pioram isto, não melhoram: quantas mais grafias um padrão está disposto a aceitar, mais palavras inocentes caem dentro da sua rede. O ajuste troca falsos positivos por evasão, e não há definição que remova ambos.

Evasão: grafias e símbolos inéditos

O outro lado da moeda. As passagens de evasão desfazem famílias conhecidas de ofuscação: caracteres semelhantes, entidades HTML, grafias esticadas e pontuadas, transposições, e palavras separadas ou coladas. Dentro dessas famílias funcionam bem.

Mas só conseguem desfazer truques que as tabelas e regras já conhecem. Não conseguem inferir intenção, por isso uma evasão genuinamente inédita passa a direito:

  • Uma nova grafia que nenhum padrão cobre. A linguagem, e o calão em particular, inventa novas grafias constantemente. Um padrão escrito hoje não conhece a invenção de amanhã.
  • Uma semelhança ou símbolo que não está na tabela de reconversão. A tabela de confundíveis é grande mas finita. Um carácter que não lista não é reconvertido, e um emoji codificado que não está num quadro de símbolos não é apanhado.
  • Uma substituição que os padrões não antecipam. A evasão é adversarial. Uma vez que um truque é conhecido e adicionado, os utilizadores passam para o seguinte, e o filtro está sempre a responder à última técnica em vez da próxima.

Isto é uma corrida ao armamento permanente, não um problema resolvido. A camada de evasão eleva o esforço necessário para passar pelo filtro. Não fecha, e não pode fechar, cada brecha, porque fechar uma brecha requer conhecer o truque específico com antecedência, e a correspondência de texto sem intenção não pode saber isso.

O filtro pode ser evadido

Um utilizador determinado que invente uma grafia ou símbolo que os padrões não cobrem conseguirá passar uma mensagem. As passagens de evasão reduzem a evasão casual; não param uma tentativa inédita e deliberada. Não trate um resultado limpo como prova de que uma mensagem é segura.

O que isto significa para o seu servidor

Utilize o filtro pelo que é: uma primeira linha rápida e automática que apanha o comum e o óbvio, e grande parte do ofuscado. Não o trate como um juiz de intenção ou uma garantia completa.

  • Um bloqueio não é prova de malícia. Uma mensagem inocente pode acionar uma regra. Considere como o seu servidor responde a um bloqueio em vez de assumir que cada bloqueio é uma infração passível de punição.
  • Um resultado limpo não é prova de segurança. Uma mensagem prejudicial pode usar uma grafia ou símbolo que o filtro não cobre. A moderação humana ainda importa.
  • Algumas categorias merecem cuidado, não punição. O filtro separa os resultados que podem indicar um utilizador em crise ou a ser prejudicado das violações comuns das regras, precisamente para que um servidor não puna automaticamente uma pessoa que pode precisar de ajuda. Honre essa separação.

O filtro é uma ferramenta. Trata do volume para que as pessoas não tenham de ler cada mensagem, e remove os casos fáceis. Os casos difíceis, os que dependem do que uma pessoa realmente quis dizer, continuam a ser um trabalho para humanos, porque julgar a intenção é exatamente aquilo que um correspondente de texto não consegue fazer.