{"id":171084,"date":"2026-01-13T11:27:39","date_gmt":"2026-01-13T19:27:39","guid":{"rendered":"https:\/\/unit42.paloaltonetworks.com\/?p=171084"},"modified":"2026-01-23T11:29:28","modified_gmt":"2026-01-23T19:29:28","slug":"rce-vulnerabilities-in-ai-python-libraries","status":"publish","type":"post","link":"https:\/\/unit42.paloaltonetworks.com\/es-la\/rce-vulnerabilities-in-ai-python-libraries\/","title":{"rendered":"Ejecuci\u00f3n remota de c\u00f3digo con formatos y bibliotecas modernos de IA\/ML"},"content":{"rendered":"<h2><a id=\"post-171084-_heading=h.26r5sq3799b7\"><\/a>Resumen ejecutivo<\/h2>\n<p>Hemos identificado vulnerabilidades en tres bibliotecas Python de inteligencia artificial\/aprendizaje autom\u00e1tico (IA\/ML) de c\u00f3digo abierto publicadas por Apple, Salesforce y NVIDIA en sus repositorios GitHub. Las versiones vulnerables de estas bibliotecas permiten la ejecuci\u00f3n remota de c\u00f3digo (RCE) cuando se carga un archivo de modelo con metadatos maliciosos.<\/p>\n<p>En concreto, estas bibliotecas son:<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/NVIDIA-NeMo\/NeMo\/tree\/main\" target=\"_blank\" rel=\"noopener\"><strong>NeMo<\/strong><\/a><strong>:<\/strong> un marco basado en PyTorch creado con fines de investigaci\u00f3n y dise\u00f1ado para el desarrollo de diversos modelos de IA\/ML y sistemas complejos creados por NVIDIA.<\/li>\n<li><a href=\"https:\/\/github.com\/SalesforceAIResearch\/uni2ts\" target=\"_blank\" rel=\"noopener\"><strong>Uni2TS<\/strong><\/a>: una biblioteca PyTorch creada con fines de investigaci\u00f3n que utiliza Morai de Salesforce, un modelo b\u00e1sico para el an\u00e1lisis de series temporales que pronostica tendencias a partir de vastos conjuntos de datos.<\/li>\n<li><a href=\"https:\/\/github.com\/apple\/ml-flextok\" target=\"_blank\" rel=\"noopener\"><strong>FlexTok<\/strong><\/a><strong>:<\/strong> un marco basado en Python creado con fines de investigaci\u00f3n que permite a los modelos de IA\/ML procesar im\u00e1genes mediante el manejo de las funciones de codificaci\u00f3n y decodificaci\u00f3n, creado por investigadores de Apple y del Laboratorio de Inteligencia Visual y Aprendizaje del Instituto Federal Suizo de Tecnolog\u00eda.<\/li>\n<\/ul>\n<p>Estas bibliotecas se utilizan en modelos populares en HuggingFace con decenas de millones de descargas en total.<\/p>\n<p>Las vulnerabilidades provienen de bibliotecas que utilizan metadatos para configurar modelos y canalizaciones complejos, en los que una biblioteca compartida de terceros instancia clases con estos metadatos. Las versiones vulnerables de estas bibliotecas simplemente ejecutan los datos proporcionados como c\u00f3digo. Esto permite a un atacante incrustar c\u00f3digo arbitrario en los metadatos del modelo, que se ejecutar\u00eda autom\u00e1ticamente cuando las bibliotecas vulnerables cargaran estos modelos modificados.<\/p>\n<p>Hasta diciembre de 2025, no hemos encontrado ejemplos maliciosos que utilicen estas vulnerabilidades en la red. Palo Alto Networks notific\u00f3 a todos los proveedores afectados en abril de 2025 para garantizar que tuvieran la oportunidad de implementar mitigaciones o resolver los problemas antes de la publicaci\u00f3n.<\/p>\n<ul>\n<li>NVIDIA emiti\u00f3 <a href=\"https:\/\/nvidia.custhelp.com\/app\/answers\/detail\/a_id\/5686\" target=\"_blank\" rel=\"noopener\">CVE-2025-23304<\/a>, calificado como de alta gravedad, y lanz\u00f3 una correcci\u00f3n en la versi\u00f3n 2.3.2 de NeMo.<\/li>\n<li>Los investigadores que crearon FlexTok actualizaron su c\u00f3digo en junio de 2025 para resolver los problemas.<\/li>\n<li>Salesforce emiti\u00f3 <a href=\"https:\/\/help.salesforce.com\/s\/articleView?id=005239354&amp;type=1\" target=\"_blank\" rel=\"noopener\">CVE-2026-22584<\/a>, clasificado como de gravedad alta, e implement\u00f3 una correcci\u00f3n el 31 de julio de 2025.<\/li>\n<\/ul>\n<p>Estas vulnerabilidades fueron descubiertas por <a href=\"https:\/\/www.paloaltonetworks.com\/prisma\/prisma-ai-runtime-security\" target=\"_blank\" rel=\"noopener\">Prisma AIRS<\/a>, que es capaz de identificar los modelos que aprovechan estas vulnerabilidades y extraer sus cargas \u00fatiles.<\/p>\n<p>Adem\u00e1s, los clientes de Palo Alto Networks est\u00e1n mejor protegidos frente a las amenazas mencionadas gracias a los siguientes productos y servicios:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.paloaltonetworks.com\/cortex\/cloud\/vulnerability-management\" target=\"_blank\" rel=\"noopener\">Gesti\u00f3n de vulnerabilidades<\/a> de Cortex Cloud<\/li>\n<li>La <a href=\"https:\/\/www.paloaltonetworks.com\/resources\/datasheets\/unit-42-ai-security-assessment\" target=\"_blank\" rel=\"noopener\">evaluaci\u00f3n de seguridad de IA de Unit 42<\/a> puede ayudar a las organizaciones a reducir el riesgo de adopci\u00f3n de la IA, proteger la innovaci\u00f3n en IA y reforzar la gobernanza de la IA.<\/li>\n<li>Si cree que puede haber resultado vulnerado o tiene un problema urgente, p\u00f3ngase en contacto con el <a href=\"https:\/\/start.paloaltonetworks.com\/contact-unit42.html\" target=\"_blank\" rel=\"noopener\">equipo de respuesta ante incidentes de Unit\u00a042<\/a>.<\/li>\n<\/ul>\n<table style=\"width: 97.3243%;\">\n<thead>\n<tr>\n<td style=\"width: 35%;\"><b>Temas relacionados con Unit\u00a042<\/b><\/td>\n<td style=\"width: 232.787%;\"><a href=\"https:\/\/unit42.paloaltonetworks.com\/es-la\/tag\/python-es-la\/\" target=\"_blank\" rel=\"noopener\"><b>Python<\/b><\/a>, <strong><a href=\"https:\/\/unit42.paloaltonetworks.com\/es-la\/tag\/llm-es-la\/\" target=\"_blank\" rel=\"noopener\">LLMs<\/a>, <a href=\"https:\/\/unit42.paloaltonetworks.com\/es-la\/tag\/machine-learning-es-la\/\" target=\"_blank\" rel=\"noopener\"><b>Machine Learning<\/b><\/a><\/strong><\/td>\n<\/tr>\n<\/thead>\n<\/table>\n<h2><a id=\"post-171084-_heading=h.jukn777530y9\"><\/a>Formatos de modelos de IA\/ML<\/h2>\n<p>Los procesos de entrenamiento e inferencia de IA\/ML dependen del almacenamiento de estados internos complejos, como los pesos aprendidos y las definiciones de arquitectura. Estos estados internos se guardan como artefactos de modelo y los artefactos deben compartirse entre productores y consumidores. Las bibliotecas proporcionan mecanismos integrados para serializar estos artefactos.<\/p>\n<p>Las bibliotecas de Python para IA\/ML han dependido durante mucho tiempo de la funcionalidad del m\u00f3dulo <a href=\"https:\/\/docs.python.org\/3\/library\/pickle.html\" target=\"_blank\" rel=\"noopener\">pickle<\/a> de la biblioteca est\u00e1ndar de Python para almacenar y cargar objetos Python en y desde archivos. Este m\u00f3dulo serializa los objetos Python creando un programa sencillo para reconstruir los objetos y el m\u00f3dulo pickle se ejecuta cuando se cargan los objetos Python. Dado que el m\u00f3dulo pickle ejecuta c\u00f3digo al cargar archivos, su uso conlleva importantes riesgos de seguridad.<\/p>\n<p>El <a href=\"https:\/\/docs.pytorch.org\/tutorials\/beginner\/saving_loading_models.html\" target=\"_blank\" rel=\"noopener\">formato de archivo<\/a> de la biblioteca PyTorch simplemente incrusta archivos .pickle en un formato contenedor. Otras bibliotecas como <span style=\"font-family: 'courier new', courier, monospace;\"><a href=\"https:\/\/scikit-learn.org\/stable\/model_persistence.html\" target=\"_blank\" rel=\"noopener\">scikit-learn<\/a> <\/span>utilizan .pickle u otras extensiones utilizadas para pickle (como <a href=\"https:\/\/joblib.readthedocs.io\/en\/latest\/persistence.html#persistence\" target=\"_blank\" rel=\"noopener\"><span style=\"font-family: 'courier new', courier, monospace;\">.joblib<\/span><\/a>) por su cuenta. Las bibliotecas de IA\/ML m\u00e1s populares documentan claramente estos riesgos y proporcionan mitigaciones maduras para evitar la ejecuci\u00f3n de c\u00f3digo inesperado de forma predeterminada.<\/p>\n<h2><a id=\"post-171084-_heading=h.v8in11n0mohy\"><\/a>Problemas de seguridad en los nuevos formatos de modelos<\/h2>\n<p>Se han desarrollado nuevos formatos para abordar los problemas de seguridad de estos formatos basados en pickle. Estos formatos \"seguros\" lo consiguen en gran medida al admitir \u00fanicamente la serializaci\u00f3n de los pesos de los modelos o al representar los canales como datos en lugar de c\u00f3digo, mediante el uso de formatos como JSON. Por ejemplo, el formato <a href=\"https:\/\/huggingface.co\/docs\/safetensors\/en\/index\" target=\"_blank\" rel=\"noopener\">safetensors<\/a> de HuggingFace solo permite el almacenamiento de los pesos de los modelos y un \u00fanico objeto JSON para almacenar los metadatos de los modelos.<\/p>\n<p>Los formatos m\u00e1s antiguos tambi\u00e9n han dejado de depender del m\u00f3dulo pickle. Por ejemplo, PyTorch solo carga los pesos del modelo <a href=\"https:\/\/docs.pytorch.org\/docs\/stable\/generated\/torch.load.html\" target=\"_blank\" rel=\"noopener\">de forma predeterminada<\/a>. Si se habilita la carga de pickle, PyTorch solo ejecutar\u00e1 funciones de una <a href=\"https:\/\/docs.pytorch.org\/docs\/stable\/notes\/serialization.html#torch.serialization.add_safe_globals\" target=\"_blank\" rel=\"noopener\">lista de permitidos<\/a> predefinida que deber\u00eda impedir la ejecuci\u00f3n de c\u00f3digo arbitrario.<\/p>\n<p>Aunque estos nuevos formatos y actualizaciones eliminan la posibilidad de serializar los procesos como c\u00f3digo, no hacen que las aplicaciones y bibliotecas que utilizan estos modelos sean inmunes a los exploits tradicionales. Los <a href=\"https:\/\/jfrog.com\/blog\/machine-learning-bug-bonanza-exploiting-ml-clients-and-safe-models\/\" target=\"_blank\" rel=\"noopener\">investigadores de seguridad de JFrog<\/a> han identificado vulnerabilidades en aplicaciones que utilizan estos formatos mediante t\u00e9cnicas conocidas como XSS y path traversal.<\/p>\n<h2><a id=\"post-171084-_heading=h.dsllqo7s20tr\"><\/a>An\u00e1lisis t\u00e9cnico<\/h2>\n<p>Aunque los formatos m\u00e1s recientes han eliminado la posibilidad de almacenar el estado y las configuraciones de los modelos como c\u00f3digo, los investigadores siguen teniendo casos de uso para serializar esa informaci\u00f3n. Dado que estas bibliotecas son grandes y las configuraciones de sus clases pueden ser complejas, muchas bibliotecas utilizan herramientas de terceros para llevar a cabo esta tarea.<\/p>\n<p><a href=\"https:\/\/hydra.cc\/\" target=\"_blank\" rel=\"noopener\">Hydra<\/a> es una biblioteca de Python mantenida por Meta que es una herramienta com\u00fanmente utilizada para serializar el estado del modelo y la informaci\u00f3n de configuraci\u00f3n.<\/p>\n<p>Hemos identificado tres bibliotecas Python de IA\/ML de c\u00f3digo abierto utilizadas por modelos en HuggingFace que aprovechan Hydra para cargar estas configuraciones desde los metadatos del modelo de una manera que permite la ejecuci\u00f3n de c\u00f3digo arbitrario:<\/p>\n<ul>\n<li><strong>NeMo:<\/strong> un marco basado en PyTorch creado con fines de investigaci\u00f3n y dise\u00f1ado para el desarrollo de diversos modelos de IA\/ML y sistemas complejos creados por NVIDIA.<\/li>\n<li><strong>Uni2TS<\/strong>: una biblioteca PyTorch creada con fines de investigaci\u00f3n que utiliza Morai de Salesforce, un modelo b\u00e1sico para el an\u00e1lisis de series temporales que pronostica tendencias a partir de vastos conjuntos de datos.<\/li>\n<li><strong>FlexTok:<\/strong> un marco basado en Python creado con fines de investigaci\u00f3n que permite a los modelos de IA\/ML procesar im\u00e1genes mediante el manejo de las funciones de codificaci\u00f3n y decodificaci\u00f3n, creado por investigadores de Apple y del Laboratorio de Inteligencia Visual y Aprendizaje del Instituto Federal Suizo de Tecnolog\u00eda.<\/li>\n<\/ul>\n<h3><a id=\"post-171084-_heading=h.9y5srhsv9nng\"><\/a>Hydra<\/h3>\n<p>Todas las vulnerabilidades que identificamos utilizan la funci\u00f3n <a href=\"https:\/\/hydra.cc\/docs\/advanced\/instantiate_objects\/overview\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-family: 'courier new', courier, monospace;\">hydra.utils.instantiate()<\/span><\/a>, cuya finalidad es \"instanciar diferentes implementaciones de una interfaz\".<\/p>\n<p>La API de Hydra toma como argumentos un objeto de configuraci\u00f3n (como un diccionario Python o un <span style=\"font-family: 'courier new', courier, monospace;\"><a href=\"https:\/\/omegaconf.readthedocs.io\/en\/2.3_branch\/usage.html\" target=\"_blank\" rel=\"noopener\">objeto OmegaConf<\/a><\/span>) que describe la interfaz de destino que se va a <a href=\"https:\/\/dataplatform.cloud.ibm.com\/docs\/content\/wsd\/nodes\/type_instantiation.html?context=cpdaas\" target=\"_blank\" rel=\"noopener\">instanciar<\/a> y los par\u00e1metros opcionales <span style=\"font-family: 'courier new', courier, monospace;\">*args<\/span> y <span style=\"font-family: 'courier new', courier, monospace;\">**kwargs<\/span> que se van a pasar a esa interfaz. Esta configuraci\u00f3n espera un valor <span style=\"font-family: 'courier new', courier, monospace;\">_target_<\/span> que especifique la clase o la funci\u00f3n <a href=\"https:\/\/typing.python.org\/en\/latest\/spec\/callables.html\" target=\"_blank\" rel=\"noopener\">invocable<\/a> que se va a instanciar, y un valor <span style=\"font-family: 'courier new', courier, monospace;\">_args_<\/span> opcional que defina los argumentos para <span style=\"font-family: 'courier new', courier, monospace;\">_target_<\/span>.<\/p>\n<p>En cada uno de los casos que identificamos, <span style=\"font-family: 'courier new', courier, monospace;\">hydra.utils.instantiate()<\/span> solo se utiliza para instanciar instancias de clases de biblioteca con argumentos simples almacenados en metadatos. En la Figura 1 se muestra un ejemplo de los metadatos que NeMo pasa a la funci\u00f3n <span style=\"font-family: 'courier new', courier, monospace;\">instantiate()<\/span>.<\/p>\n<figure id=\"attachment_170322\" aria-describedby=\"caption-attachment-170322\" style=\"width: 1000px\" class=\"wp-caption alignnone\"><img  class=\"wp-image-170322 lozad\"  data-src=\"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2026\/01\/word-image-33851-170309-1.png\" alt=\"Captura de pantalla del c\u00f3digo inform\u00e1tico que contiene los par\u00e1metros de configuraci\u00f3n de un modelo de aprendizaje autom\u00e1tico.\" width=\"1000\" height=\"234\" srcset=\"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2026\/01\/word-image-33851-170309-1.png 1018w, https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2026\/01\/word-image-33851-170309-1-786x184.png 786w, https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2026\/01\/word-image-33851-170309-1-768x180.png 768w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><figcaption id=\"caption-attachment-170322\" class=\"wp-caption-text\">Figura 1. Metadatos de un archivo NeMo.<\/figcaption><\/figure>\n<p>Lo que estas bibliotecas parecen haber pasado por alto es que <span style=\"font-family: 'courier new', courier, monospace;\">instantiate()<\/span> no solo acepta el nombre de las clases que se van a instanciar. Tambi\u00e9n toma el nombre de cualquier funci\u00f3n invocable y le pasa los argumentos proporcionados.<\/p>\n<p>Aprovechando esto, un atacante puede lograr m\u00e1s f\u00e1cilmente un RCE utilizando funciones integradas de Python como <span style=\"font-family: 'courier new', courier, monospace;\"><a href=\"https:\/\/docs.python.org\/3\/library\/functions.html#eval\">eval()<\/a><\/span> y <span style=\"font-family: 'courier new', courier, monospace;\"><a href=\"https:\/\/docs.python.org\/3\/library\/os.html#os.system\">os.system()<\/a><\/span>. En todas las pruebas de concepto que utilizamos para probar estas vulnerabilidades, empleamos una carga \u00fatil utilizando <span style=\"font-family: 'courier new', courier, monospace;\">builtins.exec()<\/span> como la funci\u00f3n invocable y una cadena que conten\u00eda Python como argumento.<\/p>\n<p>Desde que se identificaron estos problemas por primera vez, <a href=\"https:\/\/github.com\/facebookresearch\/hydra\/commit\/4d30546745561adf4e92ad897edb2e340d5685f0\" target=\"_blank\" rel=\"noopener\">Hydra se ha actualizado<\/a> para agregar una advertencia a su documentaci\u00f3n indicativa de que es posible realizar RCE al utilizar <span style=\"font-family: 'courier new', courier, monospace;\">instantiate()<\/span> y para agregar un sencillo mecanismo de lista de bloqueo. Este mecanismo funciona comparando el valor <span style=\"font-family: 'courier new', courier, monospace;\">_target_<\/span> con una lista de funciones peligrosas como <span style=\"font-family: 'courier new', courier, monospace;\">builtins.exec()<\/span> antes de que se invoque.<\/p>\n<p>Dado que este mecanismo utiliza coincidencias exactas con los objetivos de importaci\u00f3n antes de que se importen, se puede eludir f\u00e1cilmente mediante el uso de importaciones impl\u00edcitas de la biblioteca est\u00e1ndar de Python (por ejemplo, <a href=\"https:\/\/github.com\/python\/cpython\/blob\/3.14\/Lib\/enum.py#L2\" target=\"_blank\" rel=\"noopener\"><span style=\"font-family: 'courier new', courier, monospace;\">enum.bltns.eval<\/span><\/a>) o de la aplicaci\u00f3n de destino (por ejemplo, <a href=\"https:\/\/nemo.core.classes.common.os\" target=\"_blank\" rel=\"noopener\"><span style=\"font-family: 'courier new', courier, monospace;\">nemo.core.classes.common.os.system<\/span><\/a>). Sin embargo, la documentaci\u00f3n de Hydra indica claramente que este mecanismo no es exhaustivo y no se debe confiar \u00fanicamente en \u00e9l para impedir la ejecuci\u00f3n de c\u00f3digo malicioso. A fecha de enero de 2026, este mecanismo de lista de bloqueo a\u00fan no est\u00e1 disponible en ninguna versi\u00f3n de Hydra.<\/p>\n<h3><a id=\"post-171084-_heading=h.qabi7rs55235\"><\/a>NeMo<\/h3>\n<p>NVIDIA lleva desarrollando la biblioteca <a href=\"https:\/\/github.com\/NVIDIA\/NeMo\/tree\/main\" target=\"_blank\" rel=\"noopener\">NeMo<\/a> desde 2019, como un \"marco de IA generativa escalable y nativo de la nube\". NeMo utiliza <a href=\"https:\/\/docs.nvidia.com\/nemo-framework\/user-guide\/24.07\/playbooks\/ptq.html#convert-nemo-checkpoint-to-qnemo-format\" target=\"_blank\" rel=\"noopener\">sus propios formatos de archivo<\/a> con las extensiones <span style=\"font-family: 'courier new', courier, monospace;\">.nemo<\/span> y <span style=\"font-family: 'courier new', courier, monospace;\">.qnemo<\/span>, que son simplemente archivos TAR que contienen un archivo <span style=\"font-family: 'courier new', courier, monospace;\">model_config.yaml<\/span> que almacena los metadatos del modelo junto con un archivo <span style=\"font-family: 'courier new', courier, monospace;\">.pt<\/span> o un archivo <span style=\"font-family: 'courier new', courier, monospace;\">.safetensors<\/span>, respectivamente.<\/p>\n<p>Los principales puntos de entrada para cargar estos archivos de modelo <span style=\"font-family: 'courier new', courier, monospace;\">.nemo<\/span> son <span style=\"font-family: 'courier new', courier, monospace;\"><a href=\"https:\/\/github.com\/NVIDIA\/NeMo\/blob\/cd55157cb05e0a60066caf31e3354ff0e690b086\/nemo\/core\/classes\/common.py#L580\" target=\"_blank\" rel=\"noopener\">restore_from()<\/a><\/span> y <span style=\"font-family: 'courier new', courier, monospace;\"><a href=\"https:\/\/github.com\/NVIDIA\/NeMo\/blob\/cd55157cb05e0a60066caf31e3354ff0e690b086\/nemo\/core\/classes\/common.py#L711\" target=\"_blank\" rel=\"noopener\">from_pretrained()<\/a> <\/span>Hay varias capas de abstracci\u00f3n, pero en \u00faltima instancia, la mezcla de <a href=\"https:\/\/github.com\/NVIDIA\/NeMo\/blob\/cd55157cb05e0a60066caf31e3354ff0e690b086\/nemo\/core\/classes\/common.py#L472\" target=\"_blank\" rel=\"noopener\">serializaci\u00f3n<\/a> se utiliza para gestionar la carga de la configuraci\u00f3n del modelo una vez que se ha cargado desde el archivo <span style=\"font-family: 'courier new', courier, monospace;\">model_config.yaml<\/span> incrustado. En la Figura 2 se muestra la llamada vulnerable a <span style=\"font-family: 'courier new', courier, monospace;\">hydra.utils.instantiate()<\/span>.<\/p>\n<figure id=\"attachment_170333\" aria-describedby=\"caption-attachment-170333\" style=\"width: 745px\" class=\"wp-caption alignnone\"><img  class=\"wp-image-170333 lozad\"  data-src=\"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2026\/01\/word-image-35928-170309-2.png\" alt=\"Captura de pantalla del c\u00f3digo inform\u00e1tico de la API de Hydra, en la que se muestran sentencias condicionales escritas en Python para gestionar la instanciaci\u00f3n basada en la configuraci\u00f3n.\" width=\"745\" height=\"225\" \/><figcaption id=\"caption-attachment-170333\" class=\"wp-caption-text\">Figura 2. Llamada a <span style=\"font-family: 'courier new', courier, monospace;\">hydra.utils.instantiate()<\/span> en NeMo.<\/figcaption><\/figure>\n<p>En ning\u00fan momento se realiza ninguna desinfecci\u00f3n de los metadatos antes de pasarlos a <span style=\"font-family: 'courier new', courier, monospace;\">instantiate()<\/span>. Dado que la llamada se realiza antes de que la clase del modelo de destino comience su inicializaci\u00f3n, es f\u00e1cil crear un archivo <span style=\"font-family: 'courier new', courier, monospace;\">model_config.yaml<\/span> con una carga \u00fatil que funcione, como se muestra en la Figura 3.<\/p>\n<figure id=\"attachment_170344\" aria-describedby=\"caption-attachment-170344\" style=\"width: 400px\" class=\"wp-caption alignnone\"><img  class=\"wp-image-170344 lozad\"  data-src=\"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2026\/01\/word-image-37858-170309-3.png\" alt=\"Captura de pantalla del c\u00f3digo en un editor de texto, con l\u00edneas escritas en Python. El c\u00f3digo incluye una instrucci\u00f3n de impresi\u00f3n con &quot;Hola, mundo&quot;.\" width=\"400\" height=\"111\" \/><figcaption id=\"caption-attachment-170344\" class=\"wp-caption-text\">Figura 3. Ejemplo de metadatos que activan la vulnerabilidad NeMo.<\/figcaption><\/figure>\n<p>NeMo tambi\u00e9n se integra con HuggingFace y admite pasar el nombre de un modelo alojado en HuggingFace a <span style=\"font-family: 'courier new', courier, monospace;\">from_pretrained()<\/span>, que es la forma en que parecen utilizarse la mayor\u00eda de los modelos de NeMo en HuggingFace. Esta llamada tambi\u00e9n es vulnerable porque una vez que se descarga el modelo de HuggingFace, se siguen las mismas rutas de c\u00f3digo.<\/p>\n<p>En enero de 2026, m\u00e1s de 700 modelos de HuggingFace de diversos desarrolladores se proporcionan en formato NeMo. Muchos de estos modelos se encuentran entre los m\u00e1s populares de HuggingFace, como el <a href=\"https:\/\/huggingface.co\/nvidia\/parakeet-tdt-0.6b-v2\" target=\"_blank\" rel=\"noopener\">parakeet<\/a> de NVIDIA. Esta vulnerabilidad parece existir <a href=\"https:\/\/github.com\/NVIDIA\/NeMo\/commit\/3206fafab654d9448297211ac50dfd4089338fe5\" target=\"_blank\" rel=\"noopener\">al menos desde 2020<\/a>.<\/p>\n<p>El formato PyTorch que ampl\u00eda NeMo admite la ejecuci\u00f3n de c\u00f3digo con archivos <span style=\"font-family: 'courier new', courier, monospace;\">.pickle<\/span> incrustados, pero <a href=\"https:\/\/docs.pytorch.org\/docs\/stable\/generated\/torch.load.html#torch.load\" target=\"_blank\" rel=\"noopener\">lo documenta claramente<\/a>. Este formato PyTorch tambi\u00e9n deshabilita la ejecuci\u00f3n arbitraria de forma predeterminada y ofrece varias medidas de seguridad, como <a href=\"https:\/\/docs.pytorch.org\/docs\/stable\/notes\/serialization.html#torch.serialization.add_safe_globals\" target=\"_blank\" rel=\"noopener\">la lista de m\u00f3dulos permitidos<\/a> durante la carga de archivos <span style=\"font-family: 'courier new', courier, monospace;\">.pickle<\/span>. NeMo permite la carga de archivos <span style=\"font-family: 'courier new', courier, monospace;\">.pickle<\/span> incrustados dentro de los archivos PyTorch incrustados en archivos <span style=\"font-family: 'courier new', courier, monospace;\">.nemo<\/span>, pero el mecanismo de lista de permitidos integrado en PyTorch deber\u00eda impedir la ejecuci\u00f3n de c\u00f3digo arbitrario.<\/p>\n<p>NVIDIA reconoci\u00f3 este problema, public\u00f3 un registro CVE <a href=\"https:\/\/nvidia.custhelp.com\/app\/answers\/detail\/a_id\/5686\" target=\"_blank\" rel=\"noopener\">CVE-2025-23304<\/a> calificado como de gravedad alta y public\u00f3 una correcci\u00f3n en la versi\u00f3n 2.3.2 de NeMo.<\/p>\n<p>Para abordar este problema, NeMo agreg\u00f3 una funci\u00f3n <span style=\"font-family: 'courier new', courier, monospace;\"><a href=\"https:\/\/github.com\/NVIDIA-NeMo\/NeMo\/blob\/v2.5.2\/nemo\/core\/classes\/common.py#L165\" target=\"_blank\" rel=\"noopener\">safe_instantiate<\/a> <\/span>para validar los valores <span style=\"font-family: 'courier new', courier, monospace;\">_target_<\/span> de las configuraciones de Hydra antes de que se ejecuten. Esta funci\u00f3n busca de forma recursiva los valores <span style=\"font-family: 'courier new', courier, monospace;\">_target_<\/span> en la configuraci\u00f3n y valida cada uno de ellos, lo que impide el uso de objetos anidados para RCE. Una nueva funci\u00f3n <a href=\"https:\/\/github.com\/NVIDIA-NeMo\/NeMo\/blob\/v2.5.2\/nemo\/core\/classes\/common.py#L92\" target=\"_blank\" rel=\"noopener\"><span style=\"font-family: 'courier new', courier, monospace;\">_is_target_allowed<\/span><\/a> comprueba primero cada valor <span style=\"font-family: 'courier new', courier, monospace;\">_target_<\/span> con una lista de prefijos permitidos que contiene nombres de paquetes de NeMo, PyTorch y bibliotecas relacionadas.<\/p>\n<p>Esta comprobaci\u00f3n de prefijos por s\u00ed sola no ser\u00eda suficiente para evitar las importaciones impl\u00edcitas de m\u00f3dulos peligrosos, como es el caso del nuevo mecanismo de lista de bloqueo de Hydra. Sin embargo, NeMo importa adicionalmente cada objetivo utilizando Hydra y comprueba si:<\/p>\n<ul>\n<li>Es una subclase de una clase esperada.<\/li>\n<li>La importaci\u00f3n tiene un nombre de m\u00f3dulo de una lista de permitidos de m\u00f3dulos esperados.<\/li>\n<\/ul>\n<p>Al comprobar el valor real importado con estas listas de permitidos, NeMo garantiza que solo se ejecuten los objetivos esperados. Por ejemplo, el objetivo <span style=\"font-family: 'courier new', courier, monospace;\">nemo.core.classes.common.os.system<\/span> se resuelve en el m\u00f3dulo posix, que claramente no forma parte de la biblioteca NeMo.<\/p>\n<h3><a id=\"post-171084-_heading=h.2o3q3524rryv\"><\/a>Uni2TS<\/h3>\n<p>En 2024, el equipo de investigaci\u00f3n de IA de Salesforce public\u00f3 un art\u00edculo titulado <a href=\"https:\/\/arxiv.org\/abs\/2402.02592\" target=\"_blank\" rel=\"noopener\">Unified Training of Universal Time Series Transformers<\/a> (Formaci\u00f3n unificada de transformadores de series temporales universales), en el que se presentaba un conjunto de modelos publicados en <a href=\"https:\/\/huggingface.co\/collections\/Salesforce\/moirai-r-models-65c8d3a94c51428c300e0742\" target=\"_blank\" rel=\"noopener\">HuggingFace<\/a>. Esta investigaci\u00f3n y el uso de estos modelos dependen de <span style=\"font-family: 'courier new', courier, monospace;\"><a href=\"https:\/\/github.com\/SalesforceAIResearch\/uni2ts\" target=\"_blank\" rel=\"noopener\">uni2TS<\/a><\/span>, una biblioteca Python de c\u00f3digo abierto que acompa\u00f1aba al art\u00edculo de Salesforce.<\/p>\n<p>La biblioteca <span style=\"font-family: 'courier new', courier, monospace;\">uni2TS<\/span> funciona exclusivamente con archivos <span style=\"font-family: 'courier new', courier, monospace;\">.safetensors<\/span>, que fueron <a href=\"https:\/\/github.com\/huggingface\/safetensors?tab=readme-ov-file#safetensors-1\" target=\"_blank\" rel=\"noopener\">dise\u00f1ados expl\u00edcitamente<\/a> para proporcionar una alternativa segura a los formatos de modelos que permiten la ejecuci\u00f3n de c\u00f3digo. El formato safetensors tampoco admite expl\u00edcitamente el almacenamiento de configuraciones de modelos o canalizaciones.<\/p>\n<p>Para facilitar el almacenamiento de estas configuraciones, bibliotecas como <span style=\"font-family: 'courier new', courier, monospace;\"><a href=\"https:\/\/huggingface.co\/docs\/huggingface_hub\/main\/en\/guides\/integrations#config\" target=\"_blank\" rel=\"noopener\">huggingface_hub<\/a> <\/span>de HuggingFace utilizan un archivo <span style=\"font-family: 'courier new', courier, monospace;\">config.json<\/span> almacenado en el repositorio de un modelo. En el caso de los modelos que utilizan clases de una de las bibliotecas principales de ML de HuggingFace, esto se hace de forma segura, ya que solo se utilizan par\u00e1metros que se pueden almacenar directamente en tipos primitivos JSON. A continuaci\u00f3n, estos valores se pasan a un conjunto predefinido y codificado de clases.<\/p>\n<p>Sin embargo, <span style=\"font-family: 'courier new', courier, monospace;\">huggingface_hub<\/span> proporciona una interfaz <a href=\"https:\/\/huggingface.co\/docs\/huggingface_hub\/en\/package_reference\/mixins#huggingface_hub.PyTorchModelHubMixin\" target=\"_blank\" rel=\"noopener\"><span style=\"font-family: 'courier new', courier, monospace;\">PyTorchModelHubMixin<\/span><\/a> para crear clases de modelos personalizadas que se pueden integrar con el resto de su marco. Como parte de esta interfaz, los valores se leen del archivo <span style=\"font-family: 'courier new', courier, monospace;\">config.json<\/span> empaquetado y se pasan a la clase del modelo.<\/p>\n<p>Esta interfaz proporciona un mecanismo poco utilizado para registrar funciones denominadas codificadores, que procesan argumentos espec\u00edficos antes de que se pasen a la clase. La biblioteca <span style=\"font-family: 'courier new', courier, monospace;\">uni2TS<\/span> <a href=\"https:\/\/github.com\/SalesforceAIResearch\/uni2ts\/blob\/964240482e1f444987fe8ef8451871f1a57dd568\/src\/uni2ts\/model\/moirai_moe\/module.py#L59\" target=\"_blank\" rel=\"noopener\">aprovecha este mecanismo<\/a> para decodificar la configuraci\u00f3n de un argumento espec\u00edfico mediante una llamada a <span style=\"font-family: 'courier new', courier, monospace;\">hydra.utils.instantiate()<\/span> antes de que se pase a la clase de destino, como se muestra en la Figura 4.<\/p>\n<figure id=\"attachment_170355\" aria-describedby=\"caption-attachment-170355\" style=\"width: 807px\" class=\"wp-caption alignnone\"><img  class=\"wp-image-170355 lozad\"  data-src=\"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2026\/01\/word-image-39658-170309-4.png\" alt=\"Captura de pantalla del c\u00f3digo Python que incluye una funci\u00f3n para decodificar la salida de distribuci\u00f3n y una definici\u00f3n de clase que utiliza PyTorch.\" width=\"807\" height=\"253\" srcset=\"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2026\/01\/word-image-39658-170309-4.png 807w, https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2026\/01\/word-image-39658-170309-4-786x246.png 786w, https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2026\/01\/word-image-39658-170309-4-768x241.png 768w\" sizes=\"(max-width: 807px) 100vw, 807px\" \/><figcaption id=\"caption-attachment-170355\" class=\"wp-caption-text\">Figura 4. Llamada a <span style=\"font-family: 'courier new', courier, monospace;\">hydra.utils.instantiate()<\/span> en <span style=\"font-family: 'courier new', courier, monospace;\">uni2TS<\/span>.<\/figcaption><\/figure>\n<p>Este c\u00f3digo se ejecuta cuando se carga uno de los modelos publicados utilizando <span style=\"font-family: 'courier new', courier, monospace;\">MoraiModule.from_pretrained()<\/span> o <span style=\"font-family: 'courier new', courier, monospace;\">MoraiMoEModule.from_pretrained()<\/span>. Al agregar nuestra carga \u00fatil al archivo <span style=\"font-family: 'courier new', courier, monospace;\">config.json<\/span> empaquetado con los modelos mediante <span style=\"font-family: 'courier new', courier, monospace;\">uni2TS<\/span>, como se muestra en la Figura 5, se puede lograr RCE cuando se carga el modelo.<\/p>\n<figure id=\"attachment_170366\" aria-describedby=\"caption-attachment-170366\" style=\"width: 354px\" class=\"wp-caption alignnone\"><img  class=\"wp-image-170366 lozad\"  data-src=\"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2026\/01\/word-image-41521-170309-5.png\" alt=\"Captura de pantalla de un script JSON que contiene un c\u00f3digo de funci\u00f3n de impresi\u00f3n de Python que muestra &quot;Hola, mundo&quot;.\" width=\"354\" height=\"187\" \/><figcaption id=\"caption-attachment-170366\" class=\"wp-caption-text\">Figura 5. Ejemplo de metadatos <span style=\"font-family: 'courier new', courier, monospace;\">config.json<\/span> que activan la vulnerabilidad <span style=\"font-family: 'courier new', courier, monospace;\">uni2TS<\/span>.<\/figcaption><\/figure>\n<p>Los modelos de Salesforce que utilizan estas bibliotecas tienen hasta ahora cientos de miles de descargas en Hugging Face. Otros usuarios tambi\u00e9n han publicado varias adaptaciones de estos modelos en HuggingFace. No se ha descubierto ninguna prueba de actividad maliciosa relacionada con estos modelos.<\/p>\n<p>Salesforce reconoci\u00f3 este problema, public\u00f3 un registro CVE <a href=\"https:\/\/help.salesforce.com\/s\/articleView?id=005239354&amp;type=1\" target=\"_blank\" rel=\"noopener\">CVE-2026-22584<\/a>, calificado como de gravedad alta, y public\u00f3 una correcci\u00f3n el 31 de julio. Esta correcci\u00f3n implementa una lista de permitidos y una estricta comprobaci\u00f3n de validaci\u00f3n para garantizar que solo se puedan ejecutar los m\u00f3dulos expl\u00edcitamente permitidos.<\/p>\n<h3><a id=\"post-171084-_heading=h.7gbhvbmlhlhc\"><\/a>ml-flextok<\/h3>\n<p>A principios de 2025, <a href=\"https:\/\/arxiv.org\/abs\/2502.13967\" target=\"_blank\" rel=\"noopener\">Apple y el Laboratorio de Inteligencia Visual y Aprendizaje del Instituto Federal Suizo de Tecnolog\u00eda (EPFL VILAB) publicaron una investigaci\u00f3n<\/a> en la que presentaban una biblioteca Python de apoyo llamada <a href=\"https:\/\/github.com\/apple\/ml-flextok\" target=\"_blank\" rel=\"noopener\"><span style=\"font-family: 'courier new', courier, monospace;\">ml-flextok<\/span><\/a>. Al igual que <span style=\"font-family: 'courier new', courier, monospace;\">uni2TS, ml-flextok<\/span> funciona exclusivamente con el formato safetensors y ampl\u00eda <span style=\"font-family: 'courier new', courier, monospace;\">PyTorchModelHubMixin<\/span>. Tambi\u00e9n puede cargar metadatos desde un archivo <span style=\"font-family: 'courier new', courier, monospace;\">config.json<\/span> incluido en el repositorio del modelo. Esta biblioteca tambi\u00e9n admite la carga directa de datos de configuraci\u00f3n desde el archivo <span style=\"font-family: 'courier new', courier, monospace;\">.safetensors<\/span>, almacenando esta informaci\u00f3n en la secci\u00f3n de metadatos del archivo bajo la clave <span style=\"font-family: 'courier new', courier, monospace;\">__metadata__<\/span>.<\/p>\n<p>Dado que el formato safetensors representa los metadatos como un diccionario con claves y valores de cadena, y que la configuraci\u00f3n del modelo depende de listas de par\u00e1metros, es necesario utilizar una codificaci\u00f3n secundaria. <span style=\"font-family: 'courier new', courier, monospace;\">Ml-flextok<\/span> aprovecha Python como codificaci\u00f3n secundaria y utiliza <span style=\"font-family: 'courier new', courier, monospace;\"><a href=\"https:\/\/github.com\/apple\/ml-flextok\/blob\/87d00cc8babf4a25ffce0f3f0c4d8b529d3d6abf\/flextok\/utils\/checkpoint.py#L35\" target=\"_blank\" rel=\"noopener\">ast.literal_eval()<\/a><\/span> en la biblioteca est\u00e1ndar de Python para decodificar los metadatos.<\/p>\n<p><a href=\"https:\/\/docs.python.org\/3\/library\/ast.html#ast.literal_eval\" target=\"_blank\" rel=\"noopener\">Seg\u00fan se ha documentado<\/a>, esta funci\u00f3n no permite la ejecuci\u00f3n de c\u00f3digo arbitrario, pero es susceptible de sufrir ataques que provocan agotamiento de la memoria, consumo excesivo de CPU y fallos en los procesos. Una vez descodificados los metadatos, <span style=\"font-family: 'courier new', courier, monospace;\">ml-flextok<\/span> los pasa directamente a <a href=\"https:\/\/github.com\/apple\/ml-flextok\/blob\/87d00cc8babf4a25ffce0f3f0c4d8b529d3d6abf\/flextok\/utils\/checkpoint.py#L78\" target=\"_blank\" rel=\"noopener\"><span style=\"font-family: 'courier new', courier, monospace;\">hydra.utils.instantiate()<\/span><\/a>.<\/p>\n<p>Si el modelo se carga desde HuggingFace, estos metadatos se leen desde <span style=\"font-family: 'courier new', courier, monospace;\">config.json<\/span> y no se codifican dos veces, ya que se admiten estructuras complejas. Estos datos JSON se cargan como un diccionario y las secciones espec\u00edficas se pasan directamente a <span style=\"font-family: 'courier new', courier, monospace;\"><a href=\"https:\/\/github.com\/apple\/ml-flextok\/blob\/82379009ef7ee69bcda648fce8a1bbe3226ae377\/flextok\/flextok_wrapper.py#L264\" target=\"_blank\" rel=\"noopener\">instantiate()<\/a><\/span>.<\/p>\n<p>En ambos casos, las cargas \u00fatiles se crean con nombres que coinciden con los argumentos de <span style=\"font-family: 'courier new', courier, monospace;\">instantiate()<\/span>. Dependiendo de si la carga \u00fatil se agrega directamente al archivo <span style=\"font-family: 'courier new', courier, monospace;\">.safetensors<\/span> o al archivo <span style=\"font-family: 'courier new', courier, monospace;\">config.json<\/span> empaquetado, la codificaci\u00f3n y la ubicaci\u00f3n de la carga \u00fatil difieren ligeramente, pero la carga \u00fatil sigue siendo sencilla. En la Figura 6 se muestra una carga \u00fatil colocada en los metadatos de un archivo <span style=\"font-family: 'courier new', courier, monospace;\">.safetensors<\/span>.<\/p>\n<figure id=\"attachment_170377\" aria-describedby=\"caption-attachment-170377\" style=\"width: 885px\" class=\"wp-caption alignnone\"><img  class=\"wp-image-170377 lozad\"  data-src=\"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2026\/01\/word-image-43354-170309-6.png\" alt=\"Una l\u00ednea de c\u00f3digo que aparece en un fondo oscuro y que incluye el texto &quot;payload&quot;, &quot;target&quot; y &quot;builtins&quot;.\" width=\"885\" height=\"73\" srcset=\"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2026\/01\/word-image-43354-170309-6.png 885w, https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2026\/01\/word-image-43354-170309-6-786x65.png 786w, https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2026\/01\/word-image-43354-170309-6-768x63.png 768w\" sizes=\"(max-width: 885px) 100vw, 885px\" \/><figcaption id=\"caption-attachment-170377\" class=\"wp-caption-text\">Figura 6. Ejemplo de metadatos <span style=\"font-family: 'courier new', courier, monospace;\">.safetensors<\/span> que activan la vulnerabilidad <span style=\"font-family: 'courier new', courier, monospace;\">uni2TS<\/span>.<\/figcaption><\/figure>\n<p>A fecha de enero de 2026, ning\u00fan modelo de HuggingFace parece estar utilizando la biblioteca <span style=\"font-family: 'courier new', courier, monospace;\">ml-flextok<\/span>, salvo los modelos publicados por EPFL VILAB, que cuentan con decenas de miles de descargas en total.<\/p>\n<p>Apple y EPFL VILAB han actualizado su c\u00f3digo para resolver estos problemas utilizando <a href=\"https:\/\/yaml.org\/\" target=\"_blank\" rel=\"noopener\">YAML<\/a> para analizar sus configuraciones y agregar una <a href=\"https:\/\/github.com\/apple\/ml-flextok\/blob\/28e0ffc24e590bdab0099d4a317b601cdc674a5b\/flextok\/utils\/checkpoint.py#L23\" target=\"_blank\" rel=\"noopener\">lista de clases permitidas<\/a> que pasar\u00e1n a la funci\u00f3n <span style=\"font-family: 'courier new', courier, monospace;\">instantiate()<\/span> de Hydra. Tambi\u00e9n han <a href=\"https:\/\/github.com\/apple\/ml-flextok\/blob\/28e0ffc24e590bdab0099d4a317b601cdc674a5b\/README.md#model-zoo\" target=\"_blank\" rel=\"noopener\">actualizado su documentaci\u00f3n<\/a> para indicar que las cadenas almacenadas en los archivos de modelo se ejecutan como c\u00f3digo y que solo deben cargarse modelos de fuentes confiables.<\/p>\n<h2><a id=\"post-171084-_heading=h.virlg3c8xjfw\"><\/a>Conclusi\u00f3n<\/h2>\n<p>Palo Alto Networks no ha identificado ning\u00fan archivo modelo que aproveche estas vulnerabilidades para realizar ataques en el mundo real. Sin embargo, los atacantes tienen muchas oportunidades para aprovecharlas.<\/p>\n<p>Es habitual que los desarrolladores creen sus propias variaciones de modelos de \u00faltima generaci\u00f3n con diferentes ajustes y cuantificaciones, a menudo a partir de investigadores no afiliados a ninguna instituci\u00f3n de prestigio. Los atacantes solo tendr\u00edan que crear una modificaci\u00f3n de un modelo popular existente, con un beneficio real o supuesto, y luego agregar metadatos maliciosos.<\/p>\n<p>Antes de este hallazgo, no hab\u00eda indicios de que estas bibliotecas pudieran ser inseguras o de que solo debieran cargarse archivos de fuentes confiables. HuggingFace no permite actualmente a los usuarios acceder f\u00e1cilmente al contenido de los metadatos de estos archivos, como hace en otros casos (por ejemplo, las API a las que se hace referencia en los archivos <span style=\"font-family: 'courier new', courier, monospace;\">.pickle<\/span>). Tampoco se\u00f1ala los archivos que utilizan los formatos safetensors o NeMo como potencialmente inseguros.<\/p>\n<p>Dado que los \u00faltimos avances en este \u00e1mbito suelen requerir c\u00f3digo y no solo pesos de modelos, se ha producido una proliferaci\u00f3n de bibliotecas de apoyo. En octubre de 2025, identificamos m\u00e1s de un centenar de bibliotecas Python diferentes utilizadas por los modelos de HuggingFace, de las cuales casi 50 utilizan Hydra de alguna manera. Aunque estos formatos por s\u00ed solos pueden ser seguros, existe una superficie de ataque muy grande en el c\u00f3digo que los consume.<\/p>\n<h3><a id=\"post-171084-_heading=h.dywow5ofcbix\"><\/a>Protecci\u00f3n y mitigaci\u00f3n de Palo Alto Networks<\/h3>\n<p>Los clientes de Palo Alto Networks est\u00e1n mejor protegidos frente a las amenazas mencionadas gracias a los siguientes productos:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.paloaltonetworks.com\/prisma\/prisma-ai-runtime-security\" target=\"_blank\" rel=\"noopener\">Prisma AIRS<\/a> es capaz de identificar modelos que aprovechan estas vulnerabilidades y extraer sus cargas \u00fatiles.<\/li>\n<li>La <a href=\"https:\/\/www.paloaltonetworks.com\/cortex\/cloud\/vulnerability-management\" target=\"_blank\" rel=\"noopener\">gesti\u00f3n de vulnerabilidades<\/a> de Cortex Cloud identifica y gestiona im\u00e1genes base para m\u00e1quinas virtuales en la nube y entornos contenedorizados. Esto permite identificar y alertar sobre vulnerabilidades y errores de configuraci\u00f3n, y luego proporciona tareas de correcci\u00f3n para las im\u00e1genes de contenedores de nivel base identificadas. El agente Cortex Cloud tambi\u00e9n puede detectar las operaciones en tiempo de ejecuci\u00f3n que se describen en este art\u00edculo.<\/li>\n<li>La <a href=\"https:\/\/www.paloaltonetworks.com\/resources\/datasheets\/unit-42-ai-security-assessment\" target=\"_blank\" rel=\"noopener\">evaluaci\u00f3n de seguridad de IA de Unit 42<\/a> puede ayudar a las organizaciones a reducir el riesgo de adopci\u00f3n de la IA, proteger la innovaci\u00f3n en IA y reforzar la gobernanza de la IA.<\/li>\n<\/ul>\n<p>Si cree que puede haber resultado vulnerado o tiene un problema urgente, p\u00f3ngase en contacto con el <a href=\"https:\/\/start.paloaltonetworks.com\/contact-unit42.html\" target=\"_blank\" rel=\"noopener\">equipo de respuesta ante incidentes de Unit\u00a042<\/a> o llame al:<\/p>\n<ul>\n<li>Norteam\u00e9rica: llamada gratuita: +1\u00a0(866)\u00a0486-4842 (866.4.UNIT42)<\/li>\n<li>Reino Unido: +44.20.3743.3660<\/li>\n<li>Europa y Oriente Medio: +31.20.299.3130<\/li>\n<li>Asia: +65.6983.8730<\/li>\n<li>Jap\u00f3n: +81.50.1790.0200<\/li>\n<li>Australia: +61.2.4062.7950<\/li>\n<li>India: 00 800 050 45107<\/li>\n<li>Corea del Sur: +82.080.467.8774<\/li>\n<\/ul>\n<p>Palo Alto Networks ha compartido estos resultados con nuestros compa\u00f1eros de Cyber Threat Alliance (CTA). Los miembros de CTA utilizan esta inteligencia para implementar r\u00e1pidamente medidas de protecci\u00f3n para sus clientes y desarticular sistem\u00e1ticamente a los ciberdelincuentes. Obtenga m\u00e1s informaci\u00f3n sobre <a href=\"https:\/\/www.cyberthreatalliance.org\" target=\"_blank\" rel=\"noopener\">Cyber Threat Alliance<\/a>.<\/p>\n<h2><a id=\"post-171084-_heading=h.a8l610i6s6bl\"><\/a>Recursos adicionales<\/h2>\n<ul>\n<li><a href=\"https:\/\/hydra.cc\/\" target=\"_blank\" rel=\"noopener\">Documentaci\u00f3n de Hydra<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/NVIDIA\/NeMo\/tree\/main\" target=\"_blank\" rel=\"noopener\">C\u00f3digo fuente de NeMo<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/SalesforceAIResearch\/uni2ts\" target=\"_blank\" rel=\"noopener\">C\u00f3digo fuente de uni2ts<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/apple\/ml-flextok\" target=\"_blank\" rel=\"noopener\">C\u00f3digo fuente de ml-flextok<\/a><\/li>\n<li><a href=\"https:\/\/huggingface.co\/models?library=nemo\" target=\"_blank\" rel=\"noopener\">Modelos NeMo en HuggingFace<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Hemos identificado vulnerabilidades de ejecuci\u00f3n remota de c\u00f3digo en bibliotecas de IA\/ML de c\u00f3digo abierto publicadas por Apple, Salesforce y NVIDIA.<\/p>\n","protected":false},"author":366,"featured_media":170321,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[8838,8856],"tags":[9769,9894,9895,9892,9549,9893,9504],"product_categories":[8928,8932,8933,8948,8890],"coauthors":[9870],"class_list":["post-171084","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-threat-research-es-la","category-vulnerabilities-es-la","tag-apple-es-la","tag-cve-2025-23304","tag-cve-2026-22584","tag-nvidia","tag-python-es-la","tag-pytorch","tag-salesforce-es-la","product_categories-code-to-cloud-platform-es-la","product_categories-cortex-es-la","product_categories-cortex-cloud-es-la","product_categories-unit-42-ai-security-assessment-es-la","product_categories-unit-42-incident-response-es-la"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.0 (Yoast SEO v27.0) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Ejecuci\u00f3n remota de c\u00f3digo con formatos y bibliotecas modernos de IA\/ML<\/title>\n<meta name=\"description\" content=\"Hemos identificado vulnerabilidades de ejecuci\u00f3n remota de c\u00f3digo en bibliotecas de IA\/ML de c\u00f3digo abierto publicadas por Apple, Salesforce y NVIDIA.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/unit42.paloaltonetworks.com\/es-la\/rce-vulnerabilities-in-ai-python-libraries\/\" \/>\n<meta property=\"og:locale\" content=\"es_LA\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ejecuci\u00f3n remota de c\u00f3digo con formatos y bibliotecas modernos de IA\/ML\" \/>\n<meta property=\"og:description\" content=\"Hemos identificado vulnerabilidades de ejecuci\u00f3n remota de c\u00f3digo en bibliotecas de IA\/ML de c\u00f3digo abierto publicadas por Apple, Salesforce y NVIDIA.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/unit42.paloaltonetworks.com\/es-la\/rce-vulnerabilities-in-ai-python-libraries\/\" \/>\n<meta property=\"og:site_name\" content=\"Unit 42\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-13T19:27:39+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-01-23T19:29:28+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2026\/01\/05_Vulnerabilities_1920x900.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"900\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Curtis Carmony\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Ejecuci\u00f3n remota de c\u00f3digo con formatos y bibliotecas modernos de IA\/ML","description":"Hemos identificado vulnerabilidades de ejecuci\u00f3n remota de c\u00f3digo en bibliotecas de IA\/ML de c\u00f3digo abierto publicadas por Apple, Salesforce y NVIDIA.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/unit42.paloaltonetworks.com\/es-la\/rce-vulnerabilities-in-ai-python-libraries\/","og_locale":"es_LA","og_type":"article","og_title":"Ejecuci\u00f3n remota de c\u00f3digo con formatos y bibliotecas modernos de IA\/ML","og_description":"Hemos identificado vulnerabilidades de ejecuci\u00f3n remota de c\u00f3digo en bibliotecas de IA\/ML de c\u00f3digo abierto publicadas por Apple, Salesforce y NVIDIA.","og_url":"https:\/\/unit42.paloaltonetworks.com\/es-la\/rce-vulnerabilities-in-ai-python-libraries\/","og_site_name":"Unit 42","article_published_time":"2026-01-13T19:27:39+00:00","article_modified_time":"2026-01-23T19:29:28+00:00","og_image":[{"width":1920,"height":900,"url":"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2026\/01\/05_Vulnerabilities_1920x900.jpg","type":"image\/jpeg"}],"author":"Curtis Carmony","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/unit42.paloaltonetworks.com\/es-la\/rce-vulnerabilities-in-ai-python-libraries\/#article","isPartOf":{"@id":"https:\/\/unit42.paloaltonetworks.com\/es-la\/rce-vulnerabilities-in-ai-python-libraries\/"},"author":{"name":"Sheida Azimi","@id":"https:\/\/unit42.paloaltonetworks.com\/#\/schema\/person\/7ee97ec6f224446d57c0383eb5fd3639"},"headline":"Ejecuci\u00f3n remota de c\u00f3digo con formatos y bibliotecas modernos de IA\/ML","datePublished":"2026-01-13T19:27:39+00:00","dateModified":"2026-01-23T19:29:28+00:00","mainEntityOfPage":{"@id":"https:\/\/unit42.paloaltonetworks.com\/es-la\/rce-vulnerabilities-in-ai-python-libraries\/"},"wordCount":3717,"image":{"@id":"https:\/\/unit42.paloaltonetworks.com\/es-la\/rce-vulnerabilities-in-ai-python-libraries\/#primaryimage"},"thumbnailUrl":"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2026\/01\/05_Vulnerabilities_1920x900.jpg","keywords":["Apple","CVE-2025-23304","CVE-2026-22584","NVIDIA","Python","PyTorch","Salesforce"],"articleSection":["Investigaci\u00f3n de amenazas","Vulnerabilidades"],"inLanguage":"es"},{"@type":"WebPage","@id":"https:\/\/unit42.paloaltonetworks.com\/es-la\/rce-vulnerabilities-in-ai-python-libraries\/","url":"https:\/\/unit42.paloaltonetworks.com\/es-la\/rce-vulnerabilities-in-ai-python-libraries\/","name":"Ejecuci\u00f3n remota de c\u00f3digo con formatos y bibliotecas modernos de IA\/ML","isPartOf":{"@id":"https:\/\/unit42.paloaltonetworks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/unit42.paloaltonetworks.com\/es-la\/rce-vulnerabilities-in-ai-python-libraries\/#primaryimage"},"image":{"@id":"https:\/\/unit42.paloaltonetworks.com\/es-la\/rce-vulnerabilities-in-ai-python-libraries\/#primaryimage"},"thumbnailUrl":"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2026\/01\/05_Vulnerabilities_1920x900.jpg","datePublished":"2026-01-13T19:27:39+00:00","dateModified":"2026-01-23T19:29:28+00:00","author":{"@id":"https:\/\/unit42.paloaltonetworks.com\/#\/schema\/person\/7ee97ec6f224446d57c0383eb5fd3639"},"description":"Hemos identificado vulnerabilidades de ejecuci\u00f3n remota de c\u00f3digo en bibliotecas de IA\/ML de c\u00f3digo abierto publicadas por Apple, Salesforce y NVIDIA.","breadcrumb":{"@id":"https:\/\/unit42.paloaltonetworks.com\/es-la\/rce-vulnerabilities-in-ai-python-libraries\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/unit42.paloaltonetworks.com\/es-la\/rce-vulnerabilities-in-ai-python-libraries\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/unit42.paloaltonetworks.com\/es-la\/rce-vulnerabilities-in-ai-python-libraries\/#primaryimage","url":"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2026\/01\/05_Vulnerabilities_1920x900.jpg","contentUrl":"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2026\/01\/05_Vulnerabilities_1920x900.jpg","width":1920,"height":900,"caption":"Pictorial representation of remote code execution in AI and machine learning libraries. Close-up of a woman wearing glasses and focusing intently on a computer screen."},{"@type":"BreadcrumbList","@id":"https:\/\/unit42.paloaltonetworks.com\/es-la\/rce-vulnerabilities-in-ai-python-libraries\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/unit42.paloaltonetworks.com\/"},{"@type":"ListItem","position":2,"name":"Ejecuci\u00f3n remota de c\u00f3digo con formatos y bibliotecas modernos de IA\/ML"}]},{"@type":"WebSite","@id":"https:\/\/unit42.paloaltonetworks.com\/#website","url":"https:\/\/unit42.paloaltonetworks.com\/","name":"Unit 42","description":"Palo Alto Networks","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/unit42.paloaltonetworks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/unit42.paloaltonetworks.com\/#\/schema\/person\/7ee97ec6f224446d57c0383eb5fd3639","name":"Sheida Azimi","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/unit42.paloaltonetworks.com\/#\/schema\/person\/image\/4ffb3c2d260a0150fb91b3715442f8b3","url":"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2018\/11\/unit-news-meta.svg","contentUrl":"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2018\/11\/unit-news-meta.svg","caption":"Sheida Azimi"},"url":"https:\/\/unit42.paloaltonetworks.com\/es-la\/author\/sheida-azimi\/"}]}},"_links":{"self":[{"href":"https:\/\/unit42.paloaltonetworks.com\/es-la\/wp-json\/wp\/v2\/posts\/171084","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/unit42.paloaltonetworks.com\/es-la\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/unit42.paloaltonetworks.com\/es-la\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/unit42.paloaltonetworks.com\/es-la\/wp-json\/wp\/v2\/users\/366"}],"replies":[{"embeddable":true,"href":"https:\/\/unit42.paloaltonetworks.com\/es-la\/wp-json\/wp\/v2\/comments?post=171084"}],"version-history":[{"count":1,"href":"https:\/\/unit42.paloaltonetworks.com\/es-la\/wp-json\/wp\/v2\/posts\/171084\/revisions"}],"predecessor-version":[{"id":171087,"href":"https:\/\/unit42.paloaltonetworks.com\/es-la\/wp-json\/wp\/v2\/posts\/171084\/revisions\/171087"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/unit42.paloaltonetworks.com\/es-la\/wp-json\/wp\/v2\/media\/170321"}],"wp:attachment":[{"href":"https:\/\/unit42.paloaltonetworks.com\/es-la\/wp-json\/wp\/v2\/media?parent=171084"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/unit42.paloaltonetworks.com\/es-la\/wp-json\/wp\/v2\/categories?post=171084"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/unit42.paloaltonetworks.com\/es-la\/wp-json\/wp\/v2\/tags?post=171084"},{"taxonomy":"product_categories","embeddable":true,"href":"https:\/\/unit42.paloaltonetworks.com\/es-la\/wp-json\/wp\/v2\/product_categories?post=171084"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/unit42.paloaltonetworks.com\/es-la\/wp-json\/wp\/v2\/coauthors?post=171084"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}