O repositorio PyPI contén código potencialmente inseguro

Investigadores da Universidade de Turku (Finlandia) deuse a coñecer recentemente os resultados dunha análise fixeron cos paquetes do repositorio por PyPI para o uso de construcións potencialmente perigosas que poidan xerar vulnerabilidades. Na análise que leváronse a cabo uns 197.000 paquetes e identificáronse 749.000 posibles problemas de seguridade.

É dicir, o 46% dos paquetes teñen polo menos un destes problemas, dos que entre os problemas máis comúns están os relacionados coa manipulación de excepcións e o uso de capacidades de substitución de código.

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

O conxunto de datos baséase nunha instantánea de todos os paquetes almacenados no índice de paquetes de Python (PyPI) ...

En canto aos tipos de problemas, como o tratamento de excepcións e as diferentes inxeccións de código foron os problemas máis comúns. Neste sentido, destaca o módulo de fíos. Reflexionando sobre os tamaños de paquetes xeralmente pequenos, as métricas de tamaño do software non predicen ben a cantidade de problemas revelados a través da análise. 

Algúns paquetes están fóra do normal e conteñen miles de problemas: Por exemplo, atopáronse 2589 problemas no paquete PyGGI, relacionados principalmente co uso da construción "try-except-pass" e atopáronse 2356 problemas no paquete appengine-sdk. Tamén hai moitos problemas nos paquetes genie.libs.ops, pbcore e genie.libs.parser.

Cómpre ter en conta que os resultados obtivéronse a partir dunha análise estática automatizada, que non ten en conta o contexto da aplicación de certas estruturas.

O desarrollador de Bandit, que foi usado para escanear o código, suxeriu que debido á gran cantidade de falsos positivos, los resultados da exploración non se poden considerar vulnerabilidades directamente sen unha revisión manual adicional de cada problema.

Por exemplo, o analizador considera o uso de xeradores de números aleatorios non fiables e algoritmos de hash como MD5 como un problema de seguridade, mentres que no código estes algoritmos poden usarse con fins que non afectan a seguridade.

O analizador tamén considera que calquera procesamento externo de datos en funcións inseguras como pickle, yaml.load, subprocess e eval é un problema, pero este uso non está necesariamente asociado a unha vulnerabilidade e, de feito, o uso destas funcións pode ser un problema implementado sen ameaza á seguridade.

Entre os controis empregados no estudo:

  • Uso de funcións potencialmente inseguras exec, mktemp, eval, mark_safe, etc.
  • Configuración insegura dos dereitos de acceso aos ficheiros.
  • Conecte un enchufe de rede a todas as interfaces de rede.
  • Uso de contrasinais e claves cifradas.
  • Usando un directorio temporal predefinido.
  • Usando pass e continúa nos controladores de excepcións de todo tipo.
  • Inicie aplicacións web baseadas no marco web Flask co modo de depuración activado.
  • Usar métodos inseguros para deserializar os datos.
  • Usando funcións de hash MD2, MD4, MD5 e SHA1.
  • Uso de cifrados DES inseguros e modos de cifrado.
  • Usando unha implementación HTTPSConnection insegura nalgunhas versións de Python.
  • Especificando o ficheiro: // esquema en urlopen.
  • Use xeradores de números pseudoaleatorios cando realice tarefas criptográficas.
  • Usando o protocolo Telnet.
  • Usando analizadores XML inseguros.

Ademais, menciónase a detección de 8 paquetes maliciosos no directorio PyPI. Os paquetes de problemas descargáronse máis de 30 veces antes de ser eliminados. Para ocultar actividade maliciosa e evitar avisos de analizadores estáticos simples nos paquetes, empregamos a codificación de bloques con código usando o formato Base64 e organizamos a súa execución despois da descodificación chamando a eval.

O código atopado nos paquetes noblesse, genesisbot, é, suff, noblesse2 e noblessev2 para interceptar números de tarxetas de crédito e contrasinais almacenados nos navegadores Chrome e Edge, así como transferir fichas de conta desde a aplicación Discord e enviar datos desde o sistema, incluídas capturas de pantalla. do contido da pantalla. ... Os paquetes pytagora e pytagora2 incluían a posibilidade de descargar e executar código executable de terceiros.

Finalmente se estás interesado en saber máis sobre el, podes consultar os detalles Na seguinte ligazón.


O contido do artigo adhírese aos nosos principios de ética editorial. Para informar dun erro faga clic en aquí.

Sexa o primeiro en opinar sobre

Deixa o teu comentario

Enderezo de correo electrónico non será publicado. Os campos obrigatorios están marcados con *

*

*

  1. Responsable dos datos: Miguel Ángel Gatón
  2. Finalidade dos datos: controlar SPAM, xestión de comentarios.
  3. Lexitimación: o seu consentimento
  4. Comunicación dos datos: os datos non serán comunicados a terceiros salvo obrigación legal.
  5. Almacenamento de datos: base de datos aloxada por Occentus Networks (UE)
  6. Dereitos: en calquera momento pode limitar, recuperar e eliminar a súa información.