
À medida que a tecnologia evolui, a Microsoft tem mantido uma postura ativa na limpeza de componentes antigos do seu ecossistema. Um exemplo recente foi a decisão de decretar o fim do suporte ao WINS, com a empresa a sublinhar que o Windows Server 2025 será a última edição a suportar esta tecnologia. Agora, o gigante de Redmond virou as suas atenções para outro componente fundamental, emitindo um aviso sério aos administradores de TI sobre o uso de versões não suportadas do runtime .NET.
Ao contrário do clássico .NET Framework, que funcionava como um componente central e integrado do Windows, o moderno .NET Core opera de forma diferente. Este é tipicamente instalado apenas quando uma aplicação específica o exige, o que resulta numa fragmentação onde múltiplas versões do .NET podem coexistir na mesma máquina. Embora esta abordagem modular traga benefícios inegáveis, como o desenvolvimento open-source multiplataforma e atualizações mais céleres, também abre a porta a riscos de segurança se a gestão não for rigorosa.
O ciclo de vida e os riscos de segurança
Atualmente, o ecossistema .NET segue um ciclo de lançamento anual, o que significa que qualquer versão anterior ao .NET 8 é considerada "fim de vida" (EOL - End of Life) e, portanto, não suportada. O grande desafio para as empresas e utilizadores é que a simples atualização de um runtime num ambiente de servidor ou PC não significa que todas as aplicações passem a usá-lo automaticamente.
Cada aplicação tem de ser atualizada individualmente para apontar para a nova framework e dependências. Isto cria um cenário onde um sistema pode ter a versão mais recente instalada e segura, mas continuar a albergar versões obsoletas e vulneráveis apenas para manter a compatibilidade com software antigo. A Microsoft alerta que a presença destes runtimes descontinuados pode ser um vetor de entrada para agentes maliciosos, além de causar problemas de estabilidade e falhas de conformidade (compliance).
Como detetar e resolver o problema
Para contornar esta situação, a Microsoft sublinha a importância de os administradores de TI identificarem exatamente quais as versões do .NET que estão a ser carregadas por cada aplicação. Para tal, a empresa recomenda a utilização da ferramenta de linha de comandos listdlls.exe, executada com privilégios de administrador, através do seguinte comando:
listdlls.exe -d coreclr.dll -accepteula -v
Este comando lista todos os processos que estão a utilizar as bibliotecas do .NET Core. O passo seguinte é o mais trabalhoso: atualizar as aplicações que dependem de versões antigas. Como isto exige frequentemente acesso ao código-fonte, a única solução para muitos administradores será contactar os programadores ou fornecedores do software desatualizado para exigir uma atualização.
Após garantir que as aplicações foram migradas ou atualizadas, recomenda-se correr novamente o comando para confirmar que nenhum processo está "preso" ao passado. O passo final é desinstalar os runtimes obsoletos do sistema para fechar as portas a vulnerabilidades. A Microsoft desencoraja vivamente a manutenção destas versões, lembrando que, além da falta de correções de segurança e suporte técnico, muitos softwares de segurança de endpoint (EDR/antivírus) começarão a sinalizar estas instalações como vulnerabilidades ativas.