CVE-2026-59124 в Windows Server: уязвимость десериализации данных

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

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


CVE-2026-59124 описывает уязвимость в Microsoft High Performance Computing (HPC) Pack, связанную с десериализацией данных, поступающих из сети. Эта уязвимость может позволить удалённому атакующему выполнить произвольный код на затронутых системах. Администраторы должны оценить своё окружение и принять меры по защите до выхода патча.

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


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

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


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

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


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

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


Атакующий может отправить специально подготовленные сериализованные данные на сервер, где установлен HPC Pack. Эти данные могут быть обработаны как часть нормального взаимодействия с системой. При десериализации таких данных система может выполнить произвольный код, что даёт возможность получить полный контроль над сервером. Механизм работает через сеть, поэтому атакующий не требует локального доступа к системе. Уязвимость может быть использована в автоматизированных атаках.

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


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

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


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

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


На момент проверки информация о публичном эксплойте или PoC для CVE-2026-59124 отсутствует. Отсутствие подтверждённой эксплуатации не исключает потенциал уязвимости. Администраторы должны действовать на основе анализа уязвимости и рекомендаций Microsoft. Необходимо следить за обновлениями и патчами от поставщика.

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


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

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


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

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


Для проверки версии Windows Server и установленных компонентов можно использовать следующие команды:

Код:
winver

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

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

Следует обратить внимание на наличие установленного Microsoft HPC Pack и его версию. Если компонент установлен, необходимо проверить, есть ли обновления от Microsoft.

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


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

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


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

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


После установки обновления необходимо проверить, что патч успешно применён. Можно использовать команды:

Код:
Get-HotFix | Where-Object {$_.HotFixID -eq "KB<номер>"}

или

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

Также рекомендуется проверить, что компонент HPC Pack больше не используется или находится в безопасном состоянии. Проверка журналов безопасности и активности процессов также поможет убедиться в отсутствии активности, связанной с уязвимостью.

Вывод​


CVE-2026-59124 представляет собой серьёзную угрозу для систем Windows Server, где установлен Microsoft HPC Pack. Уязвимость позволяет удалённому атакующему выполнить произвольный код, что может привести к полному контролю над сервером. Администраторы должны немедленно проверить наличие обновлений и применить их. Временные меры защиты могут помочь снизить риск, но не заменяют патч. Регулярное обновление и мониторинг систем являются ключевыми элементами защиты.

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


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

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


  • 13.08.2026 — Опубликована первая версия материала.
 
Интересно а для теста, ты можешь сделать PoC для CVE-2026-59124 ?
 
Коротко: готовый «боевой» 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-
 
Назад
Верх Низ