Pysa, un analizador estático para Python ofrecido por Facebook

Facebook ha introducido un analizador estático de código abierto llamado «Pysa» (Python Static Analyzer) el cual está diseñado para identificar vulnerabilidades potenciales en el código Python.

Pysa proporciona análisis de flujos de datos como resultado de la ejecución del código, lo que le permite identificar muchas vulnerabilidades potenciales y problemas de privacidad relacionados con el uso de datos en lugares donde no deberían aparecer.

Por ejemplo, Pysa puede rastrear el uso de datos externos sin procesar en llamadas que ejecutan programas externos, en operaciones de archivos y en construcciones SQL.

Hoy, compartimos detalles sobre Pysa , una herramienta de análisis estático de código abierto que hemos construido para detectar y prevenir problemas de seguridad y privacidad en el código Python. El año pasado, compartimos cómo creamos Zoncolan , una herramienta de análisis estático que nos ayuda a analizar más de 100 millones de líneas de código Hack y ha ayudado a los ingenieros a prevenir miles de posibles problemas de seguridad. Ese éxito nos inspiró a desarrollar Pysa, que es un acrónimo de Python Static Analyzer.

Pysa utiliza los mismos algoritmos para realizar análisis estáticos e incluso comparte código con Zoncolan. Al igual que Zoncolan, Pysa rastrea los flujos de datos a través de un programa.

El usuario define fuentes (lugares donde se originan datos importantes) así como sumideros (lugares donde los datos de la fuente no deberían terminar).

Para las aplicaciones de seguridad, los tipos más comunes de fuentes son lugares donde los datos controlados por el usuario ingresan a la aplicación, como el diccionario de Django.

Los receptores tienden a ser mucho más variados, pero pueden incluir API que ejecutan código, como eval, o API que acceden al sistema de archivos, comoos.open

Pysa realiza rondas iterativas de análisis para construir resúmenes para determinar qué funciones devuelven datos de una fuente y qué funciones tienen parámetros que finalmente llegan a un sumidero. Si Pysa encuentra que una fuente eventualmente se conecta a un sumidero, informa un problema. 

El trabajo del analizador se reduce a identificar las fuentes de datos entrantes y llamadas peligrosas, en las que no se deben utilizar los datos originales.

Pysa monitorea el paso de datos a lo largo de la cadena de llamadas a funciones y asocia los datos originales con lugares potencialmente peligrosos en el código.

Debido a que utilizamos marcos de servidor Python de código abierto como Django y Tornado para nuestros propios productos, Pysa puede comenzar a encontrar problemas de seguridad en proyectos que utilizan estos marcos desde la primera ejecución. Usar Pysa para marcos para los que aún no tenemos cobertura es generalmente tan simple como agregar algunas líneas de configuración para decirle a Pysa dónde ingresan los datos al servidor.

Una vulnerabilidad común identificada por Pysa es un problema de redireccionamiento abierto (CVE-2019-19775) en la plataforma de mensajería Zulip, causado por pasar parámetros externos no limpios al mostrar miniaturas.

Las capacidades de seguimiento del flujo de datos de Pysa se pueden utilizar para validar el uso de marcos adicionales y para determinar el cumplimiento de las políticas de uso de datos del usuario.

Por ejemplo, Pysa sin configuraciones adicionales puede usarse para verificar proyectos usando los frameworks Django y Tornado. Pysa también puede identificar vulnerabilidades comunes en aplicaciones web, como sustitución de SQL y scripting entre sitios (XSS).

En Facebook, el analizador se utiliza para verificar el código del servicio de Instagram. Durante el primer trimestre de 2020, Pysa ayudó a identificar el 44% de todos los problemas encontrados por los ingenieros de Facebook en la base de código del lado del servidor de Instagram.

Se identificaron un total de 330 problemas en el proceso de verificación automatizada de cambios utilizando Pysa, 49 (15%) de los cuales fueron evaluados como significativos y 131 (40%) no eran peligrosos. En 150 casos (45%) los problemas se atribuyeron a falsos positivos.

El nuevo analizador está diseñado como un complemento del kit de herramientas de verificación de tipo Pyre y se coloca en su repositorio. El código se publica bajo la licencia MIT.

Finalmente si quieres conocer mas al respecto, puedes consultar los detalles en la publicación original. El enlace es este.


Sé el primero en comentar

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.