개발자 / 보안

ITWorld 용어풀이 | 퍼징

박상훈 기자 | ITWorld 2017.12.14
퍼징(fuzzing)은 소프트웨어의 취약점을 테스트하는 방법 중 하나입니다. 퍼즈 테스팅(Fuzz testing)라고도 합니다. 예기치 못한 에러나 충돌을 일으키기 위해 소프트웨어에 무작위로 데이터를 입력한 후, 실제로 에러가 발생하면 그 원인을 분석해 보안 취약점이나 버그를 찾습니다. 프로그램 충돌이나 코드내 오류, 메모리 누수 같은 예외적인 상황을 찾을 때도 이 방법을 사용합니다.

버그와 보안 취약점을 찾는 싸움은 앞으로도 계속됩니다.

기본 원리만 보면 '이게 효과가 있나' 싶지만, 퍼징은 보안 전문가 사이에서 꽤 효과적인 테스트 방법으로 통합니다. 심지어 직접 소스코드를 들여다보는 것보다 더 만족스러운 결과를 얻을 수 있다고 합니다. 기업과 개인에 치명적인 피해를 입히는 제로데이 공격(Zero Day, 보안 취약점이 패치되기 전 이를 악용해 공격하는 것)도 주로 퍼징을 통해 그 취약점을 찾는 것으로 알려져 있습니다.

퍼징 개념의 기원은 1950년대 펀치 카드에 데이터를 저장할 때로 올라갑니다. 임의의 수를 입력해 예기치 않은 반응을 보이는지 검사한 후 발견되면 수정하는 것이죠. 퍼징이란 용어가 처음 사용된 것은 1988년 위스콘신대학의 바튼 밀러 교수에 의해서입니다. 임의의 파일을 만들어 명령줄 파라미터로 입력하는 유닉스용 툴 형태였습니다. 밀러 교수는 퍼징 툴 즉 퍼저(fuzzer) 외에 디버깅 툴도 함께 개발해 공개했습니다.

퍼징은 무작위로 변수를 생성해 입력하는 방식이어서 '바보 과학(dumb science)'이라고 불리기도 합니다. 일반적으로 자동화된 방식으로 실행하는데, 이를 수행하는 퍼저을 인터넷에서 쉽게 구할 수 있습니다. 웹 취약성 스캐너 역할을 하는 버프수트(BurpSuite), 와피티(Wapiti)를 비롯해 피치(Peach) 같은 확장형 퍼징 프레임워크, 스케이피(Scapy) 같은 네트워크 레벨 프로토콜 퍼저도 있습니다. 

퍼징은 보안 취약점과 버그를 찾는 좋은 방법이지만, 몇주 동안의 퍼징 과정을 거쳤다고 해서 그 소프트웨어에 오류가 없다는 의미는 아닙니다. 모든 입력 가능한 변수를 다 대입해 보려면 막대한 시간과 비용이 드니까요. 그래서 모든 소프트웨어에는 버그와 보안 취약점이 있습니다. 이들을 찾아 패치하는 지난한 과정은 지금도 앞으로도 계속해서 반복될 것입니다. editor@itworld.co.kr

회사명 : 한국IDG | 제호: ITWorld | 주소 : 서울시 중구 세종대로 23, 4층 우)04512
| 등록번호 : 서울 아00743 등록발행일자 : 2009년 01월 19일

발행인 : 박형미 | 편집인 : 박재곤 | 청소년보호책임자 : 한정규
| 사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.