연구 소식

Eclipser: 프로그램의 버그를 자동으로 찾는 새로운 기술
작성일2019-11-19 12:51:36

 버그(bug)는 컴퓨터 공학뿐만 아니라 소프트웨어를 활용하는 모든 분야에 있어 만연한 문제이다. 이러한 버그는 때로는 심각한 취약점으로 이어져, 심각한 보안 문제를 일으킬 수도 있다. 때문에, 프로그램의 버그를 자동으로 찾아내는 기술은 오랫동안 많은 연구자들의 관심을 받아왔다. 정보보호대학원 소속 차상길 교수의 소프트웨어 보안 연구실에서는, 자동으로 프로그램의 버그를 찾아내는 새로운 기술을 연구하여, Eclipser라는 도구를 개발하고 공개하였다.

 
 

 프로그램의 버그를 자동으로 찾기 위해서는, 우선 프로그램의 여러 조건문을 통과하는 입력을 생성하는 것이 가장 중요하다. 조건문을 통과하는 입력을 자동으로 찾아내기 위한 기존의 대표적인 기술로는 concolic testing 등이 있다. 그러나 이러한 기법은 매우 복잡하여, 규모 있는 프로그램에 적용할 경우 매우 느려진다는 문제점이 있다.

 

 차상길 교수 연구진은 기존 기법에 비해 경량화된 새로운 기술을 고안하여, 큰 프로그램에서도 효과적으로 조건문을 통과하는 입력을 찾아낼 수 있었다. 그림 1은 본 기술의 핵심 아이디어를 보여준다. 해당 기술은 여러 입력 값을 시도했을 때 조건문에서 일어나는 선형적인 변화를 관찰하고, 이로부터 입력이 어떤 조건을 만족해야 하는지를 역으로 유추해낸다. 프로그램의 각 명령을 일일이 분석하는 concolic testing과 비교했을 때, 이와 같은 방식은 정확도의 측면에서는 약간의 손해를 감수하게 되지만, 그 대신 수만 줄 이상의 큰 코드에 대해서도 효과적으로 작동하여 다양한 실행 경로를 탐색하고 버그를 찾는 것이 가능하다.

 

 이 기술을 리눅스에서 사용되는 다양한 오픈소스 프로그램을 대상으로 적용해본 결과, 기존에 알려지지 않았던 40개의 버그를 찾을 수 있었으며, 그중 8개는 보안 취약점으로 이어질 수 있는 심각한 버그였다. 이와 같은 취약점이 존재하는 프로그램을 사용할 경우, 사용자는 자신도 모르는 사이에 바이러스에 감염되는 등의 위험에 처할 수 있다.

 

 본 연구 결과는 소프트웨어 엔지니어링 분야의 최고 학회인 ICSE 2019에 논문으로 발표되었으며 (https://softsec.kaist.ac.kr/~jschoi/data/icse2019.pdf), 해당 기술을 구현한 소프트웨어 테스팅 툴 Eclipser 또한 GitHub에 공개되어 있다 (https://github.com/SoftSec-KAIST/Eclipser).