Запечатанный конверт с расколотой восковой печатью, разрезанной скальпелем. Из разорванного конверта вытекает лента с IL-кодом .NET-сборки.


Microsoft оценила вероятность эксплуатации CVE-2026-45659 как "Exploitation Less Likely". Через 40 дней CISA маркировала active exploitation и дала федеральным агентствам три дня на патч. Между этими двумя событиями - открытое окно, в которое влезли все желающие.

За первую половину 2026 года Microsoft закрыла четыре RCE-уязвимости в on-premises SharePoint Server. Три из четырёх - десериализация (CWE-502). Это не случайность, это системная проблема десериализационной поверхности, до которой у вендора руки доходят реактивно.

Бизнес-логика атаки: зачем атакующему SharePoint RCE уязвимость​

SharePoint в корпоративной сети - перекрёсток: Active Directory, SQL Server, файловые хранилища, workflow-интеграции, внутренние wiki. Для атакующего удалённое выполнение кода SharePoint означает:
  • Initial access через Exploit Public-Facing Application (T1190), если ферма торчит через reverse proxy или напрямую в интернет
  • Доступ к корпоративным данным через SharePoint (T1213.002) - документы, переписка, workflow
  • Lateral movement через service accounts, которые SharePoint использует для взаимодействия с AD и SQL Server
  • Persistence через web shell (T1505.003) в служебных директориях SharePoint
Группировка Storm-2603, по данным Microsoft Incident Response (опубликовано The Hacker News), эксплуатирует уязвимости on-premises SharePoint для развёртывания ransomware Warlock с середины 2025 года. В задокументированном расследовании атакующие зашли через скомпрометированный SharePoint, создали локальные и доменные административные учётные записи, развернули Cloudflare tunneling, Zoho Assist и SSH через Visual Studio Code, а затем подавили endpoint-защиту уязвимым драйвером NSecKrnl.sys. Полная цепочка - от initial access до ransomware deployment - через один скомпрометированный SharePoint.

Анатомия CVE-2026-45659: десериализация SharePoint как эксплойт-вектор​

1783620509216.webp

CWE-502 в .NET-стеке SharePoint​

CVE-2026-45659 - десериализация небезопасных данных (CWE-502: Deserialization of Untrusted Data). По определению MITRE CWE, "продукт десериализует недоверенные данные без достаточной проверки того, что результат будет валидным". Последствия по CWE: Integrity - Modify Application Data; Availability - DoS: Resource Consumption (CPU); Other - Varies by Context.

По текущей классификации OWASP Top 10 небезопасная десериализация входит в категорию A08 - Software and Data Integrity Failures. CWE-502 - дочерний тип CWE-913 (Improper Control of Dynamically-Managed Code Resources), что указывает на корень проблемы: неконтролируемое создание объектов на основе внешних данных.

В .NET-стеке SharePoint ситуация хуже, чем в среднем по больнице. SharePoint - масштабное ASP.NET-приложение с кучей endpoint'ов, принимающих сериализованные данные: ViewState, workflow-объекты, кеширование, remoting. Когда один из таких endpoint'ов десериализует объект без ограничений на допустимые типы, атакующий формирует payload с gadget chain - последовательностью легитимных .NET-классов, которые при десериализации выполняют произвольный код через callback'и и конструкторы. Как отмечает Indusface: "individually, these classes are harmless and commonly used, which makes them difficult to detect or block. However, when chained together within a malicious payload, they enable arbitrary code execution.""По отдельности эти классы безвредны и широко используются, что затрудняет их обнаружение или блокировку. Однако, будучи объединены в цепочку вредоносных программ, они позволяют выполнять произвольный код."

Ключевое из CVSS-вектора CVE-2026-45659 (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H):
  • AV:N - атака по сети
  • AC:L - низкая сложность
  • PR:L - нужны минимальные привилегии (Site Member)
  • UI:N - действие пользователя не требуется
  • C:H/I:H/A:H - полный impact на конфиденциальность, целостность и доступность
CISA SSVC: exploitation active, automatable no, technical impact total. Решение: Act - патчить немедленно.

В январе закрыта CVE-2026-20963, и разница критична:

ПараметрCVE-2026-45659CVE-2026-20963
CVSS8.8 (HIGH)9.8 (CRITICAL)
CWECWE-502CWE-502
АутентификацияPR:L (Site Member)PR:N (без аутентификации)
Automatable (CISA)НетДа
EPSS (30 дней)0.0322 (86.7 percentile)0.3111 (Top 5%)
CISA KEV01.07.202618.03.2026

CVE-2026-20963 - неаутентифицированная RCE с CVSS 9.8 и automatable=yes. Массовое сканирование - вопрос времени (точнее, оно уже идёт). EPSS этой CVE - в Top 5% по вероятности эксплуатации среди всех CVE в базе.

PR:L у CVE-2026-45659 на практике не спасает: учётные записи с Site Member-доступом к SharePoint - это сотрудники, подрядчики, сервисные аккаунты, забытые accounts на legacy-сайтах. В типичной корпоративной среде таких - сотни.

Четыре SharePoint RCE за полгода - паттерн, а не совпадение.

Fingerprinting SharePoint-фермы при пентесте​

[Применимо: внешний и внутренний пентест, black/grey box]

Прежде чем проверять применимость CVE-2026-45659 SharePoint RCE, нужно установить версию фермы. Уязвимы все build-версии ниже:

ПродуктФиксированный buildKB
SharePoint Enterprise Server 201616.0.5552.1002KB5002868
SharePoint Server 201916.0.10417.20128KB5002870
SharePoint Server Subscription Edition16.0.19725.20280KB5002863

SharePoint Online (Microsoft 365) не затронут - уязвимость только в on-premises.

Методы определения версии:

HTTP-заголовки. SharePoint отдаёт заголовок MicrosoftSharePointTeamServices в HTTP-ответе. Запрос curl -sI https://sharepoint.target.local | grep -i microsoftsharepoint покажет build-номер фермы - заголовок присутствует в любом ответе, включая страницы аутентификации. Это первое, что стоит проверить - до сканирования портов, до fingerprint'а сервисов.

API-вызов. При наличии Site Member-доступа: curl -s -H "Accept: application/json" https://sharepoint.target.local/_api/web возвращает JSON с метаданными фермы.

Nmap NSE. Скрипт http-sharepoint-diag автоматизирует сбор build-номера. Для массового сканирования: nmap -p 80,443 --script http-sharepoint-diag <target_range>.

Полученный build сравнивается с таблицей выше. Если ниже - вектор готов.

Эксплуатация CVE-2026-45659: цепочка от Site Member до RCE​

1783620539024.webp

Требования к окружению​

Для воспроизведения в лабораторных условиях:
  • ОС: Windows Server 2019/2022 с SharePoint Server 2019 ниже build 16.0.10417.20128
  • RAM: минимум 16 ГБ (SharePoint требует от 12 ГБ для одноузловой фермы)
  • Backend: SQL Server 2017+
  • Учётная запись: Site Member на любом site collection
  • Инструменты: Burp Suite для перехвата трафика, ysoserial.net для генерации .NET gadget chain payload'ов, dnSpy или ILSpy для реверса .NET-сборок SharePoint

Цепочка десериализации SharePoint​

Публичных PoC-эксплойтов с полной рабочей цепочкой на момент написания нет. Penligent подтверждает: "There is not enough public evidence to responsibly claim a specific endpoint, payload format, or exploit chain.""В открытом доступе недостаточно доказательств, чтобы с уверенностью заявить о конкретной конечной точке, формате полезной нагрузки или цепочке эксплойтов."

Концептуальная цепочка атаки:
📚 Часть контента скрыта. Этот материал доступен участникам сообщества с рангом One Level или выше
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме

Kill chain position: Initial Access (T1190) -> Execution (через десериализацию) -> Persistence (T1505.003) -> Privilege Escalation (T1068).

Когда техника НЕ работает​

  • SharePoint Online / Microsoft 365 - уязвимость отсутствует
  • Build равен или выше фиксированного - десериализационный путь закрыт патчем
  • AMSI включён в Full Mode - сканирует .NET Assembly.Load() и блокирует ряд gadget chain'ов
  • WAF с deep inspection сериализованных объектов - редкость в enterprise, но способен блокировать payload
  • Ротация ASP.NET machine keys + перезапуск IIS (iisreset.exe) после патча - инвалидирует ViewState-based payload'ы (рекомендация CERT-EU)

Post-exploitation: lateral movement после десериализации SharePoint​

[Применимо: внутренний пентест, grey box; после успешного RCE]

Получив выполнение кода на SharePoint-сервере, атакующий работает в контексте w3wp.exe. Дальше - стандартная пост-эксплуатация, но с нюансами SharePoint-среды.

Credential harvesting. Service accounts SharePoint хранят токены для SQL Server, AD, внешних API. Через прямой доступ к web.config и конфигурационным файлам извлекаются connection strings. PowerShell (T1059.001) - типичный инструмент на этом этапе, но именно он генерирует максимум алертов (подробнее - в разделе про детекцию).

Pivoting в Active Directory. Если SharePoint-сервис работает от доменного аккаунта (а это стандартная конфигурация), его credentials пригодны для Kerberoasting или Pass-the-Hash. На реальных пентестах я неоднократно видел, что service account SharePoint обладает правами, которые значительно превышают необходимые - вплоть до Enterprise Admin в отдельных legacy-средах, где права не пересматривались годами. Звучит дико, но встречается чаще, чем хотелось бы.

Ingress Tool Transfer (T1105). Загрузка C2-агента (Cobalt Strike beacon, Sliver implant) или web shell для устойчивого доступа. ASPX web shell в директории /_layouts/15/ визуально не выделяется на фоне легитимных файлов SharePoint - там и так десятки .aspx-страниц, ещё одна не бросается в глаза.

Обнаружение атак SharePoint: артефакты и SIEM-правила​

Артефакты в логах IIS и Windows Event Log​

Ключевой индикатор десериализации SharePoint - аномальные дочерние процессы w3wp.exe. Worker process не должен порождать cmd.exe (T1059.003), powershell.exe (T1059.001), certutil.exe (T1105, T1140, T1027.013), csc.exe (T1127). Любой такой процесс - критический алерт. Без исключений.

Windows Security Event ID 4688 (Process Creation) с включённым аудитом command line фиксирует эту активность:
Код:
Get-WinEvent -FilterHashtable @{
    LogName = 'Security'; Id = 4688
} | Where-Object {
    $_.Properties[13].Value -match 'w3wp\.exe' -and
    $_.Properties[5].Value -match '(cmd|powershell|certutil)'
} | Select-Object TimeCreated, @{N='Child';E={$_.Properties[5].Value}}
Дополнительные сигналы: аномальные POST-запросы к /_layouts/15/ с нестандартным Content-Type или объёмом тела в IIS-логах; ошибки TypeLoadException или SerializationException в SharePoint ULS-логах (верный признак неудачной попытки десериализации); новые .aspx файлы в директориях SharePoint - вероятные web shell'ы.

Sigma-правила обнаружения SharePoint десериализации​

YAML:
title: SharePoint w3wp.exe Suspicious Child Process
logsource:
    product: windows
    service: security
detection:
    selection:
        EventID: 4688
        ParentProcessName|endswith: '\w3wp.exe'
        NewProcessName|endswith:
            - '\cmd.exe'
            - '\powershell.exe'
            - '\certutil.exe'
            - '\csc.exe'
    condition: selection
level: high
Детекция по вендорам. CrowdStrike Falcon детектит spawn chain w3wp.exe -> cmd.exe/powershell.exe из коробки с Prevention Policy на moderate и выше. SentinelOne аналогично реагирует на дочерние процессы IIS worker. Elastic 8.x+ с endpoint-агентом и kernel ETW-TI перехватывает PowerShell (T1059.001) на уровне telemetry provider - стандартный PowerShell-загрузчик неэффективен, атакующему придётся использовать inline .NET Assembly.Load() или unmanaged code.

Для red team / OPSEC: если на SharePoint-сервере стоит endpoint-агент, подход "десериализация -> cmd.exe -> whoami" - мгновенный алерт. Минимизация detection footprint: выполнение in-process через gadget chain без порождения дочерних процессов. Obfuscated Files or Information (T1027) и Deobfuscate/Decode (T1140) - тактики сокрытия payload'а от статического анализа. На практике - если видишь CrowdStrike на таргете, классическую цепочку можно даже не пробовать.

Ограничения и контекст применения CVE-2026-45659​

ФакторВлияние на эксплуатацию
SharePoint OnlineНе затронут - только on-premises
Patched buildsДесериализационный путь закрыт
AMSI Full ModeБлокирует Assembly.Load() в большинстве gadget chain
CrowdStrike Falcon / SentinelOneДетект child process spawn от w3wp.exe
Elastic 8.x+ (ETW-TI)Kernel-level перехват PowerShell-выполнения
WAF (deep inspection)Блокировка .NET-объектов в теле запроса
Ротация machine keysИнвалидация ViewState-payload'ов
Network segmentationОграничение lateral movement

На внешнем пентесте CVE-2026-45659 актуальна при условии доступности SharePoint через reverse proxy и наличия валидных credentials. На внутреннем - типичный вектор при grey box с выданными low-privilege учётными данными домена: Site Member на SharePoint часто наследуется от доменного членства. Получил доменную учётку уровня "сотрудник" - с высокой вероятностью уже Site Member на корпоративном SharePoint.

CERT-EU помимо установки патча CVE-2026-45659 рекомендует: развернуть EDR на SharePoint-серверах, включить AMSI в Full Mode, ротировать ASP.NET machine keys и провести compromise assessment на internet-facing активах. Рекомендации основаны на опыте эксплуатационной кампании против SharePoint 2025 года (advisory CERT-EU 2025-027).

Десериализационная поверхность атаки SharePoint Server системно недооценена. Microsoft оценила CVE-2026-45659 как "Exploitation Less Likely" - через 40 дней CISA маркировала active exploitation. С CVE-2026-20963 та же история: вендор говорит Important, реальность показывает Critical с EPSS в Top 5%. Для пентестера вывод прямой: обнаружил on-premises SharePoint в скоупе - build-номер через HTTP-заголовок MicrosoftSharePointTeamServices первым запросом, до fingerprint'а портов. Build ниже фиксированного - вектор готов, а Site Member в корпоративном SharePoint - это значительная часть сотрудников. Microsoft движется к cloud-first, on-premises фермы остаются на поддержке без активного развития security-модели, и gap между оценкой вендора и находками исследователей растёт. Формула на бумаге понятна, но десериализационные цепочки .NET по-настоящему чувствуются только когда сам прогоняешь payload через gadget chain на живом стенде - web-категория на HackerLab.pro (https://hackerlab.pro) покрывает схожие сценарии.
 
Последнее редактирование модератором:
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Похожие темы

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🧭 Навигатор · ИБ 2026
Не знаешь, какой трек твой?
5 направлений ИБ, реальные зарплаты и точка входа для каждого — в одном треде.
JuniorSenior+
100K → 600K+ ₽ /мес
Открыть навигатор →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab