╔══════════════════════════════════════════════════════════════╗
║ 严重性:严重 │ CVSS: 9.8 │ CWE-120 │ 远程 ║
╚══════════════════════════════════════════════════════════════╝
远程用户无需用户交互或特权即可导致 iOS/iPadOS 系统意外终止或内核内存损坏。
| 字段 | 值 |
|---|---|
| CVE ID | CVE-2026-28858 |
| EUVD | EUVD-2026-15131 |
| 发布时间 | 2026年3月25日 |
| 最后更新 | 2026年3月26日 |
| CVSS v3.1 | 9.8 / 10 — 严重 |
| EPSS | 0.05% |
| 向量 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CWE | CWE-120 — 未检查大小的缓冲区复制 |
| 状态 | 已分析 — 补丁可用 |
Apple iOS 和 iPadOS 中的缓冲区溢出,由内核输入处理时边界检查不足引起。
实际影响:
目前不存在针对 CVE-2026-28858 的公开漏洞利用。以下表示是概念性的,基于 CWE-120 和已记录的攻击向量。
# 溢出的概念性表示
import socket
# 1. 填充分配的缓冲区(内核处理器中通常约 512 字节)
buffer_fill = b"A" * 512
# 2. 覆盖返回地址 — 指向攻击者控制的区域
# 在真实 iOS/iPadOS 中:需要绕过 ASLR + PAC(指针认证码)
return_address = b"\x41\x42\x43\x44"
# 3. Shellcode:NOP sled + 针对 ARM64 的恶意指令
shellcode = b"\x90" * 16 + b"\xeb\x12..." # NOP sled + payload
payload = buffer_fill + return_address + shellcode
# 无需用户交互的远程投递
# 示例:包含被操纵长度字段的网络数据包
import struct
def craft_malicious_packet(target_ip: str, target_port: int):
"""
创建一个格式错误的元数据包,iOS 内核在后台处理该包
(无用户界面)。例如:TLS 证书、图像元数据、网络协议字段。
"""
# 协议的合法头部
header = struct.pack(">HH", 0x0001, 0xFFFF) # type=1, length=OVERFLOW
# 超出内核缓冲区的 payload
malicious_data = header + payload
with socket.socket(socket.AF_INET, socket.SOCK_RAW) as s:
s.sendto(malicious_data, (target_ip, target_port))
[网络/WiFi/蓝牙] → 格式错误的数据包
↓
[iOS 后台进程] → 读取"长度"字段 = 0xFFFF
↓
[memcpy(内核缓冲区, 数据, 0xFFFF)] → 无边界检查
↓
[溢出:shellcode 写入内核栈/堆]
↓
[处理器重定向到攻击者的 return_address]
↓
[以 ring 0 / 内核权限执行]
/* ❌ 易受攻击的代码(补丁前) */
void procesar_entrada(char *datos_usuario, size_t longitud) {
char bufer_kernel[512];
memcpy(bufer_kernel, datos_usuario, longitud); // 无检查
}
/* ✅ 已修复的代码(iOS/iPadOS 26.4) */
void procesar_entrada(char *datos_usuario, size_t longitud) {
char bufer_kernel[512];
// 边界检查 — Apple 应用的修复
if (longitud > sizeof(bufer_kernel)) {
kernel_log("CVE-2026-28858: input truncado [%zu > 512]", longitud);
return; // 复制前中止
}
memcpy(bufer_kernel, datos_usuario, longitud);
}
/* 纵深防御机制:栈金丝雀 */
#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("Intento de desbordamiento bloqueado");
return;
}
memcpy(bufer_seguro, datos_usuario, longitud);
// 复制后验证金丝雀完整性
if (canary != CANARY_VALUE) {
panic("Stack smashing detectado — CVE-2026-28858");
}
}
需要立即采取的行动:
更新至 iOS 26.4 / iPadOS 26.4 或更高版本
2026年3月23日 → 初始发布(EUVD)
2026年3月24日 → 发布 Apple 安全公告 #126792
2026年3月24日 → 检测到首次提及(Feedly)
2026年3月24日 → 自动分析估算 CVSS
2026年3月25日 → NVD 分配 CVSS 9.8 — 严重
2026年3月25日 → 添加到 Qualys 检测(ID: 610773)
2026年3月26日 → 状态:已分析
所有版本低于 26.4 的 iOS 和 iPadOS,包括:
有关受影响 CPE 的完整列表,请参阅参考文档。
| 来源 | URL |
|---|---|
| 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 |
免责声明: 所呈现的代码仅为概念性表示,用于教育和防御性研究目的。目前不存在针对 CVE-2026-28858 的公开漏洞利用。
| 参数 | 值 | 描述 |
|---|
| 攻击向量 | 网络 | 可远程利用 |
| 攻击复杂度 | 低 | 无特殊条件 |
| 所需权限 | 无 | 无需认证 |
| 用户交互 | 无 | 零点击 |
| 影响范围 | 不变 | 仅限于受影响组件 |
| 机密性 | 高 | 完全访问数据 |
| 完整性 | 高 | 可完全修改 |
| 可用性 | 高 | 系统崩溃 |