Desarrolladores de Python deben tener cuidado con este defecto

Según una publicación de la firma de seguridad Checkmarx, “es preocupante ya que una gran cantidad de paquetes maliciosos que estamos viendo aprovechan esta función de ejecución de código durante la instalación para lograr mejores tasas de infección”.

¿De qué es de lo que hablamos? Pues de que ha aparecido un exploit en una gran cantidad de paquetes disponibles a través de PyPi (instalador de los paquetes de Python) capaz de ejecutar automáticamente código malicioso antes de la instalación, mientras que los desarrolladores solo descargan un paquete del índice de paquetes.

Según los hallazgos de los expertos de la firma de ciberseguridad Checkmarx, más de un tercio de los paquetes en el repositorio de software provocan la ejecución automática del código durante la descarga.

La empresa de seguridad Checkmarx, recientemente descubrió un agujero en el sistema de cámaras Ring de Amazon, advirtiendo a todos los desarrolladores de Python que la instalación de paquetes podría aumentar el peligro de un ataque a la cadena de suministro.

¿Cuál es exactamente el problema?

La administración de paquetes de Python, PIP, intenta recopilar y analizar los metadatos del paquete; entre otros, la versión y dependencias, cada vez que un desarrollador instala un Paquete de Python.

PIP ejecuta el script principal setup.py que se incluye en la estructura del paquete automáticamente en un segundo plano.

Checkmarx afirma que el archivo setup.py puede incluir cualquier código que el creador del paquete elija, eso abre la puerta para que un atacante con conocimiento de este procedimiento inserte de forma encubierta un código malicioso que se ejecutará automáticamente al descargarlo.

Es más preocupante aún, el que la vulnerabilidad afecte a los desarrolladores incluso si optan por no instalar el archivo sino descargarlo para ver su código o realizar una comprobación de seguridad.

Según Checkmarx, esto “no es una falla sino una característica del diseño de PIP” lo que significa que cualquier código malicioso en el archivo setup.py se ejecutará al descargar el paquete.

Checkmarx señaló que este problema se mencionó en 2014 pero nunca se solucionó.

La mejor manera de evitarlo

La compañía afirma que los desarrolladores pueden usar soluciones alternativas para evitar que el código malicioso se ejecute automáticamente. Una cosa que se debe hacer antes de descargar un archivo.whl es verificar su contenido.

El script setup.py ya no es necesario, gracias a la nueva extensión de archivo de While (.whl) de PyPi. No obstante, algunos optan por el formato tar.gz que aún incluye el archivo setup.py y por tanto es menos seguro.

El usuario puede estar seguro de que si hay un archivo .whl, recibirá el archivo.whl y no se ejecutará malware malicioso en su computadora. Si solo está disponible el archivo tar.gz, un usuario puede descargarlo de forma segura interactuando directamente con la API ‘simple’ de PyPi.

Según Tzachi Zorenshtain, jefe de seguridad de la cadena de suministro de Checkmarx, la mayoría de los desarrolladores conocen el riesgo de descargar malware malicioso conectado con un paquete de software de repositorios como PyPi y es una vulnerabilidad que no se puede reparar fácilmente.

Sería sencillo eliminar este comportamiento si se pudiesen cambiar repentinamente todos los formatos y tener todo reenviado y archivado en el nuevo formato, pero eso no será posible durante un buen tiempo.

Relacionado

¿Por qué Python es Mejor que PHP?

Cuando se trata del back-end, se pueden usar numerosos lenguajes de programación. Eso puede dificultar la decisión de qué framework dominar, ya que hay una gran cantidad de diferentes características, funcionalidades y bibliotecas que ofrece cada uno de estos idiomas. La elección puede ser particularmente difícil para los nuevos desarrolladores. Sin embargo, Python y PHP se destacan entre estos lenguajes de programación por varias razones. Python ¡SEGUIR LEYENDO!

Kedro: Un framework de Python para proyectos de ciencia de datos reproducibles

¿Alguna vez ha pasado sus datos a una lista de funciones y clases sin saber con certeza cómo es la salida? Puede intentar guardar tus datos y luego verificarlos ante Jupyter Notebook para asegurarte de que el resultado sea el esperado. Este enfoque funciona, pero es engorroso. def process_data(data): pass def split_data(data): pass df = process_data(data) df.to_csv('processed_data.csv') X_train, X_test, y_train, y_test = split_data(data) Otro problema común ¡SEGUIR LEYENDO!

Pycharm mejora el cliente HTTP y UX para Python 3.11

Pycharm ha lanzado la versión 2022.2 con varias características nuevas, como información de código para Python 3.11, selección de entorno de ejecución en elHTTPcliente, una interfaz de usuario rediseñada para configurar intérpretes remotos y soporte para el script de estructura PyScript. Python 3.11 incluye información de código para grupos de excepciones, marcado de elementos TypedDict individuales y soporte preliminar para genéricos variados. Con la versión actualizada, ¡SEGUIR LEYENDO!

¿Por qué Python es tan lento?

Es inquietante lo rápido que crece la popularidad de Python. Los expertos más capacitados lo utilizan en una amplia variedad de dominios relacionados con TI. Entre los que se incluyen DevOps, ciencia de datos, desarrollo web y seguridad. A pesar de ello, no suele ser elogiado por su rapidez. El lenguaje de programación Python a veces es criticado por ser lento en comparación con otros lenguajes ¡SEGUIR LEYENDO!

¿Qué es el método numpy.fv()?

La función numpy.fv() calcula el valor futuro. Los flujos de efectivo futuros se miden a la tasa de descuento y cuanto mayor sea la tasa de descuento, menor será el valor presente del flujo de efectivo potencial. Sintaxis del método numpy.fv() numpy.fv(rate, nper, pmt, fv, when='end') Esta función toma cinco argumentos: rate: Este valor decimal indica la tasa de interés por período. Esto puede ser un ¡SEGUIR LEYENDO!

Deja un comentario