O repositório PyPI contém código potencialmente inseguro

Pesquisadores da Universidade de Turku (Finlândia) tornado conhecido faz pouco os resultados de uma análise eles fizeram para os pacotes no repositório por PyPI para o uso de construções potencialmente perigosas que podem gerar vulnerabilidades. Na análise que cerca de 197.000 pacotes foram realizados e 749.000 possíveis problemas de segurança foram identificados.

Em outras palavras, 46% dos pacotes têm pelo menos um desses problemas, dos quais entre os problemas mais comuns estão aqueles relacionados ao tratamento de exceções e ao uso de recursos de substituição de código.

Dos 749 mil problemas identificados, 442 mil (41%) foram marcados como menores, 227 mil (30%) como moderadamente perigoso e 80 mil (11%) como perigosos.

O conjunto de dados é baseado em um instantâneo de todos os pacotes armazenados no Python Package Index (PyPI) ...

Em termos de tipos de problemas, como tratamento de exceções e diferentes injeções de código têm sido os problemas mais comuns. Nesse sentido, o módulo threads se destaca. Refletindo sobre os tamanhos de pacote geralmente pequenos, as métricas de tamanho de software não prevêem bem o número de problemas revelados por meio da análise. 

Alguns pacotes são incomuns e contêm milhares de problemas: Por exemplo, 2589 problemas foram encontrados no pacote PyGGI, principalmente relacionados ao uso da construção "try-except-pass", e 2356 problemas foram encontrados no pacote appengine-sdk. Também há muitos problemas nos pacotes genie.libs.ops, pbcore e genie.libs.parser.

De notar que os resultados foram obtidos com base numa análise estática automatizada, que não tem em consideração o contexto de aplicação de determinadas estruturas.

O desenvolvedor do Bandit, que foi usado para escanear o código, sugeriu que devido ao grande número de falsos positivos, los resultados da varredura não podem ser considerados vulnerabilidades diretamente, sem uma revisão manual adicional de cada problema.

Por exemplo, o analisador considera o uso de geradores de números aleatórios não confiáveis ​​e algoritmos de hash, como MD5, como um problema de segurança, enquanto no código esses algoritmos podem ser usados ​​para propósitos que não afetam a segurança.

O analisador também considera que qualquer processamento de dados externos em funções inseguras como pickle, yaml.load, subprocess e eval é um problema, mas esse uso não está necessariamente associado a uma vulnerabilidade e, de fato, o uso dessas funções pode ser um problema implementado sem uma ameaça à segurança.

Entre os controles usados ​​no estudo:

  • Uso de funções potencialmente inseguras exec, mktemp, eval, mark_safe, etc.
  • Configuração insegura de direitos de acesso a arquivos.
  • Conecte um plugue de rede a todas as interfaces de rede.
  • Uso de senhas e chaves criptografadas.
  • Usando um diretório temporário predefinido.
  • Usando pass e continue em manipuladores de exceção de estilo pega-tudo.
  • Inicie aplicativos da web com base na estrutura da web Flask com o modo de depuração habilitado.
  • Usando métodos inseguros para desserializar dados.
  • Usando funções hash MD2, MD4, MD5 e SHA1.
  • Uso de cifras DES e modos de criptografia inseguros.
  • Usando uma implementação HTTPSConnection insegura em algumas versões do Python.
  • Especificando o arquivo: // esquema em urlopen.
  • Use geradores de números pseudo-aleatórios ao executar tarefas criptográficas.
  • Usando o protocolo Telnet.
  • Usando analisadores XML inseguros.

Além disso, é mencionada a detecção de 8 pacotes maliciosos no diretório PyPI. Pacotes problemáticos foram baixados mais de 30 vezes antes de serem removidos. Para ocultar atividades maliciosas e evitar avisos de analisador estático simples em pacotes, usamos codificação de bloco com código usando o formato Base64 e preparamos sua execução após a decodificação chamando eval.

O código encontrado no noblesse, genesisbot, são pacotes suf, noblesse2 e noblessev2 para interceptar números de cartão de crédito e senhas armazenados nos navegadores Chrome e Edge, bem como transferir tokens de conta do aplicativo Discord e enviar dados do sistema, incluindo capturas de tela do conteúdo da tela. … Os pacotes pytagora e pytagora2 incluem a capacidade de baixar e executar código executável de terceiros.

Finalmente se você estiver interessado em saber mais sobre isso, você pode verificar os detalhes no link a seguir.


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.