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
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.
#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 }
A criar testes avançados sozinho? Sim, e isso é pura magia.
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)}
Analise o código como um atacante. Em tempo real, dentro do seu 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;}
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.
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.
Tecnologias suportadas. Da sonda JTAG à frota de dispositivos.
- eBPF
- TLS
- IPv6
- DPDK
- DHCP
- WireGuard
- iSCSI
- TCP/IP stack
- VXLAN
- HTTP
- Open vSwitch
- NETCONF
- TR-069 (CWMP)
- MQTT
- NVMe
- QUIC
- SMB
- VLAN
- netem
- nginx
- SNMP
- Network namespaces
- 802.1X / EAP
- IGMP
- RADIUS
- OpenVPN
- RESTCONF
- Geneve
- Linux tc
- CoAP
- UPnP
- Multicast
- Link aggregation
- ARP
- ethtool
- Bridging and STP
- L2TP
- HAProxy
- packetdrill
- RDMA
- iptables
- pcap
- XDP
- netperf
- ASN.1
- IPsec
- GRE
- PPPoE
- TRex
- Modbus TCP
- DNS
- HTTP/3
- SSH
- CUPS
- IPP
- OpenSSL
- NTP
- Unbound
- DHCPv6
- Samba
- DLNA
- SOCKS
- RSS
- TFTP
- SR-IOV
- ICMPv6
- LACP
- DTLS
- radvd
- iperf3
- strongSwan
- TBF shaping
- Energy-Efficient Ethernet
- ipvlan
- FTP
- iperf
- vtund
- SSDP
- Telnet
- LDAP
- Mosquitto
- macvlan
- PTP
- PPP
- NAT
- libmodbus
- switchdev
- veth
- dnsperf
- wrk
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
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.
- OpenWRT
- Sistemas de build personalizados
- Kernel
- Drivers
- DPDK e TRex
- U-Boot
- Implementações de túneis
- Aceleradores de rede em hardware
- MPTCP
- Wi-Fi
- Wi-Fi mesh
- Quase todos os protocolos de rede comuns
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.
- Portar o Android para novas plataformas
- Wearables em Atmel, Microchip, Nordic nRF, ESP32 e outras plataformas
- Portar o U-Boot
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.
- Portais de gestão na cloud para equipamento de rede
- Sistemas de alta carga para análise e testes
- DPDK e aceleração de tráfego de rede
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.
- Analisadores e verificações personalizadas para projetos
- IDEs completos, criados de raiz
- Compiladores
- Desenho e implementação de novas linguagens de programação
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.
- Engenharia inversa de plataformas não documentadas baseadas em Windows, Windows Mobile, Windows Phone e Android
- Análise de malware
- Resposta a incidentes
- Red teaming
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.
- Otimização do desempenho de clientes
- Desenvolvimento de zkVM
- Compiladores e toolchains personalizados
Interpretica
Contacte-nos
Descreva o seu sistema e o que precisa de construir, testar ou proteger. Respondemos por email.
Setor
Comece no nível que o seu projeto precisa.
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
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
Business
€990por mês
Acrescente análise de SBOM e de vulnerabilidades, métricas de desempenho da equipa 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
- Análise do desempenho da equipa
- Instâncias auto-alojadas
- Suporte prioritário
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
Notas do nosso trabalho. Escritas por quem o faz.
A investigação por trás do Visao: como o Equid se tornou o nosso analisador estático
Antes de ser um produto, o Visao foi um projeto de investigação chamado Equid. Era uma framework de análise estática independente da linguagem, criada para aproximar os verifica...
Ler o artigoDiário de testes embebidos #2: testes reproduzíveis
Um resultado de teste só tem significado se souber o que mudou entre duas execuções. Veja como funciona a reprodutibilidade nos testes de sistemas embebidos: reinícios, estado d...
Ler o artigo