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.