Skip to main content

Vulnerabilidad de ejecución de código arbitrario en NumPy

Escrito por
Headshot of Hayley Denbraver

Hayley Denbraver

NumPy Arbitrary Code Execution Vulnerability small

5 de febrero de 2019

0 minutos de lectura

Una vulnerabilidad descubierta recientemente en NumPy, el paquete de código abierto ampliamente utilizado para la computación científica en Python, permite ejecutar código arbitrario potencialmente malicioso.

NumPy

NumPy forma parte del ecosistema SciPy, una colección de paquetes de software de código abierto para matemáticas, ciencia e ingeniería. NumPy se utiliza tanto en la industria como en el ámbito académico, y tiene más de 9,000 estrellas en GitHub y más de 700 colaboradores. Según los registros disponibles en BigQuery de PyPI, NumPy se descargó casi 4 millones de veces en los últimos tres meses.

La vulnerabilidad

El 16 de enero de 2019, el usuario de GitHub nanshihui abrió un problema en el que afirmaba que la función numpy.load era vulnerable a la ejecución de código arbitrario debido a la forma en que usaba el módulo pickle de Python. El módulo pickle de Python serializa y deserializa objetos de Python. El «pickling» convierte la jerarquía de objetos de Python en un flujo de bytes, y el «unpickling» toma un flujo de bytes y lo convierte de nuevo en una jerarquía de objetos. Aceptar arreglos serializados con pickle de fuentes no confiables es peligroso porque no hay forma de verificarlos antes de deserializarlos. Si se proporciona código malicioso de shell como entrada, podría ejecutarse al deserializarlo.

La vulnerabilidad está presente en las versiones de NumPy desde la 1.10 (publicada en octubre de 2015) hasta la versión más reciente, la 1.16. Aquí encontrarás más detalles sobre esta vulnerabilidad en la base de datos de Snyk.

De forma predeterminada, las versiones afectadas de NumPy permiten cargar arreglos de objetos serializados con pickle. Esto solo debería hacerse cuando la fuente sea confiable, pero es una mala práctica que sea el comportamiento predeterminado.

Por el momento no se conocen casos en los que se haya explotado esta vulnerabilidad, pero eso podría cambiar a medida que crezca la conciencia sobre el problema. El exploit no requiere autenticación ni muchos conocimientos técnicos para aprovecharlo.

Al momento de escribir esto, todavía no se había publicado un parche ni una actualización, aunque el equipo de NumPy está trabajando en ello. Puedes asegurarte de no ser vulnerable pasando allow_pickle=False a cualquier instancia de numpy.load que cargue datos de una fuente no confiable.

¿Te afecta?

Si usas Snyk, recibirás notificaciones mediante tus alertas habituales si tienes proyectos con dependencias vulnerables de NumPy.

Si todavía no probaste Snyk, considera probar nuestra interfaz fácil de usar o usar nuestra CLI para ejecutar pruebas localmente.

Leer más

illustration hero ai
Blog

PHP corrige dos vulnerabilidades críticas de RCE sin autenticación (CVE-2026-109618, CVE-2026-109619): actualiza ahora

Dos fallas críticas en el ciclo de solicitudes de PHP pueden permitir la ejecución remota de código sin autenticación. Actualiza a una versión corregida o instala una corrección retroportada por un proveedor para las versiones anteriores.

blog feature ai lilac
Blog

Convierte tu backlog de vulnerabilidades en pull requests con la remediación agéntica

Evo Remediation Agent ya está disponible en Open Preview e incorpora la resolución automatizada de dependencias a Evo Agentic AppSec. Ahora, los equipos de AppSec pueden ejecutar campañas de remediación continuas

AI Background min crop
Blog

La IA activa todos los riesgos que has aceptado: siete ideas del panel de seguridad de IA sin filtros

La IA hace que los ataques sean más baratos y rápidos, y deja al descubierto riesgos que las organizaciones ya enfrentan. Cuatro líderes de seguridad explican por qué la defensa a velocidad de máquina y la corrección más rápida son esenciales.