2025-11-12T23:04:10.380766

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 퍼즈 테스팅 개선

기본 정보

  • 논문 ID: 2510.10179
  • 제목: LLMs are All You Need? Improving Fuzz Testing for MOJO with Large Language Models
  • 저자: Linghan Huang, Peizhou Zhao, Huaming Chen (시드니 대학교)
  • 분류: cs.SE (소프트웨어 공학), cs.AI (인공지능)
  • 발표 시간: 2025년 10월 11일 (arXiv 사전 인쇄본)
  • 논문 링크: https://arxiv.org/abs/2510.10179

초록

대규모 언어 모델(LLM)의 급속한 발전은 다양하고 효과적인 테스트 입력의 자동 생성을 통해 소프트웨어 테스팅, 특히 퍼즈 테스팅을 혁신했습니다. 동시에 Python의 사용 편의성과 C/C++의 효율성을 결합한 고성능 AI 프로그래밍 언어인 MOJO의 등장은 AI 모델의 확장성과 프로그래밍 가능성을 향상시킬 새로운 기회를 제공합니다. 그러나 신흥 언어로서 MOJO는 포괄적인 테스트 프레임워크와 충분한 LLM 훈련 말뭉치가 부족하여 모델 환각 문제를 악화시킵니다. 이러한 도전에 대응하여, 본 논문은 신흥 프로그래밍 언어의 영샷 학습 환경을 위해 설계된 첫 번째 적응형 LLM 퍼즈 테스팅 프레임워크인 MOJOFuzzer를 제안합니다. 실험 결과는 MOJOFuzzer가 테스트 유효성, API 커버리지 및 오류 감지 성능 측면에서 기존 퍼즈 테스팅 및 최첨단 LLM 기반 퍼즈 테스팅 방법을 크게 능가하며, MOJO에서 13개의 미발견 오류를 성공적으로 발견했음을 보여줍니다.

연구 배경 및 동기

핵심 문제

본 연구가 해결하고자 하는 핵심 문제는 신흥 프로그래밍 언어의 퍼즈 테스팅 도전, 특히 충분한 훈련 데이터가 부족한 영샷 학습 환경에서 효과적인 테스팅을 수행하는 방법입니다.

문제의 중요성

  1. AI 발전 요구: 자율주행, 의료 진단, 금융 서비스 등 중요 분야에서 AI의 광범위한 적용으로 효율적인 프로그래밍 언어 지원 필요
  2. MOJO 언어의 잠재력: MOJO는 Python보다 68,000배 빠른 성능 향상을 달성할 수 있으며, AI 개발의 중요한 도구
  3. 테스트 프레임워크 부재: 신흥 언어로서 MOJO는 성숙한 테스트 프레임워크가 부족하여 미발견 소프트웨어 오류 및 보안 취약점 존재

기존 방법의 한계

  1. 기존 LLM 퍼즈 테스터는 대량의 도메인 특정 훈련 데이터에 의존하여 신흥 언어에서의 적용을 제한
  2. 모델 환각 문제: 영샷 환경에서 LLM은 구문적으로 정확하지만 의미적으로 오류가 있는 코드를 생성하기 쉬움
  3. 특수성 부족: 기존 도구는 MOJO 언어의 특성에 맞게 특별히 최적화되지 않음

연구 동기

MOJO 언어를 위해 특별히 설계된 첫 번째 LLM 퍼즈 테스팅 프레임워크를 개발하여, 혁신적인 프롬프트 엔지니어링 및 미세 조정 기술을 통해 영샷 학습 환경에서 효과적인 오류 감지를 구현합니다.

핵심 기여

  1. 영샷 LLM 퍼즈 테스팅 프레임워크 최초 개발: MOJOFuzzer는 영샷 학습 환경을 위해 설계된 첫 번째 LLM 기반 퍼즈 테스팅 프레임워크로, LLM 환각 문제를 효과적으로 완화
  2. 다단계 품질 제어 메커니즘: 저품질 입력의 체계적 필터링 메커니즘을 통합하여 테스트 케이스 유효성을 크게 향상
  3. 적응형 변이 전략: 런타임 피드백을 기반으로 LLM 프롬프트를 동적으로 조정하여 반복 학습 프로세스 구현
  4. 실제 오류 발견: MOJO에서 13개의 미발견 오류를 성공적으로 발견하였으며, 이 중 9개는 공식적으로 확인되어 수정됨
  5. 성능 대폭 향상: 테스트 유효성(98%), API 커버리지(77.3%) 및 오류 감지 능력 측면에서 기존 방법을 크게 능가

방법론 상세 설명

작업 정의

입력: MOJO 프로그래밍 언어 환경 및 제한된 구문 규칙, 과거 오류 보고서 출력: MOJO 오류를 유발할 수 있는 유효한 테스트 케이스 제약 조건: 영샷 학습 환경, 대량의 MOJO 특정 훈련 데이터 없음

모델 아키텍처

전체 프레임워크

MOJOFuzzer는 다음의 핵심 구성 요소를 포함하는 다단계 아키텍처를 채택합니다:

  1. 데이터 준비 단계
    • GitHub 및 공식 문서에서 약 300개의 오류 보고서 및 1,500개의 구문 샘플 수집
    • 데이터 정제 및 표준화 처리
  2. 초기화 단계
    • 프롬프트 뱅크(Prompt Bank): 구조화된 프롬프트 템플릿 저장
    • 시드 뱅크(Seed Bank): 테스트 시드의 생성 및 저장 관리
  3. 변이 전략
    • 변이 평가 메커니즘: API 호출 수 및 코드 복잡도를 기반으로 점수 계산
    • 반변이(Half Mutation): 높은 점수의 시드에 대한 코드 수준 변이
    • 전변이(Full Mutation): 낮은 점수의 시드에 대한 프롬프트 수준 변이

주요 기술 세부사항

변이 평가 공식:

S_mutation = N_API + C_complexity

여기서:

  • N_API: API 호출 수
  • C_complexity: 코드 복잡도 평가(시간 복잡도 O(1)에서 O(n³)까지 다양한 점수 할당)

프롬프트 엔지니어링 전략: 사슬 사고(Chain of Thought, CoT) 및 역할 프롬프트 기법을 채택하며, 5개의 핵심 구성 요소 포함:

  1. 구문 분석 지시사항
  2. 역할 기반 프레임워크
  3. 자동 데이터 필터링
  4. 콘텐츠 요약
  5. 프롬프트 시드 생성

미세 조정 전략

LLAMA2 13B 모델을 사용한 2단계 미세 조정:

  1. 1단계: MOJO 구문 데이터셋을 기반으로 언어 구조 학습
  2. 2단계: 과거 오류 기록을 기반으로 결함 패턴 학습

기술 혁신점

  1. 영샷 적응성: 대량의 훈련 데이터 부재 상황에서 효과적인 LLM 퍼즈 테스팅을 최초로 구현
  2. 이중층 변이 메커니즘: 코드 수준 및 프롬프트 수준 변이를 결합하여 테스트 다양성 향상
  3. 적응형 평가 시스템: 시드 품질을 동적으로 평가하여 리소스 할당 최적화
  4. 다단계 품질 제어: 저품질 입력을 체계적으로 필터링하여 환각 문제 감소

실험 설정

데이터셋

  • MOJO 구문 데이터: 약 1,500개의 구문 규칙 및 코드 예제
  • 과거 오류 보고서: GitHub의 약 300개 오류 기록
  • 테스트 환경: MOJO 컴파일러 및 런타임 환경

평가 지표

  1. 고유 유효 프로그램 수: 구문 및 의미적으로 정확한 테스트 프로그램의 비율
  2. 변이 효율성: 테스트 다양성, 유효성 및 오류 감지 능력의 개선
  3. API 커버리지: 테스트 중 호출된 고유 MOJO API 함수 수
  4. 감지 오류 수: 발견된 서로 다른 소프트웨어 결함 수

비교 방법

  • 기존 방법: MojoCoder
  • LLM 퍼즈 테스터: Fuzz4All, TitanFuzz
  • 범용 LLM: GPT-4o, LLAMA3-8B, LLAMA2-7B

구현 세부사항

  • 하드웨어 플랫폼: NVIDIA A6000 Ada
  • 미세 조정 기법: LoRA (Low-Rank Adaptation)
  • 최대 반복 횟수: 10회
  • 변이 임계값: 반변이/전변이의 분계점으로 점수 50 사용

실험 결과

주요 결과

API 커버리지 비교

모델API 커버리지
MOJOFuzzer77.3%
미세 조정된 MojoCoder68.2%
Fuzz4All37.8%
TitanFuzz17.2%
GPT-4o25.6%

유효 프로그램 생성률

모델유효 프로그램률
MOJOFuzzer98%
Mojo-Coder-it 7B66.4%
GPT-4o~25%
LLaMA3-8B~10%
LLaMA2-7B~10%

오류 감지 능력

  • 총 발견 오류: 13개의 미발견 오류
  • 확인 및 수정됨: 9개 오류가 MOJO 팀에 의해 확인되어 수정됨
  • 오류 유형: 난수 생성기 결함, Python 라이브러리 통합 문제 등 포함

절제 실험

절제 연구는 3개의 주요 구성 요소의 기여도를 평가했습니다:

구성 요소 구성환각률유효 코드율의미적 정확성
기준선40%60%50%
프롬프트 엔지니어링만(PE)28%75%65%
미세 조정만(FT)15%88%78%
반변이만(HM)35%68%55%
PE + FT8%95%88%
PE + FT + HM (전체)5%98%90%

사례 분석

발견된 주요 오류 예시:

  1. 난수 생성기 오류:
    • random_si64, random_float64, random_ui64 함수가 항상 고정값 반환
    • 난수 생성의 정확성에 영향
  2. Python 라이브러리 통합 오류:
    • numpy 함수 호출 시 모듈 획득 실패 발생
    • MOJO와 Python 라이브러리 통합의 기저 논리 오류 표시

실험 발견

  1. 미세 조정의 핵심 역할: 미세 조정은 환각 문제 감소의 가장 효과적인 단일 요소
  2. 구성 요소 시너지 효과: 3개 구성 요소를 함께 사용할 때 최고의 효과
  3. 영샷 학습 가능성: 대량의 훈련 데이터 부재 상황에서 효과적인 테스팅의 가능성 입증

관련 연구

LLM 퍼즈 테스팅 발전

  1. LLM 기반 퍼즈 테스터: TitanFuzz, ChatAFL, Fuzz4All 등이 LLM을 활용하여 시드 생성 및 변이 개선
  2. 미세 조정된 퍼즈 테스터: FuzzGPT 등이 도메인 특정 데이터를 통한 미세 조정으로 효과 향상
  3. 기존 퍼즈 테스팅: OSS-Fuzz 등 기존 도구의 신흥 언어에서의 한계

본 논문의 장점

기존 연구와 비교한 MOJOFuzzer의 주요 장점:

  1. 영샷 능력: 대량의 사전 훈련 데이터 불필요
  2. 이중층 변이: 코드 및 프롬프트 수준에서 동시 변이
  3. 적응형 메커니즘: 런타임 피드백을 기반으로 전략 동적 조정

결론 및 논의

주요 결론

  1. MOJOFuzzer는 신흥 프로그래밍 언어 퍼즈 테스팅의 도전을 성공적으로 해결
  2. 영샷 LLM 퍼즈 테스팅은 실제 적용에서 가능성 입증
  3. 미세 조정, 프롬프트 엔지니어링 및 적응형 변이를 결합한 방법이 단일 기술보다 크게 우수

한계

  1. 시간 유효성 위협: 고급 LLM이 점진적으로 MOJO 지식을 통합함에 따라 영샷 장점이 약화될 수 있음
  2. 데이터 의존성: 여전히 최소한의 구문 규칙 및 오류 보고서 필요
  3. 계산 리소스 요구: 미세 조정 및 추론 프로세스가 높은 계산 비용 필요

향후 방향

  1. 완전 자동화 테스팅: 완전히 자동화된 퍼즈 테스팅 방향으로 발전
  2. 더 많은 신흥 언어: 방법을 다른 신흥 프로그래밍 언어로 확장
  3. 사전 훈련 데이터셋 최적화: 제한된 훈련 데이터를 더 잘 활용하는 방법 연구

심층 평가

장점

  1. 높은 혁신성: 신흥 언어를 위한 첫 번째 영샷 LLM 퍼즈 테스팅 프레임워크
  2. 높은 실용 가치: 13개의 실제 오류 발견으로 방법의 효과성 입증
  3. 완전한 기술 방안: 데이터 수집에서 오류 감지까지의 완전한 파이프라인
  4. 충분한 실험: 포괄적인 비교 실험 및 절제 연구 포함
  5. 명확한 작성: 기술 세부사항 정확한 설명, 합리적인 실험 설계

부족한 점

  1. 제한된 평가 범위: 주로 MOJO 언어에 초점하여 일반화 능력 검증 필요
  2. 기준선 비교: 일부 기준선 방법이 최적 선택이 아닐 수 있음
  3. 장기 유효성: MOJO 생태계 성숙에 따라 방법 장점이 약화될 수 있음
  4. 계산 비용 분석 부족: 상세한 계산 리소스 소비 분석 부재

영향력

  1. 학술 기여: 신흥 언어 테스팅을 위한 중요한 방법론 기초 제공
  2. 실무 가치: MOJO 언어 개선에 직접 도움으로 즉각적인 영향력 보유
  3. 재현성: 저자가 코드 및 데이터 공개 약속으로 후속 연구 촉진
  4. 분야 추진: 신흥 기술에 대한 더 많은 AI 테스팅 방법 개발 촉발 가능

적용 시나리오

  1. 신흥 프로그래밍 언어: 성숙한 테스트 프레임워크가 부족한 프로그래밍 언어
  2. 영샷 테스팅 환경: 훈련 데이터가 부족한 테스팅 시나리오
  3. AI 시스템 테스팅: 효율적인 테스팅 도구가 필요한 AI 개발 환경
  4. 안전 중요 시스템: 잠재적 오류 발견이 필요한 중요 애플리케이션

참고 문헌

논문은 LLM, 퍼즈 테스팅, 소프트웨어 공학 등 여러 분야의 중요 연구를 포함한 58개의 관련 문헌을 인용하여 견고한 이론적 기초를 제공합니다.


종합 평가: 이는 실제 문제에 대해 혁신적인 해결책을 제시한 고품질의 소프트웨어 공학 연구 논문입니다. 실험 설계가 엄밀하고 결과가 설득력 있습니다. 이 연구는 기술적 돌파구를 제시할 뿐만 아니라, 신흥 기술의 테스팅을 위한 실행 가능한 방법론을 제공하여 중요한 학술적 및 실무적 가치를 지닙니다.