Анализ CVE-2024-2658 в менеджере лицензий Schneider Electric. Угроза, скрывающаяся во FlexNet Publisher, потенциальное получение привилегий SYSTEM и развитие атаки. Рекомендации по защите.
Уязвимость CVE-2024-2658 была обнаружена в 2024 году в компоненте FlexNet Publisher, используемом в Schneider Electric Floating License Manager. Это ПО применяется для управления лицензиями в продуктах Schneider Electric, которые служат для комплексной автоматизации производства: от программирования промышленных логических контроллеров до создания единых диспетчерских пультов. Далее мы расскажем, как одна уязвимость может стать угрозой для промышленного предприятия, и объясним, как обнаружить ее на рабочих станциях и минимизировать риски.
Проблема относится к классу CWE-427: Uncontrolled Search Path Element. Она возникает из-за того, что системное приложение обращается к конфигурационному файлу OpenSSL по жестко заданному в коде пути, не накладывая на него ограничения доступа.
Эта особенность позволяет локальному пользователю без прав администратора подготовить собственный конфигурационный файл OpenSSL и добиться загрузки сторонней DLL в системный процесс lmadmin.exe — службы, отвечающей за работу лицензирования. В результате код злоумышленника может быть выполнен уже в контексте службы, а не обычного пользователя. При определенных условиях это открывает путь к дальнейшему повышению привилегий до уровня NT AUTHORITY\SYSTEM.
В таком случае злоумышленник может получить полный доступ к локальным конфигурационным файлам, служебным данным и секретам, доступным на данном хосте. Возможность дальнейшего перемещения на другие узлы промышленной сети, например на рабочие станции инженеров, зависит от сетевой связности, наличия сохраненных учетных данных и сетевой архитектуры. Кроме того, атакующий может нарушить работу сервера лицензий, что напрямую влияет на доступность инженерного ПО и операций сопровождения.
Мы разберем, какую роль играет в ПО Schneider Electric Floating License Manager (далее — Schneider Electric FLM) компонент FlexNet Publisher, почему жестко заданный путь к openssl.cnf внутри приложения оказался опасным, как выглядит цепочка эксплуатации уязвимости и какие меры необходимо предпринять.
FlexNet Publisher — это сторонний продукт от компании Flexera Software. Разработчики платформы Schneider Electric FLM и многих других решений встраивают FlexNet Publisher в виде библиотеки для управления лицензированием своих продуктов.
Проблема FlexNet Publisher заключается в том, что вплоть до версии 11.19.6.0 включительно в данной библиотеке не контролировался доступ низкопривилегированных пользователей к файлу openssl.cnf. Это классический пример уязвимости класса Uncontrolled Search Path Element (CWE-427).
Всего внутри Schneider Electric FLM собрано несколько взаимосвязанных компонентов.
NT AUTHORITY\LOCAL SERVICE.
openssl.cnf из подкаталога OpenSSL-contrib. Этот файл может содержать путь к engine-module — DLL-файлу, который FlexNet может загрузить в процесс lmadmin.exe. Путь к конфигурационному файлу жестко задан в коде приложения и выглядит следующим образом:C:\cygwin\home\nightly\LMADMI~1.4\tier1\lmadmin\contrib\openssl\_RELEA~1\openssl\openssl.cnf |
LMADMI~1.4 — это имя директории в формате именования файлов MS-DOS. Любой пользователь, имеющий право создавать каталоги в корне C:\, может воссоздать эту структуру (по умолчанию такими правами обладают все аутентифицированные пользователи). По умолчанию после установки Schneider Electric FLM такой папки нет.[engine]. Если в данной секции присутствует параметр dynamic_path, FlexNet Publisher без каких-либо проверок загружает DLL-модуль по пути, указанному в этом параметре.lmadmin.exe. Это позволяет злоумышленнику перехватить пароль от раздела Administration и использовать его для развития атаки на другие системы.Для эксплуатации уязвимости необходимо, чтобы атакующий имел возможность выполнять произвольный код в локальной системе, где установлен уязвимый сервис. Основной недостаток, который использует злоумышленник, заключается в том, что в типовой конфигурации Windows NTFS права на корень системного диска могут позволять группе Authenticated Users создавать новые каталоги. Если эти права доступа (ACL) не были ограничены, злоумышленник без административных привилегий может воссоздать путь, который lmadmin.exe использует при поиске OpenSSL-конфигурации:
C:\cygwin\home\nightly\LMADMI~1.4\tier1\lmadmin\contrib\openssl\_RELEA~1\openssl\ |
Далее в созданном файле конфигурации openssl.cnf злоумышленник указывает путь к вредоносному engine-модулю, расположенному в доступном для записи каталоге, например, так: dynamic_path = C:\\Users\\public\\malicious.dll. FlexNet Publisher при инициализации OpenSSL обрабатывает эту секцию и, обнаружив параметр dynamic_path, использует его для загрузки подготовленной злоумышленником DLL. Поскольку в уязвимых версиях FlexNet допускается загрузка OpenSSL-конфигурации из изначально отсутствующего и недоверенного расположения, созданный злоумышленником конфигурационный файл принимается процессом lmadmin.exe как легитимный.
Чтобы lmadmin.exe считал файл openssl.cnf и загрузил вредоносную DLL, необходим перезапуск службы lmadminSchneider. Это может произойти при следующих условиях:
В момент запуска службы lmadmin.exe компонент FlexNet Publisher инициализирует OpenSSL, открывает конфигурационный файл openssl.cnf и обрабатывает секцию [engine]. Если в ней указан dynamic_path, OpenSSL загружает соответствующий DLL-модуль в процесс lmadmin.exe. После этого код внутри DLL начинает выполняться в контексте процесса lmadmin.exe. Поскольку служба работает под учетной записью NT AUTHORITY\LOCAL SERVICE, вредоносный код получает привилегии этой службы.
Хотя учетная запись NT AUTHORITY\LOCAL SERVICE имеет значительно ограниченные права, существует риск дальнейшего повышения привилегий. Данный риск связан с тем, что в стандартной конфигурации процесс службы наделен привилегией SeImpersonatePrivilege, которая позволяет процессу перенимать контекст безопасности клиента после аутентификации.
При наличии подходящего сценария взаимодействия через RPC, COM или именованные каналы (named pipe) это может быть использовано для дальнейшей локальной эскалации привилегий до уровня NT AUTHORITY\SYSTEM. Для этого применяются, например, техники семейства Potato и другие методы, основанные на злоупотреблении имперсонацией. Таким образом, несмотря на тривиальность каждого отдельного действия, их совокупность образует полноценную цепочку эксплуатации, от локального низкопривилегированного пользователя до выполнения кода в контексте службы, и, при наличии дополнительных условий, дает возможность повысить привилегии до уровня NT AUTHORITY\SYSTEM.
C:\cygwin с использованием административной учетной записи и запретить группе Authenticated Users доступ на запись в эту директорию. Это ограничит возможность размещения поддельного конфигурационного файла OpenSSL по заданному пути.Решение Kaspersky Industrial CyberSecurity успешно обнаруживает эксплуатацию данной уязвимости. Модуль Vulnerability Manager показывает наличие уязвимой версии ПО на рабочей станции, а поведенческий модуль детектирует каждый шаг эксплуатации: от создания вредоносного конфигурационного файла на диске до попытки загрузки вредоносной библиотеки уязвимым сервисом.
В карточке алерта KICS собрана дополнительная информация о попытке эксплуатации уязвимости и рекомендуемых действиях по защите.
Description The Exploit Prevention component of the EPP application detected attempts to exploit a vulnerability in a protected process. This type of attack may lead to malicious code execution, unauthorized access, or system integrity compromise. EPP application data: ● Object name: C:\Program Files (x86)\Schneider Electric\Floating License Manager\FLEXnet Publisher License Server Manager\lmadmin.exe. ● Status: Untreatable. ● MD5 hash: c3f57667d9e8e1b2375ba09cdf71cac8. ● SHA256 hash: 9dab845704d1999ec8ed089594cfd2173a08057f1caf9a2346c22c81039dbb7a. Mitigations: ● Analyze the event and identify the source of the startup or interaction with the process. ● Make sure that this vulnerability is relevant to your system (check the software version and installed updates). ● If a vulnerability exploit is confirmed, isolate the device and search for signs of compromise (suspicious files and their checksums, unknown processes/services, or queries to external IPs/FQDNs). Also, check for similar traces on other devices. ● Install security updates for the attacked software or operating system, and run a full scan of the device if necessary. |
Также для заблаговременного выявления наличия уязвимости на хосте в рамках непрерывного процесса управления уязвимостями можно воспользоваться задачей OVAL-сканирования в продуктах KICS. На представленном скриншоте показано, как KICS for Nodes обнаруживает уязвимую версию программного обеспечения.
ЗаключениеУязвимость CVE-2024-2658 наглядно демонстрирует, к каким последствиям может привести недостаточный контроль при загрузке файлов зависимостей. В случае Schneider Electric Floating License Manager локальный пользователь без административных прав может создать конфигурационный файл openssl.cnf, расположить его по нужному пути и добиться загрузки вредоносной DLL в контекст службы lmadmin.exe. А при определенной конфигурации системы такая цепочка действий может привести к повышению привилегий до уровня NT AUTHORITY\SYSTEM.
Для устранения уязвимости рекомендуется обновить затронутый компонент (FlexNet Publisher) до исправленной версии. Дополнительно следует ограничить возможность записи непривилегированным пользователям в каталог C:\cygwin. Эти меры существенно снизят риск эксплуатации уязвимости, а решения Kaspersky Industrial CyberSecurity обеспечат дополнительный уровень защиты, выявляя подозрительные действия на ранних этапах атаки.