Fuzz Testing이란 무엇입니까?

퍼지 또는 원숭이 테스트 라고도하는 퍼즈 테스트 는 알려지지 않은 취약점을 소프트웨어에서 테스트하는 데 사용되는 기술입니다. 퍼지 테스트 프로세스는 fuzzer 라고하는 프로그램에 의해 자동화되며, 대상 프로그램에 입력으로 많은 양의 데이터가 전송됩니다. 대상 프로그램이 충돌하거나 바람직하지 않은 방식으로 작동하면 fuzzer가 오류를 일으킨 입력 로그를 작성합니다.

해커들은 종종 소프트웨어의 취약성을 찾기 위해 fuzzer를 사용하여 취약성을 탐색합니다. 소프트웨어 개발자는 fuzzer를 사용하여 이러한 유형의 공격을 예상하고 방어 할 수 있습니다.

유래

첫 번째 fuzzer는 Macintosh 컴퓨터 용 프로그램의 약점을 테스트하기 위해 개발자 Steve Capps가 1980 년대 초에 작성했습니다. 그는 무한한 시간 동안 타이프라이터에서 임의의 키를 누르는 원숭이의 고전적 격언을 인용하여 자신의 프로그램 인 "원숭이"를 호출했습니다. 이론은 충분한 시간이 주어진다면, 원숭이는 결국 셰익스피어의 전체 작품을 쓸 것입니다. 소프트웨어 테스팅에 대한 이러한 접근법은 일반적으로 "퍼징 (fuzzing)"이라고 불리지 만 Capps 프로그램 때문에 "원숭이 테스트"라고도합니다.

Fuzzers 목록

Fuzzing 기술은 소프트웨어를 테스트하는 데 사용될 수 있으며 특정 목적을 위해 많은 fuzzer가 존재합니다.

다음은 fuzzers 목록이며, 대부분은 오픈 소스이며 많은 사람들이 여전히 활발한 개발 중입니다.

Fuzzer 이름 / URL기술
Google 살균제Google에서 개발 한 네 가지 데이터 삭제 도구 그룹으로 퍼지를 사용하여 프로그램 오류를 감지합니다.
  • AddressSanitizer - C 및 C ++ 프로그램에서 메모리 주소 오류를 감지합니다.
  • LeakSanitizer - 메모리 누수를 감지합니다.
  • ThreadSanitizer - C ++ 및 Go에서 경쟁 조건을 감지합니다.
  • 메모리 초기화 도구는 초기화되지 않은 메모리를 감지합니다.
아프 - 퍼즈American Fuzzy Lop은 유전 알고리즘을 사용하여 컴파일 된 프로그램의 보안을 테스트하는 도구입니다.
백 퍼즈프로토콜 퍼징 툴킷.
BrundleFuzzWindows 및 Linux 용 분산 fuzzer.
CERT FOEFailure Observation Engine : CERT에서 개발 한 도구로 mutational fuzzing을 사용하여 Windows 프로그램의 취약점을 탐지합니다.
CERTfuzzCERT FOE의 소스 코드.
초론 존진화론에 기반한 fuzzer.
Diffy웹 서비스의 취약점을 발견하기 위해 Twitter에서 개발 한 도구.
파이썬 용 퍼징 라이브러리
dfuzzerD-Bus IPC 및 RPC 메커니즘을 통해 통신하는 프로세스를 테스트하기위한 퍼징 도구입니다.
dotdotpwn경로 통과 취약점에 대한 웹 응용 프로그램을 테스트하는 도구입니다.
드랑 주ActiveX 컨트롤을위한 퍼지 테스터.
EMFFuzzer향상된 메타 파일 퍼지 테스터.
악용 가능한Linux 실행 파일을 분석하고 알려진 버그에 따라 심각도별로 버그를 분류하는 GDB (GNU 디버거) 용 확장 프로그램. 원래 CERT에서 개발되었습니다.
어리 석음객체를 임의의 값으로 채우는 Go 프로그램 용 퍼지 테스터입니다.
grr32 비트 바이너리를 64 비트로 변환하여 프로세스의 일부로 처리합니다.
홍콩하드웨어 및 소프트웨어를위한 혁신적이고 피드백 중심적인 fuzzer.
HTTP / 2 FuzzerHTTP / 2 응용 프로그램 용 fuzzer로 다운로드 할 수는 있지만 더 이상 활발하게 개발되지는 않습니다.
호도르"완전히 바보보다 약간"(무차별 한) fuzzer.
iFuzzerMercurial과 Valgrind를 사용하는 파이썬으로 작성된 fuzzer.
KEMUfuzzerQEMU, VMware, VirtualBox 또는 BHOCS 에뮬레이션 플랫폼에서 실행되는 가상 컴퓨터 용 fuzzer입니다.
KernelFuzzer커널 시스템 호출을위한 fuzzer
LibFuzzer프로세스 중, 진화론 적, 적용 범위 안내 형 퍼즈 테스트를위한 라이브러리.
Netzob리버스 엔지니어링 통신 프로토콜 용 fuzzer.
신경 푸저기계 학습 (신경 네트워크)을 사용하여 테스트를 수행하는 fuzzer.
악몽웹 기반 관리 도구가있는 분산 fuzzer.
Pathgrind32 비트 응용 프로그램에 대한 경로 기반 동적 분석.
퍼프 - 퍼지Linux 커널에서 perf_event_open () 시스템 호출을 테스트하도록 특별히 설계된 fuzzer입니다.
펄서프로토콜을 "습득"하는 fuzzer.
PyJFuzz파이썬 JSON fuzzer.
퀵 퍼즈하스켈에서 작성된 실험적 문법 퍼 저.
라덤 사범용 fuzzer.
랜디테스트 된 프로그램에 대한 임의의 입력을 생성하는 간단한 파이썬 fuzzer.
아프다간단한 솜털. "마치 단순한 퍼지 (fuzzer)처럼 들린다." Kali Linux 도구 세트의 일부로 포함되어 있습니다.
스키 피쉬Google에서 개발 한 웹 응용 프로그램 보안 스캐너입니다.
syntribiosPython으로 작성되고 OpenStack 보안 그룹에 의해 유지 관리되는 웹 API 용 자동 퍼지 테스터.
TriforceAFLQEMU를 사용하는 전체 시스템 fuzzer.
와피 티웹 응용 프로그램 취약점 스캐너.
윙윙 거리다웹 어플리케이션을위한 무차별 포 커.
zzuf파일의 입력 작업에서 임의로 비트를 변경하는 결정 성 있고 투명한 응용 프로그램 입력 fuzzer입니다.

다음은 퍼징 테스트를 관리하는 데 도움이되는 fuzzing harnesses 또는 framework입니다.

퍼징 프레임 워크기술
CERT BFFCERT에서 개발 한 BFF (Basic Fuzzing Framework)는 Windows, macOS 및 Linux 응용 프로그램의 취약점을 발견하도록 설계되었습니다.
FuzzFlowAngularJS의 퍼징 프레임 워크.
퍼지 네이터임의의 퍼지 테스트를위한 프레임 워크.
FuzzLabs범용 퍼즈 테스트 프레임 워크.
분쇄기웹 브라우저 테스트를위한 퍼지 테스트 자동화 / 프레임 워크.
고양이 새끼Python으로 작성된 퍼지 테스트 프레임 워크.
~의OCaml로 작성된 퍼지 프레임 워크.
Nodefuzznodejs로 작성된 웹 브라우저 용 퍼즈 테스트 프레임 워크.
PassiveFuzzFrameworkOSXmacOS 커널의 취약점을 테스트하기위한 fuzzer.
복숭아 Fuzzer"알려지지 않은 취약점이있는 시스템을 사실상 테스트 할 수있는"퍼즈 테스트 플랫폼.
RamFuzz객체 메서드의 개별 매개 변수를 테스트하기위한 fuzzer입니다.
설리"완전히 자동화되고 무인, 순수 Python"fuzzing 프레임 워크.
FunFuzzerMozilla의 JavaScript 엔진 및 DOM 렌더러 용 Python fuzzing harness

버그, 프로그래밍 용어, 보안 용어, 소프트웨어 테스팅