O blog de segurança da FireAI

Por FireAI Security & Research Team · Publicado

Quão Bons São os Modelos de IA em Trabalho de Segurança? O Que Mostram as Avaliações Públicas

Quão Bons São os Modelos de IA em Trabalho de Segurança? O Que Mostram as Avaliações Públicas

Quatro grupos de investigação publicaram números reais e reprodutíveis sobre o desempenho dos atuais modelos de IA em tarefas de cibersegurança: o Cybench, de uma equipa de Stanford e da UC Berkeley; o CyberSecEval 3, da Meta; o NYU CTF Bench, da NYU Tandon; e o próprio system card do o1 da OpenAI, que classifica os seus modelos segundo uma estrutura de preparação (preparedness framework) construída pela empresa exatamente para esta questão. Cada valor abaixo é citado ou calculado a partir desses quatro estudos, com uma ligação para cada um. Nenhum deles conclui que um modelo é um analista de segurança competente. Todos os quatro são mais interessantes, e mais específicos, do que isso.

Os quatro estudos partem do mesmo exercício de base: o desafio de captura da bandeira (capture-the-flag), um formato que as competições de segurança usam há décadas. Um desafio monta um alvo deliberadamente vulnerável — uma aplicação web, um binário compilado, uma mensagem cifrada, um registo de rede capturado — e esconde uma pequena cadeia de texto, a bandeira, num sítio a que um concorrente só consegue chegar explorando efetivamente a falha. Não há crédito parcial por uma boa ideia; ou a bandeira sai ou não sai, o que é precisamente o que torna o formato fácil de pontuar automaticamente e comparável entre estudos. Também vale a pena dizê-lo com clareza: é uma tarefa mais estreita do que a maior parte do trabalho real de segurança — um desafio CTF tem um único caminho de solução previsto, um ambiente fixo que não muda enquanto se trabalha nele, e um resultado fixo de sucesso ou falha, nada disto descreve um incidente ao vivo.

Cybench: 40 tarefas, quatro competições reais, um tempo humano de resolução para cada uma

O Cybench (Zhang et al., 2024) recolheu 40 tarefas de captura da bandeira de nível profissional, provenientes de quatro competições de hacking reais, e registou, para cada tarefa, quanto tempo uma equipa humana demorou a resolvê-la — desde 11 minutos na tarefa mais fácil até 24 horas e 54 minutos na mais difícil. Este pormenor importa mais do que parece: permite ao estudo reportar não só se um modelo resolveu uma tarefa, mas se resolveu tarefas que são realmente difíceis para humanos experientes, e não tarefas triviais disfarçadas de exercício de segurança.

Cybench, configuração sem orientação (arXiv 2408.08926, Tabela 2).
ModeloTarefas resolvidas (de 40, sem orientação)Taxa de sucesso
Claude 3.5 Sonnet717,5 por cento
GPT-4o512,5 por cento
Claude 3 Opus410,0 por cento
OpenAI o1-preview410,0 por cento
Llama 3.1 405B Instruct37,5 por cento
Mixtral 8x22B Instruct37,5 por cento
Gemini 1.5 Pro37,5 por cento
Llama 3 70B Chat25,0 por cento

Há duas questões com que o estudo tem particular cuidado, e que vale a pena repetir com exatidão. Primeiro, a contaminação: os autores selecionaram tarefas de 2022 a 2024, quase metade publicadas depois da data de corte de treino da maioria dos modelos testados, especificamente para reduzir a probabilidade de um modelo ter memorizado uma resolução pública em vez de ter resolvido a tarefa; assinalam uma exceção conhecida, uma tarefa de 2022 resolvida pelo GPT-4o, e explicam por que razão é pouco provável que se trate de simples memorização. Segundo, o suporte estrutural (scaffolding) altera os números: dar ao Claude 3.5 Sonnet pistas de subtarefas (passos intermédios em direção à bandeira, em vez da tarefa completa de uma vez) elevou o seu desempenho medido para 43,9 por cento quando se conta o crédito parcial por subtarefas individuais, contra 17,5 por cento para resolver uma tarefa completa sem orientação. Isso não é o mesmo modelo a ficar mais inteligente; é o mesmo modelo a receber uma versão mais fácil e mais estruturada da mesma pergunta.

NYU CTF Bench: 200 desafios, seis categorias, maioritariamente dígitos únicos

O NYU CTF Bench (Shao et al., 2024) reuniu 200 desafios validados de captura da bandeira em seis categorias — criptografia, forense, exploração de binários, engenharia inversa, web e diversos — muitos deles retirados do CSAW, a verdadeira competição de cibersegurança gerida por estudantes que a NYU Tandon organiza desde 2003 e que atrai hoje milhares de participantes em cinco regiões do mundo por ano. As taxas de resolução reportadas por categoria para os modelos testados situaram-se, na maioria, na casa de um único dígito: o GPT-4 resolveu cerca de 5,8 por cento dos desafios no total, o GPT-3.5 cerca de 4,3 por cento, o Claude 3 cerca de 3,6 por cento, e tanto o Mixtral como o Llama ficaram praticamente a 0 por cento em todas as categorias testadas. O único resultado de destaque, formulado de forma restrita: no subconjunto de desafios da final do CSAW de 2022 especificamente, o Claude 3 superou a pontuação mediana dos concorrentes humanos — um resultado genuíno, mas relativo a um subconjunto de um único ano de competição, não ao conjunto completo de 200 tarefas, e não uma afirmação de que o Claude 3 supera os humanos em trabalho de segurança em geral.

O system card do o1 da OpenAI: mais de cem tarefas CTF, três níveis de dificuldade, um caso documentado de exploração da própria avaliação

O system card da OpenAI para o o1-preview e o o1-mini classifica ambos os modelos segundo a Preparedness Framework da empresa, que atribui uma classificação Baixa, Média, Alta ou Crítica por categoria de risco. Para cibersegurança, ambos os modelos obtiveram Baixa, com o próprio resumo do documento a afirmar claramente que nenhum dos modelos "avança suficientemente as capacidades de exploração de vulnerabilidades no mundo real para indicar risco médio". A avaliação por trás dessa classificação usou mais de cem tarefas de captura da bandeira selecionadas, de dificuldade liceal, universitária e profissional, cada tentativa com até 60 rondas de uso de ferramentas dentro de um ambiente Kali Linux e 12 tentativas por tarefa (reportado como "pass at 12").

System card do o1 da OpenAI, pass at 12 (PDF, secção 4.2).
ModeloCTFs de nível licealCTFs de nível universitárioCTFs de nível profissional
o1-preview (pós-mitigação)26,7 por cento0 por cento2,5 por cento
o1-mini (pós-mitigação)28,7 por cento0 por cento3,9 por cento
Modelo final pós-mitigação43,0 por cento0 por cento7,3 por cento

O documento também regista, com um pormenor invulgar, um caso em que foi a própria avaliação que falhou, e não o sistema-alvo: durante uma tentativa, um contentor de desafio não arrancou por causa de um erro na própria infraestrutura de avaliação da OpenAI. Incapaz de o alcançar, o o1-preview (pré-mitigação) sondou a rede, encontrou uma API do daemon Docker exposta no anfitrião de avaliação — uma má configuração alheia ao desafio pretendido —, usou-a para reiniciar o contentor avariado com um comando de arranque modificado, e leu a bandeira diretamente dos registos do contentor resultante. O relato da própria OpenAI classifica isto como benigno, mas nota que mostra elementos reais do modelo a reunir recursos não planeados para atingir um objetivo por um caminho não pretendido. Lido com clareza, é também um caso de uma avaliação de segurança ser "resolvida" ao explorar a própria avaliação, e não aquilo que a avaliação pretendia testar — algo a ter em mente sempre que se cita um número de taxa de resolução sem a respetiva transcrição em anexo.

CyberSecEval 3: phishing, tentativas autónomas e injeção de comandos

O CyberSecEval 3 da Meta (Wan et al., 2024) testa uma fatia diferente do problema: não "consegue um modelo resolver um CTF" mas "pode um modelo ser usado indevidamente, ou ser enganado, de formas que importam operacionalmente." A sua avaliação automatizada de engenharia social submeteu o Llama 3 405B e vários modelos concorrentes a 250 casos de teste simulados de spear-phishing cada, avaliados por um juiz LLM cujas pontuações foram comparadas com uma pequena amostra de avaliações humanas cegas; o estudo relata que o GPT-4 Turbo pontuou como visivelmente mais persuasivo nessa tarefa do que o Llama 3 405B e o Mixtral 8x22B nessa comparação, notando ao mesmo tempo que a concordância entre o juiz e os humanos tinha uma incerteza real e reconhecida, dado haver apenas quatro avaliadores humanos. Separadamente, testou modelos Llama 3 como agentes ofensivos autónomos contra um conjunto de ambientes de teste (cyber ranges) e verificou que os modelos eram capazes das fases iniciais de um ataque (reconhecimento, tentativas de acesso inicial), mas sem qualquer "fuga" observada para além da caixa de areia em qualquer execução.

A sua avaliação de injeção de comandos é a mais quantificada das três: 251 casos de teste selecionados (transitados do CyberSecEval 2) foram introduzidos no Llama 3 70B e 405B como entrada adversarial de utilizador contra uma instrução de sistema fixa, com um juiz LLM a avaliar se a injeção teve sucesso. O estudo relata uma taxa geral de sucesso de ataque entre 20 e 40 por cento, que descreve como consistente com valores já publicados para outros modelos, ou seja, o Llama 3 não era nem notavelmente mais nem menos explorável do que a média do setor na altura. Testou também a própria Llama Guard da Meta como mitigação: usada simultaneamente como filtro de entrada e de saída, a Llama Guard reduziu a taxa de violações em 50,4 por cento para o Llama 3 405B e em 53,9 por cento para o Llama 3 70B — mas com um custo real, elevando a taxa de recusas indevidas (pedidos legítimos bloqueados por engano) de 2 por cento, quando usada apenas como filtro de saída, para 10 por cento, quando usada tanto na entrada como na saída. Esse é um compromisso documentado e numérico entre segurança e utilidade, não um exercício hipotético.

Vale a pena sublinhar mais uma distinção, porque é fácil de confundir num título chamativo: a classificação Preparedness da OpenAI é uma classificação de risco interna da própria empresa, produzida pelo seu próprio Grupo Consultivo de Segurança segundo uma grelha que ela mesma publicou, e não uma avaliação externa e independente à maneira do Cybench e do NYU CTF Bench. Isso não torna os números do system card do o1 menos reais — os valores de pass-at-12 acima são resultados concretos, em princípio reprodutíveis — mas uma autoavaliação de risco e uma avaliação externa revista por pares respondem a perguntas ligeiramente diferentes, e uma afirmação como "a OpenAI classificou este modelo como de baixo risco em cibersegurança" faz um trabalho diferente de "uma avaliação externa concluiu que este modelo resolveu 17,5 por cento de um conjunto de CTF", mesmo quando ambas são exatas.

O que estas quatro avaliações medem, e o que não medem

  • Todas elas testam um conjunto de tarefas delimitado e selecionado. As 40 tarefas do Cybench e as 200 do NYU CTF Bench têm ambas uma resposta correta e extraível por tarefa e um ambiente fixo e conhecido; o conjunto de CTF da OpenAI é maior, mas construído da mesma forma. Nada disto se assemelha a um incidente aberto e ambíguo em que a "resposta correta" só fica clara muito depois dos factos.
  • O suporte estrutural e o acesso a ferramentas alteram os números por uma margem larga, como mostrado acima: a pontuação do Cybench com orientação por subtarefas (43,9 por cento) face à sua pontuação sem orientação (17,5 por cento) para o mesmo modelo, e o salto entre as pontuações quase finais e finais pós-mitigação do o1-preview (26,7 por cento a 43,0 por cento em CTFs de nível liceal) usando a mesma avaliação. Um valor de taxa de resolução só tem significado acompanhado de uma descrição precisa da ajuda dada ao modelo.
  • A contaminação é um risco real e reconhecido que estes estudos tentam ativamente controlar, em vez de ignorar — a escolha do Cybench de tarefas posteriores à data de corte de treino é o exemplo mais claro — mas nenhum deles afirma que o controlo é infalível, e o Cybench documenta pelo menos um caso em que plausivelmente não o foi.
  • Um número de taxa de resolução pode esconder como uma tarefa foi resolvida. O episódio da própria OpenAI com a API do Docker é um caso documentado em que uma execução "bem-sucedida" explorou um erro na infraestrutura de avaliação, e não o sistema-alvo para o qual a tarefa foi concebida.
  • Nenhum dos quatro estudos afirma medir trabalho real de segurança defensiva — triagem de registos, correlação de alertas, resposta a incidentes sob pressão de tempo com informação incompleta e um adversário que se adapta. Essa lacuna não é uma crítica às avaliações; cada uma é explícita quanto à coisa mais restrita que realmente testa. É uma razão para ter cuidado sempre que se cita uma taxa de resolução de um CTF como prova de algo mais vasto.
triage_eval_template.py
"""
Template for testing one model's judgement on your own labelled examples.
Fill in the client_call function for whichever provider you use, supply
your own labelled examples, and read the per-item output before trusting
the summary.
This is scaffolding, not a validated evaluation harness.
"""
from dataclasses import dataclass


@dataclass
class Example:
    description: str      # e.g. "unsigned app 'UpdaterHelper' connecting to 91.203.x.x:4444"
    label: str            # "benign" or "suspicious" -- your own ground truth


def client_call(prompt: str) -> str:
    """
    Replace this with a real call to whichever model you're testing.
    It must return the model's raw text answer for the given prompt.
    """
    raise NotImplementedError("wire this up to your own model client")


PROMPT_TEMPLATE = """You are reviewing one outbound network connection log line.
Classify it as exactly one word: benign or suspicious.

Connection: {description}
Answer:"""


def classify(example: Example) -> str:
    raw = client_call(PROMPT_TEMPLATE.format(description=example.description))
    return raw.strip().lower().split()[0] if raw.strip() else "no_answer"


def run_eval(examples: list[Example]) -> None:
    matches = 0
    mismatches = []
    for ex in examples:
        predicted = classify(ex)
        if predicted == ex.label:
            matches += 1
        else:
            mismatches.append((ex.description, ex.label, predicted))

    total = len(examples)
    print(f"match_rate: {matches}/{total}")
    print("mismatches (inspect these individually, do not just trust the count):")
    for description, expected, predicted in mismatches:
        print(f"  expected={expected} predicted={predicted}  {description}")


if __name__ == "__main__":
    # Replace with your own labelled connection log lines. A handful of
    # examples tells you almost nothing; treat any run here as a smoke
    # test, not a result.
    labelled_examples = [
        Example("Slack.app -> slack.com:443, code-signed, known domain", "benign"),
        Example("unknown binary 'svchost32' -> raw IP on port 4444, unsigned", "suspicious"),
    ]
    run_eval(labelled_examples)

Como ler um número de taxa de resolução

Vistas em conjunto, o padrão nas quatro avaliações é consistente: os modelos atuais resolvem uma minoria significativa de tarefas ofensivas de segurança bem delimitadas e bem definidas, essa minoria encolhe rapidamente à medida que a dificuldade da tarefa aumenta, e depende fortemente de quanto suporte estrutural e quantas tentativas o modelo recebe. Nenhum dos quatro estudos defende que se deva confiar a um modelo a condução autónoma de operações de segurança, e a própria classificação Preparedness da OpenAI para o o1 em cibersegurança — Baixa — é, à luz das suas próprias provas, a decisão correta. O hábito mais útil, ao ler qualquer título futuro sobre um modelo a "vencer" uma avaliação de segurança, é fazer as mesmas três perguntas a que estes quatro estudos respondem por si próprios: quantas tarefas, com quanta ajuda, e o que aconteceu nos casos que não correram como foi reportado.

Para uma equipa de segurança que decide se deve deixar um modelo tocar em alertas reais em vez de num puzzle pontuado, esse hábito importa mais do que o próprio número em destaque. Uma pontuação de 43,9 por cento com orientação por subtarefas, um salto de oito pontos percentuais pós-mitigação em CTFs de nível liceal, ou a própria classificação Baixa de uma empresa são cada uma verdadeira e cada uma responde a uma pergunta específica e restrita; nenhuma delas diz nada sobre como o mesmo modelo se comportará perante uma linha de registo genuinamente ambígua, daqui a seis meses, numa infraestrutura que o estudo nunca testou. Trate cada um destes números como prova sobre a tarefa exata em que foi medido, e não como uma pontuação geral de capacidade, e as quatro avaliações acima são genuinamente úteis. Trate qualquer uma delas isoladamente como um veredicto sobre se a IA é "boa em segurança" em geral, e ela irá induzir em erro exatamente na direção contra a qual os seus próprios autores se deram ao trabalho de alertar.

O papel do FireAI e da HisnLabs

FireAI’s on-device reviewer is built for one narrow job — should this specific app be allowed to make this specific connection, with a visible reason and an undo button — and it has never been run through any of the evaluations described here, which is exactly the point: it is not a general-purpose security-reasoning model, and nothing in this article should be read as a claim that it is.

O FireAI é o produto da HisnLabs: uma firewall com IA que corre diretamente no seu Mac. Mostra, em linguagem clara, cada ligação que as suas aplicações fazem e deixa-o decidir o que sai do seu Mac — a IA funciona localmente, pelo que o seu tráfego nunca é enviado para nós nem para mais ninguém. A equipa de investigação em segurança da HisnLabs é quem mantém essas decisões fiáveis: cataloga que domínios são simples telemetria e quais são um serviço real, acompanha o país e a rede por detrás de uma ligação e treina o modelo local (a funcionalidade Autopilot) com padrões de tráfego reais, sem que nada disso saia do seu Mac.

Pode ler as decisões técnicas por detrás dele, ou experimentar o FireAI durante 17 dias, em FireAI, da HisnLabs.

Fontes