O que é uma biblioteca de vínculo dinâmico?
Uma biblioteca de vínculo dinâmico é um sistema usado pela Microsoft para permitir que vários aplicativos acessem a mesma seção de código no Windows® ao mesmo tempo. Essa é uma das chaves para que a multitarefa funcione efetivamente. Em 2010, pesquisadores de segurança descobriram que a brecha na maneira como o sistema de biblioteca de vínculo dinâmico funcionava poderia ser explorada por hackers. Isso levou a um dilema sobre como corrigi-lo sem afetar a usabilidade dos aplicativos.
Para entender como uma biblioteca de vínculo dinâmico funciona, é importante entender a diferença entre o Windows® e os aplicativos de software. O Windows® é um sistema operacional que existe amplamente para coordenar a maneira como aplicativos individuais, também conhecidos como programas, acessam as habilidades de processamento do computador. O próprio Windows® é, em última análise, um conjunto de códigos de computador que atuam efetivamente como o livro de regras ou o guia de como os aplicativos interagem entre si e com o hardware.
A biblioteca de vínculo dinâmico é o sistema pelo qual os aplicativos podem acessar e executar seções individuais do código do Windows®. Um exemplo seria a seção do Windows® responsável pela impressão de documentos. A maioria dos aplicativos precisa acessar esse recurso em algum momento, mas se todos os aplicativos carregassem o código relevante na memória do computador assim que o aplicativo fosse executado, seria um uso ineficiente dos recursos e poderia causar conflitos.
Para resolver isso, o código do Windows® para uma função específica, nesse caso a impressão, é armazenado como um pequeno programa conhecido como biblioteca de vínculo dinâmico ou arquivo DLL. Se um usuário executar um aplicativo como um processador de texto, esse arquivo não será aberto automaticamente. Em vez disso, o processador de texto somente abre e ativa o arquivo como e quando necessário, neste caso quando o usuário deseja imprimir um documento.
Historicamente, muitos desenvolvedores de aplicativos simplesmente escreveram um código que dizia como o nome da biblioteca de vínculo dinâmico relevante era chamado, em vez de especificar exatamente onde deveria estar localizado no computador. Para contornar isso, o Windows® possui um sistema definido para localizar arquivos DLL ausentes, pesquisando uma lista definida de locais em uma ordem definida. Embora isso teoricamente pudesse ser explorado se um arquivo malicioso disfarçado de DLL fosse colocado no lugar certo e, assim, encontrado e aberto antes do arquivo legítimo, isso não era considerado um grande risco de segurança, pois os hackers precisariam de acesso físico a uma máquina para obter o arquivo malicioso no lugar.
Em 2010, foi descoberto que os hackers poderiam, teoricamente, instalar esses arquivos por meio de uma conexão remota: ou seja, pela Internet. Isso significava que dezenas de aplicativos Windows® estavam vulneráveis a ataques usando esse método. A comunidade de segurança estava dividida sobre se era melhor reescrever aplicativos individuais para especificar o local do arquivo DLL legítimo, que contava com a ação de cada desenvolvedor ou que a Microsoft alterasse a maneira como o Windows® lida com esses arquivos, o que potencialmente pode fazer com que os aplicativos parem de funcionar corretamente.