Sobre a vulnerabilidade
A vulnerabilidade CVE-2024-2658 foi identificada em 2024 no componente FlexNet Publisher, usado no Schneider Electric Floating License Manager. Esse software é utilizado para gerenciar licenças em produtos da Schneider Electric, empregados na automação integrada de processos produtivos, que vão desde a programação de controladores lógicos programáveis (PLC) até a criação de painéis de supervisão centralizados. A seguir, mostramos como uma única vulnerabilidade pode se transformar em uma ameaça para uma empresa industrial, além de explicarmos como detectá-la nas estações de trabalho e minimizar os riscos.
O problema pertence à classe CWE-427: Uncontrolled Search Path Element. Ele ocorre porque o aplicativo do sistema acessa o arquivo de configuração do OpenSSL por um caminho fixo no código, sem impor restrições de acesso a ele.
Essa característica permite que um usuário local sem privilégios administrativos prepare seu próprio arquivo de configuração do OpenSSL e force o carregamento de uma DLL de terceiros no processo do sistema lmadmin.exe, o serviço responsável pelo licenciamento. Com isso, o código do invasor pode ser executado já no contexto do serviço, e não de um usuário comum. Em determinadas condições, isso abre caminho para um escalonamento de privilégios adicional até o nível NT AUTHORITY\SYSTEM.
Nesse caso, o invasor pode obter acesso completo aos arquivos locais de configuração, dados de serviço e segredos disponíveis nesse host. A possibilidade de movimentação lateral para outros nós da rede industrial, como estações de trabalho de engenheiros, depende da conectividade da rede, da existência de credenciais armazenadas e da arquitetura da rede. Além disso, o invasor pode interromper o funcionamento do servidor de licenças, o que afeta diretamente a disponibilidade do software de engenharia e das operações de manutenção.
A seguir, explicamos qual é o papel do componente FlexNet Publisher no software Schneider Electric Floating License Manager (Schneider Electric FLM), por que o caminho fixo para o openssl.cnf dentro do aplicativo se mostrou perigoso, como é a cadeia de exploração da vulnerabilidade e quais medidas devem ser adotadas.
Papel do FlexNet Publisher no Schneider Electric FLM
O FlexNet Publisher é um produto de terceiros da empresa Flexera Software. Os desenvolvedores da plataforma Schneider Electric FLM e de muitas outras soluções incorporam o FlexNet Publisher como biblioteca para gerenciar o licenciamento de seus produtos.
O problema do FlexNet Publisher é que, em todas as versões até a 11.19.6.0, essa biblioteca não controlava o acesso de usuários com privilégios limitados ao arquivo openssl.cnf. Esse é um exemplo clássico de vulnerabilidade da classe Uncontrolled Search Path Element (CWE-427).
Ao todo, o Schneider Electric FLM reúne vários componentes interligados.
lmadmin.exe:daemon leve de 32 bits responsável por atender às solicitações de licença de módulos PLC, HMI e SCADA. Durante a instalação, esse componente é registrado automaticamente como o serviço do Windows lmadminSchneider. O serviço é iniciado automaticamente e executado com a conta NT AUTHORITY\LOCAL SERVICE.
Propriedades do lmadminScheider: executável e contexto de segurança do serviço em execução
- Arquivo de configuração
openssl.cnf, localizado no subdiretório OpenSSL-contrib. Esse arquivo pode conter o caminho para o engine module, uma DLL que o FlexNet pode carregar no processolmadmin.exe. O caminho do arquivo de configuração é fixo no código do aplicativo e tem a seguinte forma:
1C:\cygwin\home\nightly\LMADMI~1.4\tier1\lmadmin\contrib\openssl\_RELEA~1\openssl\openssl.cnf
Aqui,LMADMI~1.4é o nome do diretório no formato de nomenclatura de arquivos do MS-DOS. Qualquer usuário com permissão para criar diretórios na raiz deC:\pode recriar essa estrutura (por padrão, todos os usuários autenticados possuem essa permissão). Por padrão, essa pasta não existe após a instalação do Schneider Electric FLM. - O componente FlexNet Publisher mencionado (antigo FLEXlm) é uma biblioteca de gerenciamento de licenças que, ao ser iniciada, lê o arquivo de configuração
openssl.cnfe analisa a seção[engine]. Se essa seção contiver o parâmetrodynamic_path, o FlexNet Publisher carrega o módulo DLL indicado nesse parâmetro sem realizar qualquer verificação. - Portal web do Schneider Electric FLM: um pequeno servidor HTTP embutido no processo
lmadmin.exeque dá acesso a duas seções: Dashboard (disponível sem autenticação) e Administration (protegida por senha). Como o portal web e o lmadmin.exe são executados no mesmo espaço de endereçamento, o código carregado pelo FlexNet Publisher é executado dentro do processolmadmin.exe. Isso permite que o invasor intercepte a senha da seção Administration e a use para expandir o ataque a outros sistemas.
Presença do privilégio SeImpersonatePrivilege no processo lmadmin.exe
Caminho de exploração
Para explorar a vulnerabilidade, o invasor precisa ser capaz de executar um código arbitrário no sistema local em que o serviço vulnerável está instalado. A principal falha explorada pelo invasor é que, em uma configuração padrão do Windows, as permissões NTFS na raiz do disco do sistema podem permitir que o grupo Authenticated Users crie novos diretórios. Caso essas permissões de acesso (ACL) não tenham sido restringidas, um invasor sem privilégios administrativos pode recriar o caminho utilizado pelo lmadmin.exe para localizar a configuração do OpenSSL:
|
1 |
C:\cygwin\home\nightly\LMADMI~1.4\tier1\lmadmin\contrib\openssl\_RELEA~1\openssl\ |
Em seguida, no arquivo de configuração openssl.cnf criado, o invasor indica o caminho para um engine module malicioso, localizado em um diretório com permissão de gravação, como no exemplo a seguir: dynamic_path = C:\\Users\\public\\malicious.dll. Ao inicializar o OpenSSL, o FlexNet Publisher processa essa seção e, ao encontrar o parâmetro dynamic_path, usa-o para carregar a DLL preparada pelo invasor. Como as versões vulneráveis do FlexNet permitem o carregamento da configuração do OpenSSL a partir de um local originalmente inexistente e não confiável, o arquivo de configuração criado pelo invasor acaba sendo aceito como legítimo pelo processo lmadmin.exe.

Exemplo de arquivo de configuração openssl.cnf malicioso
Para que o lmadmin.exe leia o arquivo openssl.cnf e carregue a DLL maliciosa, é necessário reiniciar o serviço lmadminSchneider. Isso pode ocorrer nas seguintes condições:
- Em decorrência de uma reinicialização normal do host;
- Quando o usuário tem permissão para gerenciar esse serviço (por padrão, o grupo Authenticated Users não tem essa permissão).
No momento em que o serviço lmadmin.exe é iniciado, o componente FlexNet Publisher inicializa o OpenSSL, abre o arquivo de configuração openssl.cnf e processa a seção [engine]. Caso ela contenha dynamic_path, o OpenSSL carrega o módulo DLL correspondente no processo lmadmin.exe. Em seguida, o código contido na DLL passa a ser executado no contexto do processo lmadmin.exe. Como o serviço é executado com a conta NT AUTHORITY\LOCAL SERVICE, o código malicioso obtém os privilégios desse serviço.
Embora a conta NT AUTHORITY\LOCAL SERVICE tenha privilégios bastante limitados, existe o risco de um escalonamento de privilégios adicional. Esse risco se deve a que, na configuração padrão, o processo do serviço recebe o privilégio SeImpersonatePrivilege, que permite ao processo assumir o contexto de segurança do cliente após a autenticação.
Com um cenário de interação adequado via RPC, COM ou pipes nomeados (named pipes), isso pode ser usado para um escalonamento de privilégios local adicional até o nível NT AUTHORITY\SYSTEM. Para isso, são empregadas, por exemplo, técnicas da família Potato e outros métodos baseados no abuso de impersonação (impersonation). Assim, apesar da trivialidade de cada ação isolada, o conjunto delas forma uma cadeia de exploração completa, que parte de um usuário local com poucos privilégios e chega à execução de código no contexto do serviço, podendo, em condições adicionais, escalar privilégios até o nível NT AUTHORITY\SYSTEM.
Como mitigar a exploração da CVE-2024-2658
- Se a organização não usa licenças flutuantes (floating license), recomendamos remover o software Schneider Electric FLM ou não instalá-lo nas estações de trabalho em que o produto não é necessário. Sempre que possível, recomendamos usar licenças vinculadas a um nó específico;
- O Schneider Electric FLM deve ser hospedado em um servidor dedicado, com acesso restrito de usuários;
- Recomendamos criar o diretório
C:\cygwinusando uma conta administrativa e negar ao grupo Authenticated Users a permissão de gravação nesse diretório. Isso limita a possibilidade de colocar um arquivo de configuração falso do OpenSSL no caminho definido; - Também recomendamos atualizar o Schneider Electric FLM para a versão 3.0.0.0 ou superior.
Detecção pelas soluções da Kaspersky
A solução Kaspersky Industrial CyberSecurity é capaz de detectar a exploração dessa vulnerabilidade. O módulo Vulnerability Manager identifica a presença da versão vulnerável do software na estação de trabalho, enquanto o módulo comportamental detecta cada etapa da exploração, desde a criação do arquivo de configuração malicioso no disco até a tentativa de carregamento da biblioteca maliciosa pelo serviço vulnerável.

Detecção de tentativa de exploração da vulnerabilidade: informações gerais
O cartão de alerta do KICS reúne informações adicionais sobre a tentativa de exploração da vulnerabilidade e as ações de proteção recomendadas.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Descrição O componente Exploit Prevention do aplicativo EPP detectou tentativas de exploração de uma vulnerabilidade em um processo protegido. Esse tipo de ataque pode levar à execução de código malicioso, acesso não autorizado ou comprometimento da integridade do sistema. Dados do aplicativo EPP: ● Nome do objeto: C:\Program Files (x86)\Schneider Electric\Floating License Manager\FLEXnet Publisher License Server Manager\lmadmin.exe. ● Status: Não tratável. ● Hash MD5: c3f57667d9e8e1b2375ba09cdf71cac8. ● Hash SHA256: 9dab845704d1999ec8ed089594cfd2173a08057f1caf9a2346c22c81039dbb7a. Mitigações: ● Analise o evento e identifique a origem da inicialização ou interação com o processo; ● Verifique se essa vulnerabilidade é relevante para o seu sistema (confira a versão do software e as atualizações instaladas); ● Caso a exploração da vulnerabilidade seja confirmada, isole o dispositivo e busque sinais de comprometimento (arquivos suspeitos e seus checksums, processos/serviços desconhecidos ou consultas a IPs/FQDNs externos). Verifique também se há vestígios semelhantes em outros dispositivos; ● Instale as atualizações de segurança do software ou sistema operacional atacado e, se necessário, execute uma verificação completa do dispositivo. |

Detecção de tentativa de exploração da vulnerabilidade: informações sobre o processo atacado
É possível, ainda, usar a tarefa de varredura OVAL nos produtos KICS para identificar antecipadamente a presença da vulnerabilidade no host, como parte de um processo contínuo de gerenciamento de vulnerabilidades. Na captura de tela apresentada, é possível observar como o KICS for Nodes detecta a versão vulnerável do software.

Informações sobre a vulnerabilidade CVE-2024-2658 detectada
Conclusão
A vulnerabilidade CVE-2024-2658 ilustra claramente as consequências que a falta de controle no carregamento de arquivos de dependências pode causar. No caso do Schneider Electric Floating License Manager, um usuário local sem privilégios administrativos pode criar um arquivo de configuração openssl.cnf, colocá-lo no caminho necessário e forçar o carregamento de uma DLL maliciosa no contexto do serviço lmadmin.exe. Em determinadas configurações do sistema, essa cadeia de ações pode resultar em um escalonamento de privilégios até o nível NT AUTHORITY\SYSTEM.
Para corrigir a vulnerabilidade, recomendamos atualizar o componente afetado (FlexNet Publisher) para uma versão corrigida. Além disso, é preciso restringir a permissão de gravação de usuários não privilegiados no diretório C:\cygwin. Essas medidas reduzem significativamente o risco de exploração da vulnerabilidade, enquanto as soluções Kaspersky Industrial CyberSecurity oferecem uma camada adicional de proteção, identificando ações suspeitas nas fases iniciais do ataque.


Gerenciador de licenças perigoso: como uma vulnerabilidade no software da Schneider Electric expõe empresas industriais a riscos