Simple Science

Ciencia de vanguardia explicada de forma sencilla

# Informática# Ingeniería del software# Criptografía y seguridad# Aprendizaje automático

Probando Marcos de Aprendizaje Automático con ConFL

ConFL detecta eficientemente vulnerabilidades en marcos de aprendizaje automático a través de métodos de prueba sistemáticos.

― 9 minilectura


ConFL: Herramienta deConFL: Herramienta dePruebas de Vulnerabilidadmanera eficiente.marcos de aprendizaje automático deConFL descubre fallos de seguridad en
Tabla de contenidos

El aprendizaje automático se está volviendo común en muchas áreas como el reconocimiento de imágenes y de voz. Sin embargo, a medida que el aprendizaje automático crece, también surgen inquietudes sobre la seguridad de estos sistemas. Pueden surgir problemas en los marcos de aprendizaje automático, que son herramientas que los desarrolladores usan para crear estos sistemas. Probar estos marcos para detectar problemas puede ser complicado debido a su complejidad.

En este artículo, vamos a hablar sobre una herramienta llamada ConFL. ConFL ayuda a encontrar problemas en los marcos de aprendizaje automático generando entradas de prueba que cumplen con ciertos requisitos. Esta herramienta trabaja principalmente con marcos populares como TensorFlow, PyTorch y PaddlePaddle. Vamos a explicar cómo funciona ConFL y compartir su efectividad para encontrar vulnerabilidades.

Los Desafíos

Encontrar problemas en los marcos de aprendizaje automático es complicado. Estos marcos tienen partes tanto del lado del usuario como del servidor. La parte del usuario permite a los desarrolladores interactuar con el marco usando lenguajes de programación como Python, mientras que la parte del servidor se encarga de los cálculos pesados.

Los operadores son las partes esenciales de estos marcos. Realizan cálculos sobre los datos. Sin embargo, estos operadores pueden ser complicados. Cada uno puede tener múltiples parámetros, que pueden no estar bien definidos. Esto hace que sea difícil generar entradas de prueba válidas.

Las herramientas de prueba regulares, o fuzzers, a menudo tienen problemas con los marcos de aprendizaje automático. Puede que no entiendan los requisitos para los parámetros de entrada. Como resultado, las pruebas pueden tardar mucho tiempo y dar pocos resultados.

¿Qué es ConFL?

ConFL es una herramienta diseñada para abordar estos desafíos. Ayuda a probar marcos de aprendizaje automático de manera más eficiente. Así es como funciona:

  1. Colección de Operadores: ConFL recoge automáticamente información sobre los operadores del código fuente del marco. Esto incluye sus nombres y los parámetros que necesitan.

  2. Extracción de Restricciones: Luego, extrae las restricciones para cada operador. Estas restricciones incluyen reglas que los parámetros de entrada deben seguir para asegurar una ejecución exitosa.

  3. Generación de plantillas: ConFL crea plantillas de prueba basadas en la información recopilada sobre los operadores y las restricciones extraídas. Estas plantillas describen cómo deberían lucir las entradas de prueba válidas.

  4. Generación de entradas: Finalmente, ConFL genera entradas de prueba específicas usando estas plantillas, con el objetivo de explorar posibles problemas dentro de los operadores.

Cómo Funciona ConFL

Colección de Operadores

Recoger información sobre los operadores es el primer paso. ConFL examina el código fuente del marco de aprendizaje automático para encontrar todos los operadores disponibles. Reúne datos como:

  • Nombres de los operadores
  • Los parámetros que requiere cada operador
  • Las cadenas de llamada que vinculan a los operadores

Este proceso asegura que ConFL tenga una visión completa de qué operadores existen y cómo interactúan entre sí.

Extracción de Restricciones

Después de recopilar la información de los operadores, el siguiente paso es entender las restricciones. ConFL identifica cuatro tipos principales de restricciones:

  1. Restricciones Ambientales: Estas determinan el contexto de ejecución de los operadores, como el modo de ejecución (eager o graph execution).

  2. Restricciones de Dependencia: Estas aseguran que los parámetros necesarios para la operación estén disponibles y sean correctos.

  3. Restricciones de Validación: Estas definen reglas para cada parámetro, como tipos aceptables y rangos de valores.

  4. Restricciones Lógicas: Estas provienen de declaraciones if-else en el código, definiendo condiciones que deben cumplirse para que la operación tenga éxito.

Al extraer estas restricciones, ConFL garantiza que las entradas de prueba que genera serán válidas y capaces de descubrir vulnerabilidades potenciales.

Generación de Plantillas

Una vez que las restricciones están en su lugar, ConFL crea plantillas de prueba. Estas plantillas sirven como planos para las entradas de prueba.

  • Plantillas de Control: Estas establecen cómo se ejecutará el operador, detallando cómo se relacionan los parámetros entre sí.

  • Plantillas de Datos: Estas especifican la forma, tipo y valor de cada parámetro.

Con estas plantillas, ConFL puede crear diversas entradas de prueba que se adhieren a las restricciones, permitiendo una prueba más profunda de los operadores.

Generación de Entradas

Usando las plantillas, ConFL genera entradas de prueba reales. Asegura que estas entradas no solo cumplan con las restricciones, sino que también exploren diferentes caminos de ejecución en el código del operador. Este enfoque sistemático permite a ConFL encontrar problemas que podrían ser pasados por alto con la generación aleatoria de entradas.

Evaluación de ConFL

Para entender cuán bien funciona ConFL, se probó en TensorFlow, uno de los marcos de aprendizaje automático más utilizados. La evaluación se centró en tres aspectos clave:

  1. Eficiencia en la Colección de Operadores: Se midió cuántos operadores válidos podía identificar ConFL.

  2. Efectividad de las Restricciones: Se observó cuán bien las restricciones apoyaron la generación de entradas válidas.

  3. Detección de vulnerabilidades: Se evaluó cuántas vulnerabilidades podía descubrir ConFL en aplicaciones del mundo real.

Resultados

Eficiencia en la Colección de Operadores

ConFL logró recopilar información sobre 1,355 operadores dentro de TensorFlow. De estos, 1,331 se consideraron válidos para las pruebas. Esta eficiente colección de operadores asegura que se aprovechen todas las oportunidades posibles de prueba.

Efectividad de las Restricciones

Las restricciones resultaron ser muy beneficiosas para la generación de entradas. ConFL extrajo un total de 1,519 restricciones de validación, lo que mejoró significativamente la probabilidad de ejecución exitosa de las entradas generadas. Las restricciones ayudaron a maximizar la cobertura del código durante las pruebas, lo que llevó a una exploración más profunda de los caminos del código.

Detección de Vulnerabilidades

Uno de los resultados más impresionantes fue la capacidad de ConFL para encontrar vulnerabilidades. Identificó un total de 84 vulnerabilidades en TensorFlow, abarcando una variedad de problemas serios, incluyendo corrupción de memoria, excepciones de puntero nulo, y más. Cada una de estas vulnerabilidades recibió un nuevo número de identificación, indicando la importancia de abordar estas preocupaciones de seguridad.

Vulnerabilidades Encontradas

Las vulnerabilidades se categorizaron según su naturaleza, identificándose varios tipos:

  1. Fuera de Límite (OOB): Estas ocurren cuando el código intenta acceder a la memoria fuera de sus límites.

  2. Excepción de Puntero Nulo (NPE): Esto sucede cuando el código intenta usar una referencia que no se ha asignado a un objeto válido.

  3. Excepción de Punto Flotante (FPE): Errores que ocurren durante cálculos de punto flotante, como la división por cero.

  4. Desbordamiento de Entero (IOF): Cuando las operaciones producen valores que exceden la capacidad de almacenamiento de los tipos de variables.

  5. Uso Después de Liberar (UAF): Cuando se accede a una memoria que ya ha sido liberada, lo que lleva a un comportamiento impredecible.

Aplicación en el Mundo Real

La efectividad de ConFL se demostró no solo en teoría, sino en escenarios prácticos. Al aplicar sus métodos a TensorFlow, ConFL pudo revelar problemas que podrían afectar el rendimiento y la seguridad de las aplicaciones que dependen de este marco.

La capacidad de identificar vulnerabilidades significa que los desarrolladores pueden tomar las acciones necesarias para solucionar estos problemas antes de que se conviertan en problemas críticos en entornos de producción.

Adaptabilidad a Otros Marcos

Aunque ConFL se probó principalmente en TensorFlow, su diseño permite adaptarlo a otros marcos de aprendizaje automático con cambios mínimos. Esto se debe a que muchos marcos, como PyTorch y PaddlePaddle, siguen patrones similares en cómo se definen los operadores y cómo se manejan las restricciones.

Al extender los métodos de ConFL a estos marcos, los desarrolladores pueden lograr beneficios similares en la detección de vulnerabilidades y en la eficiencia de las pruebas.

Limitaciones y Trabajo Futuro

Aunque ConFL muestra una gran promesa, aún hay desafíos y áreas de mejora. Algunas de las limitaciones incluyen:

  • Operadores Complejos: Algunos operadores dependen de tipos de archivo o formatos específicos, que ConFL actualmente no tiene en cuenta. El trabajo futuro podría centrarse en agregar capacidades de mutación de archivos.

  • Fusión de Operadores: Muchos marcos utilizan una técnica llamada fusión de operadores para mejorar el rendimiento. ConFL actualmente prueba operadores de manera individual, pero las mejoras futuras podrían considerar la fusión de operadores para pruebas más eficientes.

  • Optimización de la Resolución de Restricciones: Usar técnicas más avanzadas para resolver restricciones podría llevar a una mejor generación de entradas y pruebas más exhaustivas.

Conclusión

ConFL es una herramienta prometedora para probar marcos de aprendizaje automático. Al recopilar de manera efectiva información sobre operadores, extraer restricciones, generar plantillas y crear entradas de prueba válidas, mejora significativamente la capacidad de detectar vulnerabilidades en estos sistemas. Con sus resultados notables en TensorFlow y su adaptabilidad a otros marcos, ConFL ofrece una solución valiosa para los desarrolladores que buscan mejorar la seguridad y robustez de sus aplicaciones de aprendizaje automático.

En un mundo que depende en gran medida del aprendizaje automático, garantizar la seguridad y confiabilidad de estos sistemas es crucial, y herramientas como ConFL son una parte esencial de ese proceso.

Fuente original

Título: ConFL: Constraint-guided Fuzzing for Machine Learning Framework

Resumen: As machine learning gains prominence in various sectors of society for automated decision-making, concerns have risen regarding potential vulnerabilities in machine learning (ML) frameworks. Nevertheless, testing these frameworks is a daunting task due to their intricate implementation. Previous research on fuzzing ML frameworks has struggled to effectively extract input constraints and generate valid inputs, leading to extended fuzzing durations for deep execution or revealing the target crash. In this paper, we propose ConFL, a constraint-guided fuzzer for ML frameworks. ConFL automatically extracting constraints from kernel codes without the need for any prior knowledge. Guided by the constraints, ConFL is able to generate valid inputs that can pass the verification and explore deeper paths of kernel codes. In addition, we design a grouping technique to boost the fuzzing efficiency. To demonstrate the effectiveness of ConFL, we evaluated its performance mainly on Tensorflow. We find that ConFL is able to cover more code lines, and generate more valid inputs than state-of-the-art (SOTA) fuzzers. More importantly, ConFL found 84 previously unknown vulnerabilities in different versions of Tensorflow, all of which were assigned with new CVE ids, of which 3 were critical-severity and 13 were high-severity. We also extended ConFL to test PyTorch and Paddle, 7 vulnerabilities are found to date.

Autores: Zhao Liu, Quanchen Zou, Tian Yu, Xuan Wang, Guozhu Meng, Kai Chen, Deyue Zhang

Última actualización: 2023-07-11 00:00:00

Idioma: English

Fuente URL: https://arxiv.org/abs/2307.05642

Fuente PDF: https://arxiv.org/pdf/2307.05642

Licencia: https://creativecommons.org/licenses/by/4.0/

Cambios: Este resumen se ha elaborado con la ayuda de AI y puede contener imprecisiones. Para obtener información precisa, consulte los documentos originales enlazados aquí.

Gracias a arxiv por el uso de su interoperabilidad de acceso abierto.

Más de autores

Artículos similares