¿Qué son las comprobaciones sencillas para identificar el malware en el código Python?

3

Es bien conocido que PyPI no impida la carga de código malicioso.

Lamentablemente, las herramientas automatizadas a menudo no pueden distinguir entre las características de un programa y el código malicioso.

En el caso de distribuciones de Linux , hay al menos el responsable del paquete que puede consultar el código fuente. de vez en cuando.

Básicamente, la seguridad de los repositorios de software como PyPI se reduce a la idea de que alguien notaría un código malicioso, si suficientes personas miran el código fuente . Entonces, si me gusta ser una de las personas que miran el código fuente de vez en cuando, ¿a qué debo fijarme?

La lectura de cada línea de código antes de instalar un paquete de Python no es factible.

Para un programador (no un investigador de seguridad), ¿cuáles son las comprobaciones fáciles / mejores prácticas para identificar fragmentos de códigos maliciosos obvios?

Algunas cosas obvias que hacer son:

  • grep para import y vea si algún módulo importa algo que no debería. En particular, busque sys , os , http etc ... Estos módulos tienen muchos usos legítimos, pero mucha potencia para hacer cosas inseguras.
  • grep para eval y similares.
  • abra un archivo aleatorio y vea si parece razonable.
  • Preste especial atención a setup.py

¿Cuál es la forma más rápida de tener una mayor probabilidad de detectar códigos maliciosos en los scripts de Python?

    
pregunta TheEspinosa 08.11.2017 - 13:08
fuente

1 respuesta

1

A menos de revisar el código fuente / binario completo, nunca lo sabremos con certeza sin ejecutar el código, momento en el cual, cuando se dé cuenta, puede ser demasiado tarde. Seguro que una biblioteca de manipulación de cadenas que llame a "importar http" podría ser fácil de usar para grep, pero hay un sinfín de formas para que un desarrollador malintencionado lo oculte.

Si le preocupa, entonces el mejor enfoque es tratar de proteger el entorno de ejecución para restringir el paquete solo para que tenga los datos para acceder / API que se esperaría usar.

Con respecto a los paquetes generales de PyPI, debe realizar una evaluación de riesgos cuando utilice un paquete. Si es un paquete importante de un desarrollador bien considerado, entonces el riesgo es bajo y la posibilidad de que alguien lo haya detectado si hay algo malicioso allí es alta. Si eres una de las 10 personas que están instalando el único paquete publicado por un desarrollador, es posible que desees echarle un vistazo más de cerca.

    
respondido por el Hector 09.11.2017 - 09:10
fuente

Lea otras preguntas en las etiquetas