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
LLM — это всё, что вам нужно? Улучшение фаззинга для MOJO с использованием больших языковых моделей
Быстрое развитие больших языковых моделей (LLM) революционизировало тестирование программного обеспечения, в частности фаззинг, путём автоматического создания разнообразных и эффективных тестовых входных данных. Одновременно с этим введение MOJO — высокопроизводительного языка программирования для ИИ, сочетающего простоту Python с эффективностью C/C++, открывает новые возможности для повышения масштабируемости и программируемости моделей ИИ. Однако как новый язык MOJO лишён комплексной платформы тестирования и достаточного корпуса обучающих данных для LLM, что усугубляет проблему галлюцинаций модели. В ответ на этот вызов мы предлагаем MOJOFuzzer — первую адаптивную платформу фаззинга на основе LLM, разработанную специально для среды нулевого обучения новых языков программирования. Экспериментальные результаты показывают, что MOJOFuzzer значительно превосходит традиционный фаззинг и современные методы фаззинга на основе LLM по эффективности тестирования, покрытию API и производительности обнаружения ошибок, успешно обнаружив 13 неизвестных ошибок в MOJO.
Основная проблема, которую решает данное исследование, — это вызовы фаззинга для новых языков программирования, в частности, как эффективно проводить тестирование в среде нулевого обучения при отсутствии достаточных обучающих данных.
Требования развития ИИ: С широким применением ИИ в критических областях, таких как автономное вождение, медицинская диагностика и финансовые услуги, необходимы эффективные языки программирования
Потенциал языка MOJO: MOJO может обеспечить повышение производительности в 68 000 раз по сравнению с Python, что делает его важным инструментом для разработки ИИ
Отсутствие платформы тестирования: Как новый язык, MOJO лишён зрелой платформы тестирования, содержит необнаруженные ошибки программного обеспечения и уязвимости безопасности
Традиционные фаззеры на основе LLM зависят от большого количества данных, специфичных для предметной области, что ограничивает их применение к новым языкам
Проблема галлюцинаций модели: В среде нулевого обучения LLM легко генерирует синтаксически корректный, но семантически ошибочный код
Отсутствие специализации: Существующие инструменты не оптимизированы специально для характеристик языка MOJO
Разработка первой платформы фаззинга на основе LLM, специально предназначенной для языка MOJO, которая через инновационную инженерию подсказок и методы тонкой настройки обеспечивает эффективное обнаружение ошибок в среде нулевого обучения.
Первая платформа фаззинга на основе LLM для нулевого обучения: MOJOFuzzer — первая платформа фаззинга, управляемая LLM, разработанная специально для среды нулевого обучения, эффективно смягчающая проблему галлюцинаций LLM
Многоэтапный механизм контроля качества: Интегрирует систематический механизм фильтрации низкокачественных входных данных, значительно повышающий эффективность тестовых случаев
Адаптивная стратегия мутации: Динамически корректирует подсказки LLM на основе обратной связи во время выполнения, реализуя итеративный процесс обучения
Обнаружение реальных ошибок: Успешно обнаружил 13 неизвестных ошибок в MOJO, из которых 9 подтверждены и исправлены официальной командой
Значительное повышение производительности: Значительно превосходит существующие методы по эффективности тестирования (98%), покрытию API (77,3%) и способности обнаружения ошибок
Входные данные: Среда программирования MOJO и ограниченные синтаксические правила, исторические отчёты об ошибках
Выходные данные: Действительные тестовые случаи, способные вызвать ошибки в MOJO
Ограничения: Среда нулевого обучения, отсутствие большого количества данных, специфичных для MOJO
Статья цитирует 58 связанных работ, охватывающих важные исследования в области LLM, фаззинга, инженерии программного обеспечения и других областей, обеспечивая прочную теоретическую базу для исследования.
Общая оценка: Это высококачественная научная работа в области инженерии программного обеспечения, предлагающая инновационное решение практической проблемы с тщательным дизайном экспериментов и убедительными результатами. Эта работа не только достигает технического прорыва, но, что более важно, предоставляет осуществимую методологию для тестирования новых технологий, имеющую значительную академическую и практическую ценность.