Home > 전체기사
[CSRC@KAIST 차세대보안R&D리포트] 퍼징과 인공지능
  |  입력 : 2020-08-06 12:44
페이스북 보내기 트위터 보내기 네이버 밴드 보내기 카카오 스토리 보내기
퍼징, 초기에는 임의의 입력값 무작위 대입
2000년대 후반 ‘배움’ 과정이 도입되면서 AI 알고리즘으로 자리잡은 퍼징


[보안뉴스=차상길 카이스트 사이버보안연구센터장] 예나 지금이나 소프트웨어의 취약점을 찾는 것은 해커들의 지상목표입니다. 취약점을 찾는 데에서 대부분의 공격과 방어가 시작되기 때문이죠. 취약점을 자동으로 찾기 위해 가장 널리 쓰이는 방법이 바로 퍼징(fuzzing)입니다. 퍼징은 주어진 프로그램을 자동으로 분석하여 취약점을 찾아내는 기술을 통칭합니다.

[이미지=utoimage]


퍼징에 대한 수요가 나날이 증가하면서 강연 요청도 끊이질 않는데요. 강연 때마다 받는 질문 중의 하나가 바로 퍼징을 인공지능과 접목한 연구가 있느냐 입니다. 요즘은 인공지능이 워낙 화두이다 보니, 그러한 질문이 나오는 것이 어찌 보면 당연할 수 있지만, 이 질문은 사실 잘못된 질문입니다. 왜냐하면, 퍼징은 그 자체로 인공지능 알고리즘이기 때문입니다.

하지만, 놀랍게도 퍼징을 활용하는 사람들조차 퍼징이 인공지능과 어떤 관계에 있는지 잘 알지 못하는 경우가 많습니다. 물론 인공지능을 한마디로 정의하기는 어렵습니다만, 전통적인 알고리즘과 인공지능 알고리즘의 핵심 차이는 바로 ‘배움’의 과정이 존재하느냐에 있다고 볼 수 있습니다. 전통적인 알고리즘이 고정된 계산 절차를 기술하는 것이라면, 인공지능에서는 이러한 계산 절차가 학습을 통해 변형될 수 있습니다. 즉, 알고리즘이 스스로 상황에 따라 변화해 나가는 것이죠.

그렇다면 퍼징은 스스로 배우는 과정이 존재할까요? 요즘 가장 널리 사용되는 공개형 퍼저(fuzzer)인 AFL만 보더라도 그 답을 알 수 있습니다. AFL은 내부적으로 유전 알고리즘을 사용하고 있는데, 이는 대표적인 인공지능 알고리즘 중 하나입니다. 동작 방식은 다음과 같습니다. 먼저 대상 프로그램을 임의의 입력을 통해 실행하면서 실행의 양상을 관측합니다. 그리고 관측된 정보를 바탕으로 가장 취약점에 도달할 가능성이 큰 입력을 선별해냅니다. 선별된 입력을 변형(진화)하면서 프로그램을 재실행하고, 이 과정을 취약점을 찾을 때까지 반복합니다. 여기서도 알 수 있듯이, 퍼징은 학습을 통해 변화하는 인공지능형 알고리즘입니다.

그렇다면 왜 사람들은 퍼징과 인공지능이 다르다고 생각할까요? 아마도 이것은 퍼징이라는 단어가 갖는 역사적 의미 때문일 것입니다. 퍼징은 1980년대에 Barton Miller 교수에 의해 처음 등장한 단어이고, 그 당시의 퍼징은 임의의 입력값을 무작위로 대입하여 프로그램의 비정상 행위(예를 들면 크래쉬)를 찾아내는 방법을 의미했습니다. 이러한 퍼징의 방법론은 너무나 실용적이었기 때문에 약 30여 년간 변함없이 많은 보안전문가와 해커들에 의해 지속해서 사용되었습니다. 어찌 보면 C/C++ 언어가 갖는 근원적인 메모리 취약성 때문에 이러한 단순한 방법으로도 수많은 취약점을 찾아낼 수 있었던 것일지도 모릅니다.

이러한 퍼징의 의미가 변화하기 시작한 것은 2000년대 후반부에 이르러서입니다. 그동안 해왔던 단순한 퍼징만으로는 깊이 숨어있는 취약점을 찾아내기가 어려웠고, 이를 개선하기 위해서 ‘배움’을 도입하는 시도가 나타난 것입니다. 그 대표주자로는 2006년에 블랙햇에서 발표된 Sidewinder가 있습니다. 여기서부터 진화(evolution)라는 표현이 퍼징에 등장하기 시작했고, 그 뒤로는 기존의 ‘단순 무식한’ 형태의 퍼저와 진화된 퍼저를 구분하기 위해 스마트퍼저(smart fuzzer), 그레이박스 퍼저(grey-box fuzzer) 등의 다양한 이름이 등장하죠.

하지만 이러한 개념이 나온 지 10년이 넘었음에도 사람들의 마음 속에는 ‘퍼징 = 단순 무작위 테스트’라는 관념이 자리 잡고 있습니다. 물론 무작위 테스트가 여전히 유효한 경우도 존재하지만, 최근의 퍼징 연구는 대부분 인공지능형 알고리즘에 초점이 맞추어져 있습니다. 예를 들면 “어떻게 배울 것인가?”, 또는 “배운 정보를 어떻게 활용하여 입력값을 생성할 것인가?” 등의 질문에 대한 답을 찾는 연구가 활발합니다.

▲차상길 카이스트 사이버보안연구센터장[사진=KAIST]


따라서 이러한 시대적 변화에 발맞추어 퍼징에 대한 시각도 바꿀 필요가 있습니다. 저는 항상 퍼징을 생각할 때 인공지능 분야의 전통적 주제인 미로 찾기 로봇을 떠올립니다. 복잡한 미로에서 취약점(탈출구 또는 보물)을 찾아내는 것이 퍼징의 목표이며, 다양한 시행착오를 통해 프로그램의 구성(미로의 생김새)을 배워나가면 어느새 취약점을 찾아낼 수 있습니다. 실제로도 전통 인공지능 알고리즘에서 영감을 얻어서 퍼징 분야의 문제를 해결하는 경우가 종종 있죠.

모든 학문은 진화하고 있고, 퍼징도 마찬가지입니다. 퍼징은 이제 인공지능 알고리즘입니다.
[글_차상길 카이스트 사이버보안연구센터장]

<저작권자: 보안뉴스(www.boannews.com) 무단전재-재배포금지>

  •  
  • 0
  • 페이스북 보내기 트위터 보내기 네이버 밴드 보내기 카카오 스토리 보내기


  •  SNS에서도 보안뉴스를 받아보세요!! 
그린존시큐리티 4개월 배너모니터랩 파워비즈 6개월 2020년6월22~12월 22일 까지넷앤드 파워비즈 진행 2020년1월8일 시작~2021년 1월8일까지위즈디엔에스 2018파워비즈배너 시작 11월6일 20181105-20200131
설문조사
코로나19 팬더믹 이후, 가장 기승을 부리고 있는 사이버 공격 유형은 무엇이라고 보시나요?
랜섬웨어
피싱/스미싱
스피어피싱(표적 공격)/국가 지원 해킹 공격
디도스 공격
혹스(사기) 메일
악성 앱
해적판 소프트웨어
기타(댓글로)