Directions
2023-04-03 11:12:43
전산학부 차상길 교수 연구팀이 소프트웨어 버그를 시각적으로 표현할 수 있는 취약 프로그램 합성기술을 개발했다. 해당 논문은 소프트웨어 공학 최우수 학술대회인 ASE 2022에 지난 2022년 10월에 발표되었으며, 차상길 교수 연구팀(소프트웨어 보안 연구실)은 본 논문을 통해 ACM Distinguished Paper Award를 수상하는 영예를 안았다.
※ 논문명: Fuzzle: Making a Puzzle for Fuzzers
※ 저자 정보: 이하은(KAIST, 1저자), 김수민(KAIST), 차상길(KAIST, 교신저자)
연구팀은 소프트웨어 테스팅의 버그 찾기가 마치 로봇이 미로를 탐색하는 것과 유사하다는 점에 착안하여 버그를 포함한 프로그램을 미로와 같은 구조를 갖는 형태로 자동 합성하는 기술을 개발하였다. 생성된 프로그램은 소프트웨어 테스팅 기술과 도구를 평가하고 개발하는 데에 사용될 수 있다.
그동안 소프트웨어 테스팅 분야에서 대부분의 실험은 사람이 직접 찾아낸 취약 프로그램 위에서 이루어졌다. 하지만, 이러한 실험 방식은 테스팅 기술이 벤치마크에만 적응하는 문제(overfitting)를 안고 있다. 따라서 스스로 변화 가능한 취약 프로그램을 자동으로 합성하는 것은 소프트웨어 테스팅 분야의 오랜 난제로 여겨져 왔다.
연구팀이 이번에 개발한 Fuzzle시스템은 임의의 벤치마크를 자동으로 생성하여 이 문제를 해결한다. 소프트웨어 버그가 프로그램의 특정 경로를 탐색할 때만 발현된다는 성질에 착안하여, 임의의 모양을 갖는 미로에 대응되는 프로그램을 합성하고,
임의의 취약 경로를 표현하는 경로식을 기호실행을 통해 얻어낸 뒤, 얻어낸 취약 경로의 제약조건을 미로를 빠져나갈 수 있는 경로에 대응시켜 프로그램을 생성하게 된다.
제안된 프로그램 합성기술을 통해 생성된 프로그램은 모든 함수가 2차원 미로의 한 칸에 대응되므로, 소프트웨어 버그를 찾는 과정을 직관적으로 시각화할 수 있다. 즉, 다양한 테스팅 도구의 성능을 시각적으로 비교할 수 있는 최초의 시도라 할 수 있다. 예를 들어 2개의 퍼징 도구를 비교할 때 각 도구가 미로의 어느 부분까지 탐색했는지를 시각화하여 비교하면 누구나 쉽게 두 도구의 상대적 우위를 판단할 수 있다.
차상길 교수는 “Fuzzle 시스템이 실존하는 모든 버그를 표현할 수 있는 것은 아니다”고 강조하면서, “다양한 테스팅 알고리즘을 비교함에 있어 취약 프로그램의 실행 경로와 소프트웨어 테스팅의 진도를 최초로 시각화했다는 점에서 큰 의미가 있다”고 말했다.
한편, Fuzzle은 2023년도부터 국제 소프트웨어 테스팅 학회인 FASE에서 열리는 Test-Comp 대회에 출제되는 문제 프로그램을 만드는 데에 공식적으로 사용될 예정이다.
본 연구는 과학기술정보통신부의 재원으로 정보통신기획평가원의 지원을 받아 수행된 (스타랩, No. 2021-0-01332) 연구이다.