정보센터

회사칼럼

아이티노매즈의 소식을 여러분과 함께합니다!

최신 소식을 여러분과 함께 공유하겠습니다.
[칼럼]보안테스트 기법의 효율적 대안 'Hybrid Smart Fuzzing'
등록일2017-06-29 조회수4204

소프트웨어 기술의 발달로 일상생활에서부터 금융이나, 의료, 공공 기관까지 사회 전반에 거쳐 많은 IT 솔루션들이 출시되고 있다. 그러나 이렇게 제공되는 서비스의 질과 양이 증가하고 다양해짐에 따라, 이를 위협하는 공격 또한 비례적으로 증가하고 있는 추세이다. 실제로 2014년 4월에 보안 패치 이전의 보안취약점을 활용한 OpenSSL HeartBleed 제로데이 공격과, 2010년 7월의 이란 원자력 발전시설을 공격한 Stuxnet, 2011년 미국의 에너지 기업을 공격한 나이트 드래곤 등이 그 예이다. 이와 같이 기업이나 공공 기관의 데이터를 탈취하기 위하여 지속으로 취약점을 공략하는 APT공격, 2010년 Paypal 사이버 공격과 같이 항상 외부에 노출되어 있어 공격의 대상이 되는 웹 사이트 공격 등 많은 서비스들이 SW 자체 보안 취약점으로 공격을 당하고 있다. 이에 대한 해결책은 어떤 것들이 있는지 이승한 연구소장 의견을 들어본다.
(※ 이승한 연구소장: 2014.07 한국 SW 아키텍트 대회 미래창조과학부장관상 수상, 현 아이티노매즈 기업부설연구소 연구소장)


Q. 현재 사이버 보안 취약 위험은 어떤 수준인가요?
미국의 정보 기술 연구 및 자문 회사인 Gartner의 보고서에 따르면, SW 보안사고의 75%는 취약점을 가지고 있는 응용프로그램에서 발생한다고 합니다. 보안, 스토리지 솔루션회사인 Symantec의 보고서에 따르면 2012년 한해 동안 발견된 취약점이 5,291개에 이를 정도입니다.





<그림 1> 사이버 보안 취약 위험 사례​
출처:https://www.google.com/imghp?hl=ko&gws_rd=ssl​


이러한 이유로 SW 보안 취약점을 예방하기 위해 다양한 노력이 진행되고 있는데요, 한 예로 국외의 MITRE는 미국 국토보안부 내 국가 사이버 보안국의 지원으로 CWE(Common Weakness Enumeration)를 설립하여 SW 취약점을 다양한 관점에서 분류하고 있습니다. 또한, CERT(Computer Emergency Response Team)에서는 C, C++, JAVA, Perl 언어로 개발되는 어플리케이션에 대하여 보안 취약점을 제품 출시 전에 제거할 수 있도록 시큐어 코딩 가이드를 제공하고 있습니다.국내에서도 국가차원에서 시큐어 코딩 가이드를 제공하고 있는데요, 우리나라에서는 2012년 5월에 발표한 행정안전부의 시큐어 코딩 의무화 법안에 따라 40억원 이상의 정보화 사업일 경우, 행정안전부가 제공하는 시큐어 코딩 가이드라인에 따라 43개의 보안 취약점을 반드시 제거해야 합니다. 그러나 이러한 노력에도 불구하고 아직까지 많은 SW들이 알려지거나, 알려지지 않은 보안 취약점으로 인해 위협을 받고 있는데, 이를 방지하기 위하여 다양한 기법들이 제안되고 있습니다.

Q. 제목에서 언급하신 Hybrid Smart Fuzzing도 그 중 하나인가요?
예. ‘퍼징’은 이러한 노력 중 취약점을 발굴하기 위한 방법으로 1989년에 Wisconsin-Madison 대학의 Barton Miller 교수 연구실에서 개발된 일종의 SW 보안 테스트 기법입니다. 무작위로 SW에 데이터를 입력하여 에러가 발생하는 경우를 탐지함으로써 취약점을 검출할 수 있습니다. 그러나 무작위로 도출된 입력 값 기반의 퍼징은 특정 취약점에 대한 도출이 어렵고, 많은 시간을 소모하는 문제점이 있습니다.그렇기 때문에 이러한 효율성을 높이기 위하여, 블랙박스 테스트와 화이트박스 테스트를 연계한 하이브리드 스마트 퍼징 시스템에 대하여 소개하려고 합니다. (그림2 참조)



<그림 2> 하이브리드 스마트 퍼징 시스템의 기본 원리


‘블랙박스 테스트’는 테스터가 SW가 어떠한 동작을 하는지에 대하여 수행하는 테스트로, 테스터는 SW 내부적으로 어떻게 동작하는지 알기 힘듭니다. 오직 SW 기능과 요구사항을 기반으로 입력 값에 대응하는 결과 값만 도출하여 테스트를 수행할 수 있습니다. 블랙박스 테스트는 소스코드의 정보와 기술적 스킬을 요구하지 않고 큰 시스템에 유용하다는 장점이 있지만, 짧은 기간 동안 모든 가능한 입력 값을 테스트하기엔 무리가 있고, 논리적 오류를 검출하지 못하며, 명확한 기능적 사양에 대한 지식 없이 테스트 케이스를 만들기 어렵다는 단점이 있습니다.반면, ‘화이트박스 테스트’는 테스터가 SW의 코드에 접근하여 검사하는 것으로, 테스터는 SW의 내부적 동작 과정을 알 수 있습니다. SW 입력 값이 어떻게 결과 값을 도출하는지 확인 할 수는 있지만, 코드의 동작에 맞추어 테스트를 수행하기 때문에 객관적인 분석이 힘들 수 있습니다. 화이트박스 테스트는 코드에 접근 할 수 있어 모든 코드를 명확히 확인할 수 있고 숨어 있는 코드에 대한 에러를 식별할 수 있으며, 입력 값을 추측하기 쉽고, 테스트 시나리오를 짜기 쉽다는 장점이 있으나, 화이트박스 테스트를 수행하기 위해 숙련된 스킬이 필요하고, 비용이 비싸며, 테스트 사양을 충족시켰다고 보장할 수 없다는 단점이 있습니다. (그림3 침조)



<그림 3> Black box testing and White box testing


이러한 화이트박스 테스팅과 블랙박스 테스팅의 장점을 융합하고, 기존 퍼징과는 다르게 SW 취약점을 발견하기 위한 자동화된 방법으로 우선 퍼징을 수행하고자 하는 대상 SW에 대한 모델을 생성할 수 있어야 하며, 데이터 파일 및 SW 자체에 대한 분석을 자동으로 수행할 수 있어야 합니다. 이렇게 화이트박스 테스트의 Static analysis을 통해 취약점 정보와 입력 파일 구조를 모델링화 시키고, 모델링된 데이터 구조와 취약코드를 블랙박스 테스트의 Dynamic analysis를 통해 연계 Fuzzing하여 입력 데이터를 추출하여 취약점을 탐지하고 리포팅 하는 것을 ‘하이브리드 스마트 퍼징 시스템’ 이라고 할 수 있으며, 이를 구성하기 위하여 중요한 기술 요소인 기호 기반(Symbolic Execution) 실행 엔진을 함께 장착함으로써 보다 효율적인 퍼징을 수행할 수 있습니다. (그림 4 참조)


<그림 4> 하이브리드 스마트 퍼징 시스템 주요 구성도



Q. 기호 기반(Symbolic Execution) 실행 엔진은 어떤 기능을 갖추고 있나요?


<그림5> 기호 실행 엔진을 활용한 스마트 퍼징



여기서 기호실행이라 함은 프로그램에 상수 입력 대신에 기호 값을 사용하여 테스트를 수행하는 것을 의미하며 기호를 활용한 기호 실행 엔진은 입력 값에 상수 값 대신에 기호 값을 할당하여 진행함으로써 분기를 만나면 모든 분기에 대하여 제한(Constraint)을 설정하게 됩니다. 그림 5와 6을 참조하시면 이해하시는 데 도움이 될 듯 합니다.


Ex) int f(1, 2) -> int f(α1 , α2)

<그림6> 기호 실행 엔진의 구성 원리



SW 보안 사고의 75%가 응용프로그램에 내재되어 있는 취약점이라고 발표한 가트너의 보고서처럼 SW의 보안 취약점은 앞으로도 큰 재앙을 일으킬 수 있습니다. 이러한 배경 하에 해당 분야에서 내공이 깊은 엔지니어들이 매뉴얼 모드로 수행하고 있는 환경적 분석에 대해 체계적인 보안 취약점 분석 엔진을 구축하는 것이 필요합니다. 2018년부터는 더욱 고도화된 스마트 퍼징 엔진을 선보일 수 있게 될 것입니다. 결론적으로 소스코드를 대상으로 취약점을 사전에 분석하는 시스템은 향후 발생할 수 있는 SW 보안 취약 위험에 대하여 사전에 예측하고 예방함으로써, 산업의 발전과 함께 다양하게 발생할 수 있는 공격적인 위협들을 해소할 수 있을 것으로 기대하고 있습니다.