Plataforma Midair

A sua malha de testes O seu analisador estático O seu engenheiro de QA O seu ciclo de feedback com IA em minutos

Para dispositivos embebidos, servidores de alto desempenho, ambientes complexos e praticamente qualquer software do mundo.

O Midair está a chegar. Entre na lista de espera.

Confiança em três camadas na cibersegurança através de análise estática, testes e monitorização em tempo de execução

Midair code view: findings and complexity over a repository
Midair test run: the suite tree beside the live run log
Midair node view: connection and agent details for a host

Análise estática

Verificar o código através de model checking, interpretação abstrata e solucionadores SMT.

Testes

Verificar que uma frota de dispositivos e hosts funciona como esperado no produto inteiro.

Tempo de execução

Verificar que cada dispositivo e host faz aquilo que se espera dele.

Já ouviu que a IA corrige depressa os bugs de segurança. Não ouviu quantos acrescenta.

Patch da IArx.c retorno do buffer local corrigido
#include <linux/slab.h>
#include <linux/skbuff.h>
 
const uint8_t *read_packet(struct sk_buff *skb, size_t len)
uint8_t *read_packet(struct sk_buff *skb, size_t len)
{
    uint8_t buf[64];
    if (len > sizeof(buf))
        len = sizeof(buf);
    uint8_t *buf;
    /* called from softirq / RX path */
    buf = kmalloc(len, GFP_KERNEL);Visao: pode dormir no caminho RX
    if (!buf)
        return NULL;
    memcpy(buf, skb->data, len);TS Factory: lê além do pacote → 3 testes falham (quando len > skb->len)
    return buf;Delta: buf nunca é libertado por quem chama
}
Corrigidos 1 Acrescentados ?

A criar testes avançados sozinho? Sim, e isso é pura magia.

gateway/src/handler.rs
pub fn handle(ctx: &Ctx, req: &Request) -> Result<Response> {    let peer = req.peer;    ctx.auth.bearer(&req.token)?;               // authorization    ctx.limiter.check(peer)?;                   // rate limit    verify_md5(&req.frame, req.checksum)?;      // checksums    let sock = mptcp_connect(peer)?;            // MPTCP    ctx.link.delay(Duration::from_millis(80));  // link delay    ctx.router.dispatch(peer, sock)}
Execução gateway Testes multiutilizador Teste de flood Teste de corrupção de tramas Teste multicaminho Perfis Wi-Fi Modelação de tráfego

Analise o código como um atacante. Em tempo real, dentro do seu agente de IA.

agente de IA

> Implementa suporte para palavras-passe de uso único. Verifica que está matematicamente correto.

uint32_t hotp(const uint8_t *secret, size_t len, uint64_t counter) {    uint8_t msg[8];    for (int i = 7; i >= 0; --i) { msg[i] = uint8_t(counter); counter >>= 8; }     uint8_t mac[20];    hmac_sha1(secret, len, msg, sizeof msg, mac);     int off = mac[19] & 0x0f;    uint32_t bin = (mac[off] << 24) | (mac[off + 1] << 16) |                   (mac[off + 2] << 8) | mac[off + 3];    return bin % 1000000;} bool verify(const uint8_t *secret, size_t len, uint64_t counter,            const char *code) {    char want[7];    std::snprintf(want, sizeof want, "%06u", hotp(secret, len, counter));     char got[7];    std::strncpy(got, code, sizeof got);    return std::strcmp(got, want) == 0;}
visao -- otp.cpp

otp.cpp:20:20 error arithm/integer/overflow MISRA 12.4

Possível transbordo de inteiro

mac[off] é promovido a int, por isso o bit 31 é o bit de sinal. A RFC 4226 §5.4 manda mascarar o byte com 0x7f antes do deslocamento; sem a máscara o deslocamento é indefinido e cerca de metade dos contadores produz um código que nenhum autenticador padrão aceita.

fix(mac[off] & 0x7f) << 24

otp.cpp:31:5 error cpp/string/no_null_terminator MISRA 21.17

O buffer pode ficar sem terminador nulo

strncpy não escreve o NUL final quando a origem atinge o limite de tamanho. Se o código submetido tiver sete ou mais caracteres, got fica sem terminador e o strcmp seguinte lê para lá do buffer. O código é enviado por quem se está a autenticar.

fixgot[sizeof got - 1] = '\0';

2 problemas · o ficheiro compila sem avisos

Não confie às cegas. Execute. Recolha provas.

delta --ports --fingerprint /etc --binaries /usr/bin --cfg norm.json 0

Ports:

- tcp 0.0.0.0:22 LISTEN (pid=412 sshd)

- tcp 0.0.0.0:443 LISTEN (pid=980 nginx)

- udp 0.0.0.0:123 LISTEN (pid=377 ntpd)

- tcp 0.0.0.0:2375 LISTEN (pid=1544 dockerd)

Persistence files:

- [systemd] /etc/systemd/system/agent.service mode 0644 uid 0

- [cron] /etc/cron.d/backup mode 0666 uid 0

- [profile] /etc/profile.d/env.sh mode 0644 uid 0

Binaries:

- /usr/bin/agent [aarch64 64-bit LE pie] libc=musl cc="gcc 12.2.0"

- /usr/bin/updater [aarch64 64-bit LE pie] libc=musl cc="gcc 12.2.0"

Binary hardening: NX 2/2, PIE 2/2, RELRO 2/2 (full 1), canary 1/2, fortify 0/2; 0 static, 0 stripped

Check failed

Violações

port high

Open port 2375 (tcp) does not match any policy rule

esperadomatching port-norm rule

obtidono matching rule (port/proto/state/process)

persistence critical ATT&CK T1053.003

Persistence file '/etc/cron.d/backup' (cron) is world-writable

esperadonot world-writable

obtidoworld-writable

hardening medium ATT&CK T1055

Binary '/usr/bin/agent' lacks required mitigation: stack canary

esperadostack canary

obtidomissing

Found 3 violation(s)

Análise estática, testes e execução. Uma plataforma: o Midair.

TS Factory Visao Delta
Painel do Midair com o mapa do projeto Vision do Midair: as ocorrências a tratar

Tecnologias suportadas. Da sonda JTAG à frota de dispositivos.

E a melhor parte: o conjunto de testes é seu.

O conjunto de testes e tudo o que está por baixo dele é código aberto. O Test Environment tem a licença Apache 2.0. Os módulos do TS Factory têm a licença MIT.

Isto vale também no plano gratuito Community.

  • Apache 2.0Test Environment
  • MITmódulos TS Factory
  • €0plano Community

Os nossos clientes trabalham em setores diferentes.

Equipamento de rede numa bancada

Equipamento de rede

Um router Wi-Fi é uma pilha completa: o bootloader U-Boot, o firmware e a gestão na cloud. Construímos tudo, testamos a segurança e dizemos o que corrigir. O suporte continua depois do lançamento.

MPTCP · Wi-Fi mesh · SFP

Um relógio inteligente com dados de treino, no pulso de quem descansa depois do exercício

Wearables e smartphones

Um wearable ou um telemóvel precisa de hardware e software que encaixem um no outro. Desenhamos os dois, desde a escolha da plataforma até todo o software.

Wi-Fi · BLE · protocolos de rede

Corredor de um centro de dados

Servidores de alto desempenho

Rust e C++ são as nossas linguagens para servidores. A velocidade e a segurança vêm primeiro no desenho.

Rust · C++

Monitores numa secretária de escritório, um deles com código

Ferramentas para programadores

Desenvolvemos linguagens de programação e ajudamos a afinar o seu desenho. As ferramentas de análise estática e dinâmica e os depuradores vêm da mesma equipa.

compiladores · análise estática · depuradores

Uma janela de terminal numa linha de comandos de root

Segurança e engenharia inversa

Há sistemas que têm de ser seguros, seja qual for o setor, e são esses que construímos. As VPNs têm atenção especial. A engenharia inversa ética é outra opção.

VPN · engenharia inversa

Um telemóvel com o gráfico do preço da Bitcoin, ao lado de duas moedas

Blockchain

O nosso trabalho em blockchain cobre provas de conhecimento zero e o desenvolvimento de clientes. As toolchains para RISC-V e para a zkVM fazem parte disso.

zk · RISC-V · zkVM

NDA Programadores de routers Wi-Fi
NDA Empresas de blockchain
NDA Criadores de ferramentas para programadores

Ajudamos equipas a desenvolver e testar software seguro nestes setores.

Saber mais

Comece no nível que o seu projeto precisa.

Para começar

Community

€0

Corra o Visao e o TS Factory numa instância partilhada e analise as ocorrências.

O plano Community inclui
  • Instância partilhada
  • Execução do Visao e do TS Factory na instância partilhada, por ordem de fila
  • Análise das ocorrências
  • Suporte da comunidade
  • Geração de testes através de uma skill externa
Mais popular

Pro

€90por mês

Uma instância Midair própria para a equipa, com o Delta, o MCP e análise dos resultados com IA.

Tudo do Community, mais
  • Instância dedicada numa região adequada
  • Suporte de nós externos
  • Vários utilizadores
  • Equipas e permissões de acesso
  • Suporte de Model Context Protocol (MCP)
  • Monitorização em tempo de execução com o Delta
  • Geração automática de testes na interface e através do MCP
  • Análise dos resultados com IA, com ligação cruzada entre resultados
  • Suporte por email
Recomendado

Business

€990por mês

Acrescente análise de SBOM e de vulnerabilidades e instâncias auto-alojadas.

Tudo do Pro, mais
  • Análise de SBOM (lista de materiais de software)
  • Análise de vulnerabilidades com base de dados
  • Instâncias auto-alojadas
  • Suporte prioritário
Para ambientes complexos

Enterprise

Sob medida

Adapte o Midair a um ambiente de grande escala, embebido ou regulado.

Tudo do Business, mais
  • Utilizadores ilimitados
  • Regras Visao personalizadas
  • Integrações personalizadas
  • Fluxos de trabalho e relatórios específicos do projeto
  • Integração personalizada de fluxos de IA
  • Suporte de engenharia dedicado

Os preços não incluem IVA, que acrescentamos quando se aplica.

Uma equipa pequena. Com base em ciência.

Trabalhamos em compiladores, testes distribuídos, sistemas embebidos, redes, engenharia de software e design de produto.

Notas do nosso trabalho. Escritas por quem o faz.