Que precauções são suficientes para criar uma sandbox para uma linguagem de script?

0

Temos uma discussão em andamento para adicionar algumas funcionalidades a um projeto adicionando suporte de script e ele está preso às preocupações de segurança.

Pense que um idioma será usado para fins de configuração, portanto, ele deve ser seguro o suficiente como .ini arquivos do ponto de vista dos usuários finais. As ações não dependerão de binários externos, somente as ferramentas nativas do idioma serão permitidas.

As seguintes restrições não garantem a segurança necessária para executar códigos não confiáveis:

  • Restringir acesso à rede
  • Desativar o acesso de gravação completamente
  • Fornecer acesso de leitura para o diretório atual
  • Fornecer acesso de leitura apenas para incluir bibliotecas globais

O que mais é necessário para usar uma linguagem de script como "uma ferramenta de configuração"?

    
por ceremcem 06.09.2018 / 07:55

1 resposta

1

Não.

Entre outras coisas, você não tem proteção contra manipulação de cache, envenenamento de predição de branch e ataques de estilo de rowhammer presentes, todos os quais são possíveis da linguagem que a discussão vinculada parece implicar usando (Python).

Supondo que você esteja realmente falando sobre o uso do Python, você também precisa considerar o fato de que o código Python pode carregar bibliotecas e executáveis arbitrários por meio de vários mecanismos, alguns dos quais não dependem do acesso de leitura. Tudo isso precisa ser restrito e, realisticamente, você provavelmente também deve restringir o acesso a muitos dos módulos padrão da biblioteca (as macros de documentos não falam com o daemon syslog ou buscam informações sobre a conta, por exemplo).

Além de tudo isso, você também precisa: de alguma maneira para o usuário desabilitar explicitamente a execução automática deste código, com a situação ideal sendo que eles têm que explicitamente optar por executá-lo (se este tivesse sido o comportamento padrão em MS Office desde o início para macros, então alguns grandes vírus não teriam passado de algumas dezenas de sistemas infectados). Além disso, certifique-se de que a proteção contra gravação inclui o documento ao qual a macro está associada, caso contrário, você ainda tem um mecanismo de exfiltração de dados.

TBH, Python na verdade não é ótimo para esse tipo de coisa. Se não fosse o ponto da discussão em primeiro lugar, eu realmente sugeriria usar Lua ao invés disso, é muito melhor projetada para esse tipo de uso, e é muito mais fácil de proteger (apesar das coisas mencionadas no topo de minha resposta ainda é um problema para Lua).

    
por 06.09.2018 / 21:26