LLMs are All You Need? Improving Fuzz Testing for MOJO with Large Language Models
Huang, Zhao, Chen
The rapid development of large language models (LLMs) has revolutionized software testing, particularly fuzz testing, by automating the generation of diverse and effective test inputs. This advancement holds great promise for improving software reliability. Meanwhile, the introduction of MOJO, a high-performance AI programming language blending Python's usability with the efficiency of C and C++, presents new opportunities to enhance AI model scalability and programmability. However, as a new language, MOJO lacks comprehensive testing frameworks and a sufficient corpus for LLM-based testing, which exacerbates model hallucination. In this case, LLMs will generate syntactically valid but semantically incorrect code, significantly reducing the effectiveness of fuzz testing. To address this challenge, we propose MOJOFuzzer, the first adaptive LLM-based fuzzing framework designed for zero-shot learning environments of emerging programming languages. MOJOFuzzer integrates a mutil-phase framework that systematically eliminates low-quality generated inputs before execution, significantly improving test case validity. Furthermore, MOJOFuzzer dynamically adapts LLM prompts based on runtime feedback for test case mutation, enabling an iterative learning process that continuously enhances fuzzing efficiency and bug detection performance. Our experimental results demonstrate that MOJOFuzzer significantly enhances test validity, API coverage, and bug detection performance, outperforming traditional fuzz testing and state-of-the-art LLM-based fuzzing approaches. Using MOJOFuzzer, we have conducted a first large-scale fuzz testing evaluation of MOJO, uncorvering 13 previous unknown bugs. This study not only advances the field of LLM-driven software testing but also establishes a foundational methodology for leveraging LLMs in the testing of emerging programming languages.
academic
¿Son los LLMs Todo lo que Necesitas? Mejorando las Pruebas de Fuzzing para MOJO con Modelos de Lenguaje Grande
El rápido desarrollo de los modelos de lenguaje grande (LLMs) ha revolucionado las pruebas de software, particularmente las pruebas de fuzzing, mediante la generación automática de entradas de prueba diversas y efectivas. Simultáneamente, la introducción de MOJO como un lenguaje de programación de alto rendimiento para IA que fusiona la facilidad de uso de Python con la eficiencia de C/C++ ofrece nuevas oportunidades para mejorar la escalabilidad y programabilidad de los modelos de IA. Sin embargo, como lenguaje emergente, MOJO carece de un marco de pruebas integral y de corpus de entrenamiento suficiente para LLMs, lo que exacerba el problema de alucinaciones del modelo. Para abordar este desafío, este artículo propone MOJOFuzzer, el primer marco adaptativo de fuzzing impulsado por LLM diseñado específicamente para entornos de aprendizaje de cero ejemplos en lenguajes de programación emergentes. Los resultados experimentales demuestran que MOJOFuzzer supera significativamente las pruebas de fuzzing tradicionales y los métodos de fuzzing basados en LLM de última generación en términos de efectividad de pruebas, cobertura de API y rendimiento de detección de errores, descubriendo exitosamente 13 errores desconocidos en MOJO.
El problema central que aborda esta investigación es el desafío de las pruebas de fuzzing para lenguajes de programación emergentes, particularmente cómo realizar pruebas efectivas en entornos de aprendizaje de cero ejemplos donde hay datos de entrenamiento insuficientes.
Necesidades del Desarrollo de IA: Con la aplicación generalizada de la IA en campos críticos como conducción autónoma, diagnóstico médico y servicios financieros, se requieren lenguajes de programación eficientes
Potencial del Lenguaje MOJO: MOJO puede lograr mejoras de rendimiento 68,000 veces más rápido que Python, siendo una herramienta importante para el desarrollo de IA
Ausencia de Marco de Pruebas: Como lenguaje emergente, MOJO carece de un marco de pruebas maduro, con errores de software y vulnerabilidades de seguridad sin descubrir
Probadores de Fuzzing LLM Tradicionales: dependen de grandes cantidades de datos de entrenamiento específicos del dominio, limitando su aplicación en lenguajes emergentes
Problema de Alucinaciones del Modelo: en entornos de cero ejemplos, los LLMs tienden a generar código sintácticamente correcto pero semánticamente erróneo
Falta de Especificidad: las herramientas existentes no están optimizadas específicamente para las características del lenguaje MOJO
Desarrollar el primer marco de fuzzing impulsado por LLM diseñado específicamente para el lenguaje MOJO, implementando técnicas innovadoras de ingeniería de prompts y ajuste fino para lograr una detección de errores efectiva en entornos de aprendizaje de cero ejemplos.
Marco de Fuzzing LLM de Cero Ejemplos Pionero: MOJOFuzzer es el primer marco de fuzzing impulsado por LLM diseñado para entornos de aprendizaje de cero ejemplos, mitigando efectivamente el problema de alucinaciones de LLM
Mecanismo de Control de Calidad Multietapa: integra un mecanismo sistemático de filtrado de entradas de baja calidad, mejorando significativamente la validez de los casos de prueba
Estrategia de Mutación Adaptativa: ajusta dinámicamente los prompts de LLM basándose en retroalimentación en tiempo de ejecución, implementando un proceso de aprendizaje iterativo
Descubrimiento de Errores Prácticos: descubre exitosamente 13 errores desconocidos en MOJO, de los cuales 9 han sido confirmados y corregidos por el equipo oficial
Mejora de Rendimiento Significativa: supera significativamente los métodos existentes en validez de pruebas (98%), cobertura de API (77.3%) y capacidad de detección de errores
Entrada: Entorno del lenguaje de programación MOJO y reglas sintácticas limitadas, reportes de errores históricos
Salida: Casos de prueba válidos capaces de desencadenar errores en MOJO
Restricciones: Entorno de aprendizaje de cero ejemplos, sin datos de entrenamiento específicos de MOJO en abundancia
El artículo cita 58 referencias relacionadas, abarcando trabajos importantes en múltiples campos incluyendo LLMs, fuzzing y ingeniería de software, proporcionando una base teórica sólida para la investigación.
Evaluación General: Este es un artículo de investigación de alta calidad en ingeniería de software que propone una solución innovadora a un problema práctico, con diseño experimental riguroso y resultados convincentes. Este trabajo no solo representa un avance técnico, sino que es más importante aún que proporciona una metodología viable para pruebas de tecnologías emergentes, con valor académico y práctico significativo.