PickleFuzzer: A Case Study in Fuzzing for Discrepancies Between Python Pickle Implementations
Este artículo presenta PickleFuzzer, un fuzzer diferencial basado en gramáticas que identifica 14 discrepancias críticas en las implementaciones de pickle de Python, incluidas vulnerabilidades que permiten a los atacantes eludir herramientas de escaneo de seguridad en plataformas como Hugging Face.
Artículo original bajo licencia CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Esta es una explicación generada por IA del artículo a continuación. No ha sido escrita ni avalada por los autores. Para mayor precisión técnica, consulte el artículo original. Leer descargo de responsabilidad completo
Imagina que tienes una máquina mágica que puede convertir cualquier objeto de tu casa —un juguete, un libro o un sándwich— en una larga cadena de instrucciones (como una receta). Esto es lo que hace Pickle de Python: convierte datos complejos de computadora en una cadena de instrucciones para que puedan guardarse o enviarse por internet. Más tarde, otra máquina lee esas instrucciones para reconstruir el objeto exactamente como estaba.
Sin embargo, hay un truco. Si alguien te envía una "receta" que cocinó él mismo, y tú la sigues ciegamente, esa receta podría decirle a tu máquina que haga algo peligroso, como borrar tus archivos o robar tus contraseñas. Debido a esto, los expertos en seguridad crearon escáneres (como los detectores de metales en un aeropuerto) para verificar estas recetas antes de que tu máquina las lea. Si el escáner detecta una instrucción peligrosa, detiene el proceso.
El Problema: Tres Chefs Diferentes, Tres Reglas Diferentes
Aquí está el giro: las personas que construyeron el "lector de recetas" (la máquina que lee Pickle) no escribieron un único libro de reglas. En su lugar, construyeron tres versiones diferentes del lector:
- Chef A (Python): Escrito en Python, el lenguaje estándar.
- Chef B (C): Escrito en un lenguaje más rápido y de nivel inferior llamado C.
- Chef C (El Inspector): Una herramienta utilizada por los escáneres de seguridad para leer la receta antes de que los otros chefs la cocinen.
El problema es que estos tres chefs no siempre se ponen de acuerdo sobre qué cuenta como una receta válida. A veces, una instrucción específica podría hacer que el Chef A y el Chef B digan: "Oh, eso está bien, la cocinaré", mientras que el Chef C (el Inspector) dice: "Espera, eso está roto ¡No puedo leer esto!".
Si un hacker lo sabe, puede crear una "receta envenenada" que parezca rota para el Inspector (para que pase el escáner de seguridad) pero que parezca perfectamente válida para el Chef A o el Chef B (quienes luego ejecutarán felizmente los comandos peligrosos). Esto es como mostrarle a un guardia una identificación falsa que le parezca sospechosa, para que te haga pasar, y luego mostrar una identificación real al portero de adentro que te deja entrar.
La Solución: PICKLEFUZZER
Los investigadores de este artículo construyeron una herramienta llamada PICKLEFUZZER. Imagínala como un probador de sabores automatizado y súper rápido.
En lugar de contratar a una persona para leer los libros de reglas y adivinar dónde podrían discrepar los chefs, PICKLEFUZZER hace lo siguiente:
- Genera Recetas Aleatorias: Crea millones de cadenas de instrucciones (recetas) aleatorias y que parecen válidas usando una gramática especial (un conjunto de reglas que dedujo estudiando a los chefs).
- Sirve a Todos los Chefs: Entrega la misma receta exacta al Chef A, al Chef B y al Chef C al mismo tiempo.
- Verifica la Reacción: Observa atentamente para ver si un chef se bloquea, hace un berrinche (lanza un error) o termina con un resultado diferente al de los demás.
Si el Chef C dice "¡Error!" pero el Chef A dice "¡Delicioso!", PICKLEFUZZER marca esa receta como una discrepancia. No necesita saber la "respuesta correcta"; solo sabe que si los chefs no están de acuerdo, hay una brecha de seguridad.
Lo Que Encontraron
Los investigadores ejecutaron esta herramienta durante una semana y encontraron 14 formas diferentes en que los chefs discrepaban.
- Los Grandes Éxitos: Cuatro de estas discrepancias fueron críticas. Demostraron que un hacker podría usarlas para engañar a los escáneres de seguridad en sitios web populares (como Hugging Face, donde las personas comparten modelos de IA) y hacer que permitan el paso de código peligroso.
- La Recompensa: Los investigadores informaron al equipo de Python sobre estas brechas. También las reportaron a un programa de recompensas por errores (un sistema de recompensas para encontrar fallos de seguridad) y recibieron 750 dólares.
- Velocidad vs. Humanos: Para mostrar lo buena que era su herramienta, la compararon con un experto humano en seguridad. El humano pasó 60 horas leyendo manualmente el código y encontró 14 discrepancias. PICKLEFUZZER encontró el mismo número de discrepancias en solo 10 minutos.
La Conclusión
El artículo muestra que cuando tienes múltiples versiones de una herramienta de seguridad sin un único libro de reglas oficial, inevitablemente discreparán. Estas discrepancias son como grietas en una presa que los hackers pueden explotar. PICKLEFUZZER es una forma nueva y rápida de encontrar esas grietas automáticamente al observar dónde las diferentes versiones del software dejan de ponerse de acuerdo, ayudando a parchearlas antes de que actores malintencionados puedan usarlas.
¿Ahogado en artículos de tu campo?
Recibe resúmenes diarios de los artículos más novedosos que coincidan con tus palabras clave de investigación — con resúmenes técnicos, en tu idioma.