Segurança e Geração de Códigos On-the-Fly

Algumas bibliotecas funcionam gerando código e executando-o para executar alguma operação para o chamador. O problema básico é gerar código em nome de um código de menor confiança e executá-lo com uma confiança superior. O problema agrava-se quando o chamador pode influenciar a geração de códigos, por isso deve certificar-se de que apenas o código que considera seguro é gerado.

Precisas de saber exatamente que código estás a gerar a todo o momento. Isto significa que deve ter controlos rigorosos sobre quaisquer valores que obtenha de um utilizador, sejam eles cadeias de cotação (que devem ser escapados para que não possam incluir elementos de código inesperados), identificadores (que devem ser verificados para verificar se são identificadores válidos) ou qualquer outra coisa. Os identificadores podem ser perigosos porque um conjunto compilado pode ser modificado de modo que os seus identificadores contêm caracteres estranhos, que provavelmente irão quebrá-lo (embora esta raramente seja uma vulnerabilidade de segurança).

Recomenda-se que gere código com emitem emitem códigos, o que muitas vezes ajuda a evitar muitos destes problemas.

Ao compilar o código, considere se existe alguma forma de um programa malicioso modificá-lo. Existe uma pequena janela de tempo durante a qual o código malicioso pode alterar o código de origem no disco antes de o compilador o ler ou antes do seu código carregar o ficheiro .dll? Em caso afirmativo, deve proteger o diretório que contém estes ficheiros, utilizando uma Lista de Controlo de Acesso no sistema de ficheiros, conforme apropriado.

Ver também