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.

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.

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

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 avaliação

Free

€0

Explore o Midair num projeto pequeno, num protótipo ou numa avaliação inicial.

O plano Free inclui
  • Análise estática básica
  • Visão geral de dependências
  • Validação limitada de projeto
  • Suporte da comunidade
Mais popular

Professional

€90por utilizador / mês

Ligue a análise, os testes distribuídos e os dados de execução num único fluxo de produção.

Tudo do Free, mais
  • Configuração rápida em cloud
  • Análise estática avançada com o Visao
  • Testes distribuídos com o TS Factory
  • Insights de execução com o Delta
  • Integração CI/CD
  • Integração com fluxos de I&D e assistidos por IA existentes
  • Relatórios automáticos
  • Suporte prioritário
Recomendado

Team

€990por mês

Coordene o Midair em vários projetos e camadas do sistema.

Tudo do Professional, mais
  • Implementação em cloud ou on-premises
  • 10 utilizadores incluídos
  • Análise de dependências entre projetos
  • Dashboards multi-camada
  • Análises de projeto e de equipa
  • Onboarding dedicado do projeto
Para ambientes complexos

Enterprise

Sob medida

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

Tudo do Team, 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

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.