티스토리 뷰

퍼징이란 테스트에 사용되는 데이터를 랜덤으로 생성하는 블랙박스 소프트웨어, 하드웨어 테스트이다. 지금은 퍼징 도구가 블락박스, 화이트박스에 따라서 접근 방법을 지원하며 많은 파라미터도 생긴 상태입니다. 그리고 이러한 파라키터를 통해 퍼징 과정을 미세하게 조정할 수 있습니다. 퍼징은 무엇보다 큰 장점은 내부 매커니즘을 이해할 필요가 없다는 점입니다. 취약점을 발견하는데 필요한 것은 어느 인터페이스를 통해 서 소프트웨어와 상호작용이 이루어지는지 알고 전달할 데이터를 만드는 것 뿐입니다. 


퍼징, 퍼즈 테스트는 테스트 수행에 사용할 데이터를 랜덤하게 생성하는 소프트웨어 혹은 하드웨어 방법입니다. 기술의 발전으로 이제는 랜덤하게 생성된 데이터를 넣는다기 보다. 일종의 자동화된 스프트웨어 혹은 하드웨어 테스트가 되었습니다. 실제 퍼징이 이루어지는 과정을 통해서 설명드리겠습니다. 


1. 대상 선정 


대상을 마음대로 고를 수 있을 때 퍼징을 할 적당한 타겟을 찾아 성공확률을 높아야합니다. 


1-1. 소프트웨어 복잡도는 버그 확률을 높이는데 복잡할 수록 옵션과 파라미터가 많을 수록 파싱하는 프로그램에 보안문제가 많이 발생하기 때문입니다. 이해하기 어렵고 버그 검사도 힘들기 때문입니다. 이 것을 판단하는 방법은 해당 소프트웨어 관련 문서, 지원하는 프로토콜의 수, 지원하는 파일 형식의 수, 지원하는 파일 형식의 정보, app의 크기 등을 보고 판단하면 되겠습니다. 


1-2 대상의 입력 값에 대해 쉽게 자동화할 수 있는 것이면 좋습니다. 커맨드로 입력하는 방식은 GUI형식보다 자동화가 쉽습니다. APP는 다양한 입력형태를 지원할 수 있으므로 이를 구분하고 테스트의 목적에 어울리는 것을 골라야합니다. 대표적인 여러가지 입력을 지원하는 형태로는 미디어 플레이어가 있습니다. 이 것은 자신의 컴퓨터 내부 즉 로컬에서 실행할 수도 있고 네트워크 스트림으로 실행할 수도 있습니다. 그리고 이에 따라 서로 다른 설정이 필요합니다. 


인터페이스의 예 : 네트워크(HTTP), 커맨드 라인, 파일 입력(HWP, 미디어 플레이어)


어떤 APP에서는 Exported API가 있어서 자동화를 쉽게 만들어줄 수 있습니다. 물론 이러한 것이 없을 경우는 소프트웨어 자동화에 특화된 도구를 사용하면 됩니다. 자동화 도구를 고를 때는 가격과 라이센스, 사용하는 스크립트 언어, 속도를 잘 고려해서 구매하면 됩니다. 


대표적인 자동화 도구의 예 


셀레니움(Selenum) : 브라우저와 웹 어플리케이션을 테스트하는데 사용하는 브라우저 자동화 프레임워크입니다. 이 도구는 다음과 같은 두 가지 방법의 자동화를 지원합니다. 


1. 녹화 재생 기반의 테스트 방법으로 파이어폭스 플러그인 형태입니다. 웹 페이지를 클릭하거나 데이터를 입력하는 등의 행동을 녹화한 후 이를 같은 순서대로 진행해줍니다. 이렇나 자동화형태는 복잡한 네비게이션 시나리오의 웹 APP 테스트를 하는데 효과적입니다. 


2. Selenum WebDriver API를 사용하는 것입니다. 이 API는 자동화용으로 설계된 강력한 프로그래밍을 제공합니다. 동적 웹에 대한 더 나은 지원을 제공하며 내장 자동화 지원 기능을 이용해 브라우저를 직접 제어합니다. 


오토잇(AutoIT) : 베이직과 비슷한 스트립트 언어를 지원하며 윈도우 os 자동화 스크립트를 지원합니다. 방대한 자료와 스크립트 언어의 간단함 때문에 유명해졌고 윈도우에서 자동화를 한다면 좋은 선택이 될 것입니다. 


익스펙트(Expect) 리눅스에서 다른 프로그램과 통신하는 그 상호작용을 자동화하는 프로그램입니다. Tcl(Tool Command Language) 를 지원하며 고유한 추가 명령도 지원합니다. libexpect라는 라이브러리를 이용하면 Except 기능을 C/C++에서도 사용가능합니다. 





댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함