Об уязвимости
Уязвимость 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 в Schneider Electric FLM
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 собрано несколько взаимосвязанных компонентов.
- lmadmin.exe — легкий 32-разрядный демон, обслуживающий запросы лицензий от PLC, HMI и SCADA-модулей. При установке этот компонент автоматически регистрируется как Windows-служба lmadminSchneider. Служба запускается автоматически и работает от имени учетной записи
NT AUTHORITY\LOCAL SERVICE. - Конфигурационный файл
openssl.cnfиз подкаталога OpenSSL-contrib. Этот файл может содержать путь к engine-module — DLL-файлу, который FlexNet может загрузить в процесс lmadmin.exe. Путь к конфигурационному файлу жестко задан в коде приложения и выглядит следующим образом:
1C:\cygwin\home\nightly\LMADMI~1.4\tier1\lmadmin\contrib\openssl\_RELEA~1\openssl\openssl.cnf
ЗдесьLMADMI~1.4— это имя директории в формате именования файлов MS-DOS. Любой пользователь, имеющий право создавать каталоги в корнеC:\, может воссоздать эту структуру (по умолчанию такими правами обладают все аутентифицированные пользователи). По умолчанию после установки Schneider Electric FLM такой папки нет. - Упомянутый компонент FlexNet Publisher (ранее — FLEXlm) — библиотека для управления лицензиями, которая при запуске читает конфигурационный файл openssl.cnf и парсит секцию
[engine]. Если в данной секции присутствует параметрdynamic_path, FlexNet Publisher без каких-либо проверок загружает DLL-модуль по пути, указанному в этом параметре. - Веб-портал Schneider Electric FLM — небольшой HTTP-сервер, который встроен в процесс Imadmin.exe и предоставляет доступ к двум разделам: Dashboard (доступен без аутентификации) и Administration (защищен паролем). Поскольку веб-портал и lmadmin.exe работают в одном адресном пространстве, загруженный через FlexNet Publisher код выполняется внутри процесса
lmadmin.exe. Это позволяет злоумышленнику перехватить пароль от раздела Administration и использовать его для развития атаки на другие системы.
Путь эксплуатации
Для эксплуатации уязвимости необходимо, чтобы атакующий имел возможность выполнять произвольный код в локальной системе, где установлен уязвимый сервис. Основной недостаток, который использует злоумышленник, заключается в том, что в типовой конфигурации Windows NTFS права на корень системного диска могут позволять группе Authenticated Users создавать новые каталоги. Если эти права доступа (ACL) не были ограничены, злоумышленник без административных привилегий может воссоздать путь, который lmadmin.exe использует при поиске OpenSSL-конфигурации:
|
1 |
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. Это может произойти при следующих условиях:
- В результате обычной перезагрузки хоста.
- При наличии у пользователя прав на управление данной службой (по умолчанию такие права отсутствуют для группы Authenticated Users).
В момент запуска службы 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.
Противодействие эксплуатации CVE-2024-2658
- Если в организации не используются плавающие лицензии (floating license), рекомендуется удалить ПО Schneider Electric FLM или не устанавливать его на рабочих станциях, где этот продукт не требуется. По возможности следует использовать лицензии, привязанные к конкретному узлу.
- Schneider Electric FLM необходимо размещать на выделенном сервере с ограниченным доступом пользователей.
- Рекомендуется создать каталог
C:\cygwinс использованием административной учетной записи и запретить группе Authenticated Users доступ на запись в эту директорию. Это ограничит возможность размещения поддельного конфигурационного файла OpenSSL по заданному пути. - Также следует обновить Schneider Electric FLM до версии 3.0.0.0 или выше.
Детектирование решениями «Лаборатории Касперского»
Решение Kaspersky Industrial CyberSecurity успешно обнаруживает эксплуатацию данной уязвимости. Модуль Vulnerability Manager показывает наличие уязвимой версии ПО на рабочей станции, а поведенческий модуль детектирует каждый шаг эксплуатации: от создания вредоносного конфигурационного файла на диске до попытки загрузки вредоносной библиотеки уязвимым сервисом.
В карточке алерта KICS собрана дополнительная информация о попытке эксплуатации уязвимости и рекомендуемых действиях по защите.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
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 обеспечат дополнительный уровень защиты, выявляя подозрительные действия на ранних этапах атаки.








Опасный менеджер лицензий: как уязвимость в софте Schneider Electric создает риск для промышленных предприятий