블루 스크린 멈춰!!(정보보호대학원 Softsec Lab 최재승)

Posted by

다들 한 번씩은 컴퓨터를 쓰다 푸른 불청객을 맞아본 적이 있을 겁니다. 예고도 없이 화면에 불쑥 나타나 우리는 당황하게 하는 블루스크린 그 녀석 말이죠. 이 블루스크린의 가장 큰 원인은 바로 OS(운영체제)의 결함에 있다고 합니다. 이번에 만나볼 분은 세계인이 가장 많이 사용하는 OS, Windows 용 취약점 탐지 시스템 ‘NTFUZZ’를 개발하신 분입니다.

안녕하세요. 간단한 자기소개 부탁드립니다.

KAIST 정보보호대학원 SoftSec lab에서 연구하고 있는 최재승입니다. 저는 지금 차상길 교수님 밑에서 연구를 진행하고 있습니다.

듣기로는 이번 연구가 보안 분야 최고 수준의 학회인 IEEE Symposium on Security and Privacy에 2021년 5월에 발표될 예정이라고 들었습니다. 어떤 연구인지 설명 가능할까요?

이번 연구는 Windows 운영체제의 취약점을 찾아내는 새로운 퍼징* 시스템 ‘NTFUZZ’에 대한 것입니다. 운영 체제의 취약점을 찾기 위한 연구들은 기존에 많이 존재해 왔지만, 대부분은 소스 코드가 공개된 Linux의 취약점을 찾는 데 집중해 왔습니다. 그러나 저희 연구팀은 소스 코드가 공개되지 않은 Windows의 탐지 기술을 향상했습니다.
* (퍼징 – 소프트웨어 테스트 기법으로서, 컴퓨터 프로그램에 예상치 않은 데이터를 무작위로 입력하는 입력하는 것)

소스 코드가 없다는 게 어떤 의미인지 알 수 있을까요? 더 어려운 일을 해낸 것 같긴 한데 느낌이 잘 오지 않네요.

소스 코드가 없다는 것은, 사람이 소프트웨어를 이해하는데 유용한 정보가 전혀 없다는 것입니다. 예를 들어, Windows 소스 코드에는 어떤 함수가 어떤 타입의 인자를 받는지 등이 표현되어 있습니다. 반면, 소스 코드를 컴파일한 결과물인 바이너리 코드에는 이러한 정보가 전혀 나타나지 않습니다. 특히, OS 취약점 탐지를 위해서는 시스템 콜* 함수의 타입 정보가 필요한데, 소스 코드가 공개되지 않은 Windows에서는 이 정보를 얻을 수 없어서 취약점 탐지가 어려워집니다. 그래서 우리는 Windows의 바이너리 파일을 분석해서, 역으로 이 타입 정보를 유추해 내었습니다.
* (시스템 콜 – 응용 프로그램이 운영체제와 통신하는 인터페이스)

아 그럼 컴파일된 결과물만 보고 원래 소스코드에 있는 정보를 유추한다는 뜻인가요? 듣기에는 거의 불가능한 것 같은데요.

당연히 쉽지 않습니다(웃음). 바이너리 코드라는 게 애초에 기계가 이해하기 위한 형태이기 때문에, 그것을 분석하는 과정이 아주 힘들었습니다. 그렇지만 그 때문에 이 연구가 높은 평가를 받을 수 있는 것이 아닌가 생각합니다.

시스템 콜의 타입 정보를 유추하고, 그것을 통해 효과적으로 퍼징을 수행한다. 제가 NTFUZZ의 메커니즘을 제대로 이해한 게 맞나요?

맞아요. NTFUZZ는 바이너리 정적 분석을 통해 퍼징을 효율적으로 수행하기 위한 시스템 콜 타입 정보를 수집합니다. 이렇게 얻어낸 타입 정보를 활용하여 퍼징을 진행함으로써, NTFUZZ는 운영체제 코드를 효과적으로 테스트하고 취약점을 찾아내는 것이 가능합니다.

일반인들이 해당 연구의 효과를 체감할 수 있는 부분이 있다면 어떤 것일까요?

우선 블루스크린이 좀 덜 뜨게 되지 않을까 합니다. 블루스크린은 커널에서 일어나는 소프트웨어의 오류로 또는 버그를 핸들링하지 못해서 나타나는 것입니다. 그런 버그가 Windows에 있다면 더 나쁜 방식으로 악용될 수 있으므로 그런 가능성을 미연에 방지함으로써 보다 안전한 컴퓨터 사용 환경을 만들 수 있지 않을까요,

블루스크린 때문에 키보드 부순 사람이 한두 명이 아닐 텐데, 좀 덜 뜨게 되는 것만으로도 여러 사람의 멘탈을 지킬 수 있으이라 생각합니다(웃음). 이 공로를 Microsoft로부터도 인정받았다고 들었어요.

그렇습니다. Microsoft 사의 취약점 포상금제도를 통해 총 25,000달러의 상금을 받았습니다.

부럽네요. 이 연구 주제는 처음에 어떻게 떠올리게 되셨나요?

정보 보호 측면에서 OS의 취약점을 진단하는 시스템은 꼭 필요하다고 생각했습니다. 그렇게 자연스레 해당 분야에 관심을 가지고 보니 대부분의 연구가 오픈 소스인 OS들 중심이라는 것을 알았습니다. 사람들이 가장 많이 쓰는 Windows에는 정작 효과적인 시스템이 없다는 걸 깨닫고 이런 연구를 한 번 해보자 했던 것 같습니다. 교수님께서도 이 연구가 충분히 가치 있는 연구가 될 것 같다고 하셨고 실제로도 많은 힘을 주셨습니다.

역시 신뢰가 중요하군요. 연구 기간이 꽤 길었던 것으로 아는데 그 과정에서 가장 힘들었던 것이 있었다면 어떤 것일까요?

너무 많지만 그중 하나를 꼽자면 단연 바이너리 코드를 분석하는 일이었습니다. 기계를 위해 쓰여진 코드를 분석하고 그 행동을 파악하는 과정이 정말 상상 이상으로 힘들었습니다. 그런데 우리 연구실이 이 분야의 연구를 많이 하다 보니 주변에서 바이너리 코드와 씨름하는 사람들이 많아서 고통이 좀 덜했습니다(웃음). 아마 혼자서 했다면 절대 끝까지 해내지 못했을 것 같네요.

듣다 보니 점점 더 대단한 연구인 것 같습니다. 앞으로도 훌륭한 연구자로서의 길을 걸으시길 응원합니다.

감사합니다. 앞으로도 더 새롭고 의미 있는 연구 해낼 수 있도록 하겠습니다.

해당 연구팀(최재승, 김강수, 이대진 학생 및 차상길 교수)의 연구에 대한 더 자세한 정보는 아래의 url에서 <NTFUZZ: Enabling Type-Aware Kernel Fuzzing on Windows with Static Binary Analysis>의 이름으로 살펴보실 수 있습니다.
https://softsec.kaist.ac.kr/~jschoi/

gsis

KAIST 정보보호대학원은 세계 최고 수준의 사이버 보안을 교육, 연구하여 산업을 선도하는 목표로 하고 있습니다. 또한 세계 최고 수준의 정보보호 인력양성을 통한 국가 사이버 보안 리더양성을 위해서 노력하고 있습니다.

Share on Social Media

Leave a Reply

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다