Служба производительности Windows 11 – шпионское ПО? Результаты реверс-инжиниринга

377 комментарии
Диагностическая служба Windows обладает широкими возможностями, однако, судя по результатам анализа, она предназначена для выявления проблем с производительностью, а не для слежки за пользователями

В последние месяцы Windows 11 часто критикуют за проблемы с производительностью. Недовольство пользователей усилилось после того, как они обнаружили работающую в фоновом режиме службу Windows Health and Optimized Experiences. Однако новый подробный анализ показал, что эта служба устроена гораздо сложнее, чем можно предположить по её относительно простому назначению.

Реверс-инженер Сюшэн Ли (Xusheng Li) решил подробнее изучить whesvc – службу, отвечающую за работу Windows Health and Optimized Experiences. Поводом стало распространившееся ранее заявление о том, что Microsoft якобы добавила в Windows службу, которая отслеживает загрузку процессора, температуру компонентов и состояние аккумулятора, а затем каждые 15 минут отправляет собранные данные компании.

Пост в X с утверждением, что Windows 11 отправляет данные в Microsoft каждые 15 минут Пост, с которого началось обсуждение: службу нашли в списке «Службы» и приняли за слежку. Изображение: X/@x1lly

Как ранее объяснял инженер Microsoft Скотт Хансельман (Scott Hanselman), в действительности служба предназначена для точечной диагностики производительности. Она записывает необходимые данные, когда Windows обнаруживает замедление или нестабильную работу системы. Собранные трассировки хранятся локально, а пользователь может отправить их через приложение «Центр отзывов». Исследование Ли в целом подтверждает это объяснение, но также показывает, что Microsoft реализовала этот механизм неожиданно сложным и продуманным образом.

Ответ Скотта Хансельмана из Microsoft о назначении службы Хансельман указал, где именно Windows хранит трассировки – в папке %SystemRoot%\Temp\DiagOutputDir\Whesvc. Изображение: X/@shanselman

Анализ службы

Сама служба whesvc имеет довольно небольшой размер. Основная функциональность сосредоточена в библиотеке windiag.dll, в которую встроен интерпретатор языка сценариев Lua 5.4.7. Microsoft также поставляет библиотеку whesvc_assets.dll, содержащую 84 скомпилированных Lua-скрипта для различных сценариев диагностики.

Свойства службы Windows Health and Optimized Experiences в оснастке «Службы» Служба запускается через svchost.exe с ключом -k whesvc и стартует автоматически с отложенным запуском

Именно здесь начинаются наиболее интересные детали. Ли выяснил, что скриптовый движок предоставляет доступ к 79 нативным функциям. Благодаря им сценарии Microsoft могут использовать неожиданно широкий набор возможностей Windows. Например, служба способна:

  • читать и изменять реестр Windows;
  • выполнять произвольные операции с файлами;
  • создавать процессы и взаимодействовать с ними;
  • обращаться к WMI – инструментарию управления Windows;
  • собирать трассировки Event Tracing for Windows (ETW);
  • проверять маркеры безопасности;
  • получать сведения об энергопотреблении и температуре компонентов;
  • загружать отладочные символы;
  • создавать файлы .cab и даже отправлять HTTP-запросы.

Кроме того, в движке предусмотрен универсальный интерфейс внешних функций (FFI), который позволяет скриптам взаимодействовать с нативными DLL-библиотеками и различными дескрипторами Windows. Таким образом, по крайней мере технически, лежащий в основе службы механизм обладает значительно более широкими возможностями, чем, на первый взгляд, требуется обычному средству диагностики производительности.

Как возможности службы используются на деле

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

Работа с реестром в основном нужна для сохранения собственных счётчиков службы между перезапусками. Модуль сбора сведений о драйверах может изменять параметры средства проверки драйверов Windows Driver Verifier. Однако эта функция активируется только при наличии специальной переменной окружения и используется механизмом мониторинга памяти. По мнению Ли, это, пожалуй, самое серьёзное вмешательство со стороны whesvc.

Один из скриптов запускает штатную утилиту Microsoft powercfg.exe, чтобы сформировать отчёт Sleep Study о работе системы в режиме ожидания. Другой сценарий вызывает wpr.exe для объединения трассировок, собранных средством Windows Performance Recorder.

Что умеют диагностические скрипты

Сами диагностические скрипты также реализованы достаточно сложно. Служба может записывать трассировки, когда приложения перестают отвечать, отслеживать задержки ввода и сбои изображения, выявлять программы с длительным запуском и обнаруживать службы, которые надолго зависли в состоянии ожидания. Модули диагностики энергопотребления способны устанавливать причины чрезмерного разряда аккумулятора, определять, что помешало компьютеру перейти в спящий режим, и реагировать на продолжительное повышенное энергопотребление.

Например, модуль memory_handle_leak предназначен для диагностики утечек памяти. Он отслеживает объём используемой памяти и количество дескрипторов на протяжении нескольких интервалов, а затем анализирует последовательный рост показателей и наклон линии линейной регрессии. Это позволяет отличить возможную утечку памяти от обычного увеличения потребления ресурсов.

Насколько надёжно ограничена служба

Ли отдельно разобрал, что мешает скриптам выйти за рамки диагностики. Песочница Lua удаляет из окружения debug, require, os, load и другие глобальные функции – после этого сценарий уже не может подгрузить код, которого нет в подписанной библиотеке. Но библиотека io из списка не убрана, а io.popen намеренно оставлен под именем io_popen: через него запускается wpr.exe. Подпись самой whesvc_assets.dll при загрузке не проверяется вовсе.

На деле границы держит разрешение на файл: полный доступ к whesvc_assets.dll есть только у TrustedInstaller, остальные – включая SYSTEM и администраторов – могут его лишь читать и выполнять. Заменить библиотеку способен только тот, кто и так администратор.

Одна уязвимость в службе уже нашлась: CVE-2025-59241, локальное повышение привилегий с оценкой CVSS 7.8. Microsoft закрыла её в сборках 26100.6899 и 26200.6899 в октябре 2025 года.

Уходят ли данные в Microsoft

Модуль system_summary формирует упомянутую ранее сводку в формате JSON за 900 секунд, или 15 минут, однако сохраняет её локально. Хотя служба технически умеет работать с сетью, Ли не обнаружил ни одного сценария, который действительно отправлял бы произвольные HTTP-запросы. Единственный адрес, найденный во всех 84 скриптах, – это публичный сервер отладочных символов Microsoft, причём в обычной розничной версии Windows эта функция отключена.

Реверс-инженер специально искал что-либо подозрительное, но ничего подобного не обнаружил. Служба не записывает экран и не отправляет диагностические данные в Microsoft автоматически, как утверждалось ранее.

Таким образом, Microsoft создала универсальный механизм системной диагностики, который работает с правами SYSTEM. Он обладает широкими возможностями – от изменения реестра и выполнения файловых операций до запуска процессов и исполнения нативного кода. Поставляемые вместе со службой скрипты используются исключительно для диагностики производительности, хотя лежащий в её основе механизм умеет значительно больше, чем требуется для этой задачи. Однако само по себе это не делает службу «шпионским ПО».

С полным техническим анализом можно ознакомиться в блоге Сюшэна Ли.

Автор:
Комментарии и отзывы

Нашли ошибку?

Новое на сайте