Testes de cibersegurança para sistemas complexos e embebidos
O Midair transforma o que uma análise de código suspeita em testes que tentam prová-lo. Executa esses testes no seu sistema e guarda as evidências de cada execução.
Comece por uma via de entrada no seu produto que o preocupe, como o caminho de atualização do firmware. Um piloto executa o ciclo sobre ela, com a sua suite e o seu dispositivo.
what to provean image with a bad signature is never installed analysis template fw-main, suspicious places: security test suite update-ts, branch per round delta device gw-lab-2 stage judge, iteration 2 of 5 found 1 demonstrated, 1 suspected trying H3: rollback to an older image
O que são testes de cibersegurança.E porque uma só ferramenta não chega.
Os testes de cibersegurança verificam como um sistema se comporta quando alguém o tenta usar de forma abusiva. Procuram fraquezas que um atacante possa explorar: uso inseguro da memória, serviços expostos, builds frágeis e entradas por validar.
Uma só ferramenta raramente resolve a questão. A análise de código diz que uma cópia pode exceder o buffer. Um teste mostra se uma entrada longa chega lá. O dispositivo mostra como o binário foi compilado e o que corre ao lado dele.
O Midair junta as três vistas num só projeto. O utilizador diz o que o preocupa. O Midair analisa o código, escreve e executa testes, e indica o que cada execução demonstrou.
O ciclo do vetor de ataque.Cinco fases, repetidas até não surgir nada de novo.
Um vetor de ataque é uma via de entrada no sistema, com um ciclo que a continua a testar. Escolha uma fase para ver o que acontece nela.
01 Analisar
- Quem faz
- O Midair e o Visao
- O que acontece
- O Midair cria uma execução a partir do seu modelo de análise, com os locais suspeitos ativos. As ocorrências dizem o que está errado. Os locais suspeitos indicam onde o código decide algo que ninguém leu ainda.
analysis run 318 · suspicious places: securitySUSPICIOUS security high authorization-decision verify.c:88 SUSPICIOUS security med crypto-primitive verify.c:41 finding std/mem/overflow unpack.c:142:9 Copy larger than the destination buffer 2 suspicious places, 1 finding go to the plan
02 Planear
- Quem faz
- O seu fornecedor de IA
- O que acontece
- Os locais suspeitos, as ocorrências e tudo o que as rondas anteriores aprenderam seguem para o fornecedor de IA. Este devolve as hipóteses a atacar, uma especificação para a suite de testes e uma norma para o agente Delta.
plan · iteration 2H1 verify.c:88 accepts an image when the
signature check returns an error
H2 unpack.c:142 overflows on a long file name
H3 an older signed image can be installed again
spec tests for H1-H3 in group update_path
norm forbid: module, memexec ports: 22/tcp03 Escrever testes
- Quem faz
- Claude Code ou Codex CLI
- O que acontece
- A especificação segue para o Claude Code ou para o Codex CLI. A ferramenta atualiza o repositório da suite de testes e envia um branch. O prompt de especificação da própria suite não muda.
generator · Claude Code · update-tscloned update-ts
added update_path/bad_signature.c
added update_path/long_name.c
added update_path/rollback.c
pushed av/update-path/iter-204 Executar
- Quem faz
- Test Environment e Delta
- O que acontece
- O Midair cria uma execução a partir do seu modelo de testes, fixada no branch novo. Quando há um dispositivo ligado, o Delta observa-o enquanto a suite corre.
run 1207 · branch av/update-path/iter-2update_path/bad_signature FAILED H1: image installed
update_path/long_name PASSED H2: name rejected
update_path/rollback SKIPPED H3: no older image
delta gw-lab-2 cycle 4411 to 4415
+ port:4444/tcp/LISTEN05 Julgar
- Quem faz
- O seu fornecedor de IA
- O que acontece
- Os veredictos e as alterações que o Delta viu voltam ao fornecedor. Este indica que hipóteses a execução resolveu, quais não conseguiu alcançar e se outra ronda traria algo de novo.
judge · iteration 2demonstrated H1 run 1207, bad_signature not shown H2 long names rejected suspected port 4444 opened during the run not reached H3 needs two signed images another round: yes, for H3
O que o ciclo nunca faz.E quando para.
Não altera o código em teste.
O ciclo só edita a suite de testes. Um ciclo que pudesse editar o código também poderia fazer passar os seus próprios testes.
Não decide o que é uma vulnerabilidade.
Cada ocorrência leva as suas evidências e uma marca: demonstrada por uma execução, ou apenas suspeita. As demonstradas aparecem primeiro. Uma pessoa confirma-as.
Para sozinho.
O ciclo termina no limite de iterações que definir, ou antes, quando outra ronda já não traria nada de novo. Parar termina-o de imediato, e as execuções que já começaram terminam com resultados reais.
Continua sem o seu navegador.
O ciclo avança no servidor. Fechar a página não o para, e um reinício do servidor retoma-o. Uma fase que fique parada seis horas termina o ciclo com uma mensagem.
Um defeito, três camadas.Cada camada vê uma parte diferente.
A nossa suite de demonstração planta defeitos de propósito e verifica que os scanners os encontram. Este exemplo junta dois deles num pequeno programa: um strcpy para um buffer de 8 bytes e uma build sem proteção da pilha nem PIE.
1#include <string.h>2#include <stdio.h>3char buffer[8];4void copy_name(const char *name)5{6 strcpy(buffer, name);7}8int main(int argc, char **argv)9{10 if (argc > 1)11 copy_name(argv[1]);12 printf("%s\n", buffer);13}$cc -O0 -fno-builtin -fno-stack-protector \ -fno-PIE -no-pie unsafe.c -o unsafe#instalado no dispositivo como /opt/demo/unsafe
O código-fonte mostra a cópia.
- O que vê
- A função copy_name() copia uma string de qualquer tamanho para um buffer de 8 bytes.
- O que não vê sozinha
- Como o binário foi compilado, e se uma entrada longa chega a esta linha.
visao · unsafe.c · Exemplounsafe.c:6:5 error std/mem/overflow Copy larger than the destination buffer 1 finding
O teste mostra a build.
- O que vê
- O binário de release continua a chamar strcpy a partir de copy_name. Não tem stack canary e não é independente da posição (PIE).
- O que não vê sozinha
- O que mais está instalado e à escuta no dispositivo ao lado dele.
run 1211 · tsf-cybersec · Exemplobinscan unsafe NX yes PIE no canary no
objdump banned call: strcpy in copy_name
release/hardening FAILED binary.no-canary
binary.not-pie
release/banned_calls FAILED binary.banned-callO dispositivo mostra o que foi entregue.
- O que vê
- O binário instalado viola a política de hardening porque não tem stack canary. O Delta regista o checksum dele, por isso uma recompilação posterior aparece como alteração.
- O que não vê sozinha
- A linha de código. O Midair mostra o resultado do dispositivo ao lado da ocorrência no código, numa só lista de problemas.
delta --binaries /opt/demo --cfg policy.json · Exemplohardening Binary '/opt/demo/unsafe' lacks required mitigation: stack canary file /opt/demo/unsafe csum 3f9a…e10c exit code 1
Perguntas.Respostas curtas.
O que são testes de cibersegurança?
Os testes de cibersegurança verificam como um sistema se comporta quando alguém o tenta usar de forma abusiva. Juntam análise de código, testes dirigidos e verificações no dispositivo em funcionamento para encontrar fraquezas que um atacante possa explorar.
O que é um vetor de ataque no Midair?
Um vetor de ataque é uma via de entrada no seu sistema que quer ver testada, como o caminho de atualização do firmware. O Midair executa um ciclo sobre ela: analisar, planear, escrever testes, executar e julgar. O ciclo repete-se até uma ronda não trazer nada de novo ou chegar ao seu limite de iterações.
O Midair decide o que conta como vulnerabilidade?
Não. O Midair marca cada ocorrência como demonstrada por uma execução ou apenas suspeita, e guarda as evidências ao lado. Uma pessoa confirma-a.
O ciclo altera o nosso código-fonte?
Não. O gerador de código só edita o repositório da suite de testes e envia um branch. O código em teste fica como está.
Como são os testes gerados?
São testes do Test Environment em C, que usam a biblioteca tsf-cybersec. Esta verifica como os binários foram compilados, o que um host tem à escuta, a que se liga e o tráfego capturado. Cada veredicto indica a hipótese que resolve.
O que precisamos para um piloto?
Uma via de entrada que o preocupe, o código-fonte, um repositório de suite de testes e, se tiver, um dispositivo numa bancada. O piloto configura consigo o primeiro vetor de ataque.
Comece por uma via de entrada.A que mais o preocupa.
Diga o que quer ver provado. Um piloto executa o ciclo sobre o seu código, a sua suite e o seu dispositivo, e mostra o que cada ronda demonstrou.
Entrar na lista de espera