← 최신 논문
💻 computer science

ClozeMaster: Fuzzing Rust Compiler by Harnessing LLMs for Infilling Masked Real Programs

이 논문은 과거 버그 보고서에서 마스크된 코드 조각을 추출하고 채워 넣어 유효한 Rust 테스트 프로그램을 합성하는 대규모 언어 모델을 활용하는 ClozeMaster라는 퍼징 도구를 소개하며, 이를 통해 기존 퍼저들을 능가하고 27 개의 확인된 컴파일러 버그를 발견했다고 주장합니다.

원저자: Hongyan Gao, Yibiao Yang, Maolin Sun, Jiangchang Wu, Yuming Zhou, Baowen Xu

게시일 2026-05-04
📖 3 분 읽기☕ 가벼운 읽기

원저자: Hongyan Gao, Yibiao Yang, Maolin Sun, Jiangchang Wu, Yuming Zhou, Baowen Xu

원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기

상상해 보세요. 매우 엄격하고 고급스러운 셰프 (Rust 컴파일러) 가 있다고 가정해 봅시다. 이 셰프는 놀라울 정도로 안전하고 빠른 요리를 만드는 것으로 유명합니다. 이 셰프에게는 매우 구체적인 규칙들이 있습니다: 재료를 잘못된 순서로 넣으려 하거나, 금지된 향신료를 사용하거나, 서로 어울리지 않는 식감을 섞으려 하면, 셰프는 단순히 "아니오"라고 말하지 않습니다. 때로는 당신의 기이한 요청에 너무 당황해서 쟁반을 떨어뜨리거나, 비명을 지르거나, 완전히 얼어붙기도 합니다. 이것이 바로 해당 논문에서 다루는 "버그"들입니다.

문제는 이 셰프를 속이기 매우 어렵다는 점입니다. 무작위 재료를 던져주면 (표준 "퍼저"나 자동화된 테스터처럼), 그들은 보통 무시하거나 정중하게 "잘못된 순서"라고 말하기만 합니다. 그들이 충분히 당황해서 충돌할 일은 거의 없습니다.

이제 연구자들이 제안한 새로운 방법인 ClozeMaster가 등장합니다. 간단한 비유를 통해 작동 방식을 설명해 보겠습니다:

"매드 립스" 전략

연구자들은 처음부터 셰프가 무엇을 원하는지 추측하게 하는 대신, 과거의 실수를 살펴보기로 결정했습니다. 그들은 셰프의 불만 로그 (버그 보고서) 를 뒤져 셰프를 충돌시키거나 얼어붙게 만들었던 과거의 레시피들을 찾아냈습니다.

그들은 이러한 "충돌 레시피"들이 특별한 구조를 가지고 있음을 깨달았습니다. 빈칸을 채우는 단어 게임인 매드 립스와 같았습니다.

  1. 마스크링 (빈칸): 연구자들은 셰프를 충돌시켰던 레시피 하나를 가져왔습니다. 그들은 소괄호 ( ), 중괄호 { }, 대괄호 [ ] 안의 특정 부분을 "마스크" (빈칸) 로 덮어씌웠고, 레시피의 나머지 부분은 그대로 두었습니다.

    • 비유: "밀가루를 **______**와 섞어 구우세요"라고 적힌 레시피를 상상해 보세요. 굵은 글씨 부분이 빈칸입니다. 나머지 문장 (구조) 은 안전하고 문법적으로 올바릅니다.
  2. AI 채우기 (LLM): 그들은 똑똑한 AI (대규모 언어 모델) 를 사용하여 그 빈칸들을 채웠습니다. 하지만 AI 에게 무작위 문장을 쓰라고 요청한 것은 아닙니다. 먼저 모든 옛날이고 고장 난 레시피로 AI 를 "훈련"시켜, Rust 셰프를 혼란스럽게 만드는 특정 "맛"의 코드를 배우게 했습니다.

    • 비유: AI 는 셰프가 화를 낸 모든 경우를 공부한 학생과 같습니다. 빈칸을 채우라고 요청받으면, AI 는 단순히 "설탕"이라고 쓰지 않습니다. 셰프가 기이한 조합에 혼란을 느낀다는 것을 알고 있기 때문에 "살아 있는 문어" 같은 기이한 것을 쓸 수도 있습니다.
  3. 결과: 레시피의 구조가 완벽했기 때문에 (실제로 작동하던 레시피에 기반했기 때문에), 셰프는 그것을 받아들였습니다. 하지만 채워진 부분이 기이하고 복잡했기 때문에, 셰프는 당황해서 충돌했습니다. 이로써 새로운 버그가 발견되었습니다.

왜 이것이 필요했는지

연구자들은 Rust 가 매우 복잡한 문법 규칙을 가진 언어와 같다는 것을 발견했습니다.

  • 구식 방법은 눈가리개를 하고 보드판에 다트를 던지는 것과 같았습니다. 규칙이 너무 엄격하기 때문에 황소눈 (버그) 을 맞추는 경우는 드물었습니다.
  • 직접적인 AI 생성은 아무 예제도 보지 않고 학생에게 레시피를 처음부터 쓰게 하는 것과 같았습니다. 학생 (AI) 은 Rust 의 엄격한 규칙에 대해 충분히 알지 못해, 셰프가 즉시 거부하는 nonsensical한 내용을 썼습니다.
  • ClozeMaster는 학생에게 부분적으로 작성된 복잡한 레시피를 주고, 오직 하나의 까다로운 문장만 완성하게 하는 것과 같았습니다. 학생은 문맥을 알았기 때문에 규칙에 맞지만 여전히 셰프를 깨뜨릴 만큼 기이한 내용을 썼습니다.

그들이 발견한 것

팀원들은 ClozeMaster라는 프로토타입 도구를 구축하고 Rust 셰프의 두 가지 버전 (공식 버전과 커뮤니티 제작 버전) 에 대해 테스트했습니다.

  • 그들은 이전에 아무도 보지 못했던 37 개의 새로운 버그 (충돌 또는 정지) 를 발견했습니다.
  • 개발자들은 그중 27 개를 확인하고 10 개를 수정했습니다.
  • 그들의 도구는 이전 최고의 도구들보다 이러한 버그를 찾고 셰프의 "부엌" (코드 커버리지) 을 탐색하는 데 훨씬 더 뛰어났습니다.

결론

이 논문은 옛날이고 고장 난 코드를 가져와서 그중 특정 부분을 숨긴 다음, AI를 사용하여 그 부분을 채워 넣음으로써, Rust 컴파일러의 숨겨진 약점을 드러내는 새로운 까다로운 테스트들을 생성할 수 있다고 주장합니다. 이는 과거를 활용하여 미래의 실수가 어디에 숨어 있을지 예측하는 방법입니다.

연구 분야의 논문에 파묻히고 계신가요?

연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.

Digest 사용해 보기 →