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.
Sexa o primeiro en opinar sobre