흥미로운 분석 옵션을 갖춘 보안 지향적이고 피드백 중심이며 진화적이고 사용하기 쉬운 퍼저입니다. Honggfuzz 사용에 대한 입문서는 사용 문서를 참조하세요.
최신 안정 버전: 2.6
변경 내역
sudo apt-get install binutils-dev libunwind-dev libblocksruntime-dev clang make
다중 프로세스 및 다중 스레드 입니다. honggfuzz는 단일 실행 인스턴스로 사용 가능한 모든 CPU 코어의 잠재력을 잠금 해제할 수 있으므로 fuzzer의 여러 복사본을 실행할 필요가 없습니다. 파일 코퍼스는 퍼징된 모든 프로세스 간에 자동으로 공유되고 개선됩니다.
영구 퍼징 모드를 사용하면 엄청나게 빠릅니다. 단순/비어 있는 LLVMFuzzerTestOneInput 함수는 상대적으로 최신 CPU(예: i7-6700K)에서 초당 최대 1mo 반복 으로 테스트할 수 있습니다.
발견된 보안 버그에 대한 탄탄한 기록을 가지고 있습니다. (현재까지) OpenSSL에서 중요 점수 표시가 있는 유일한 취약점은 honggfuzz에 의해 발견되었습니다. 현재까지의 결과 요약은 트로피 단락을 참조하세요.
낮은 수준의 인터페이스를 사용하여 프로세스를 모니터링합니다(예: Linux 및 NetBSD의 ptrace ). 다른 퍼저와 달리 충돌로 인해 하이재킹/무시된 신호(퍼징된 프로그램에 의해 가로채어 잠재적으로 숨겨짐)를 발견하고 보고합니다 .
사용하기 쉽고 간단한 말뭉치 디렉터리(피드백 기반 퍼징의 경우 비어 있을 수도 있음)를 제공하면 피드백 기반 적용 범위 메트릭을 활용하여 확장하여 작업할 수 있습니다.
여러 가지(다른 적용 범위 기반 피드백 기반 퍼저보다 더 많은) 하드웨어 기반(CPU: 분기/명령어 카운팅, Intel BTS , Intel PT ) 및 소프트웨어 기반 피드백 기반 퍼징 모드를 지원합니다. 또한 블랙박스 바이너리 퍼징을 위한 새로운 qemu 모드를 참조하세요.
(적어도) GNU/Linux, FreeBSD, NetBSD, Mac OS X, Windows/CygWin 및 Android에서 작동합니다.
영구 퍼징 모드 (퍼징된 API를 반복적으로 호출하는 장기 프로세스)를 지원합니다. 이에 대한 자세한 내용은 여기에서 확인할 수 있습니다.
널리 사용되는 소프트웨어(예: Apache HTTPS, OpenSSL, libjpeg 등)에 대한 실제 퍼지 설정으로 구성된 예제 디렉토리가 함께 제공됩니다.
말뭉치 최소화 모드를 제공합니다.
Linux - BFD 라이브러리(libbfd-dev) 및 libunwind(libunwind-dev/libunwind8-dev), 소프트웨어 기반 적용 범위 모드의 경우 clang-5.0 이상
FreeBSD - gmake, clang-5.0 이상
NetBSD - gmake, clang, capstone, libBlocksRuntime
안드로이드 - 안드로이드 SDK/NDK. 또한 빌드하고 실행하는 방법에 대한 자세한 문서를 참조하세요.
윈도우 - CygWin
다윈/OS X - Xcode 10.8+
Clang/LLVM을 사용하여 honggfuzz를 컴파일하는 경우 이를 BlocksRuntime 라이브러리(libblocksruntime-dev)와 연결합니다.
Honggfuzz는 주요 소프트웨어 패키지에서 몇 가지 흥미로운 보안 문제를 찾는 데 사용되었습니다. 불완전한 목록:
OSS-Fuzz 프로젝트를 통한 수십 가지 보안 문제
OpenSSH 의 사전 인증 원격 충돌
아파치 HTTPD
mod_http2 의 원격 충돌 • CVE-2017-7659
mod_http2 의 Use-After-Free • CVE-2017-9789
mod_auth_digest 의 메모리 누수 • CVE-2017-9788
범위를 벗어난 액세스 • CVE-2018-1301
HTTP/2에서 무료 이후 쓰기 • CVE-2018-1302
범위를 벗어난 읽기 • CVE-2018-1303
다양한 SSL 라이브러리
OpenSSL 의 원격 OOB 읽기 • CVE-2015-1789
OpenSSL 의 Remote Use-After-Free(잠재적 RCE, 위험 으로 평가됨) • CVE-2016-6309
OpenSSL 의 원격 OOB 쓰기 • CVE-2016-7054
OpenSSL 의 원격 OOB 읽기 • CVE-2017-3731
OpenSSL 에서 초기화되지 않은 mem 사용
LibreSSL 에서 충돌이 발생함
LibreSSL 의 유효하지 않은 무료
BoringSSL 에서 초기화되지 않은 mem 사용
Adobe 플래시 메모리 손상 • CVE-2015-0316
libtiff 라이브러리의 여러 버그
librsvg 라이브러리의 여러 버그
포플러 라이브러리의 여러 버그
IDA-Pro 의 여러 악용 가능한 버그
Crypto++ 의 원격 DoS • CVE-2016-9939
프로그래밍 언어 통역사
PHP/파이썬/루비
PHP WDDX
PHP
펄: #1, #2, #3
LibXMP 에서는 이중이 필요하지 않습니다.
SAPCAR의 힙 버퍼 오버플로 • CVE-2017-8852
libbass 에서 충돌이 발생합니다.
프리타입 2 :
CVE-2010-2497
CVE-2010-2498
CVE-2010-2499
CVE-2010-2500
CVE-2010-2519
CVE-2010-2520
CVE-2010-2527
Windows OpenType 파서의 스택 손상 문제: #1, #2, #3
NGINX 장치 의 무한 루프
MATLAB MAT 파일 I/O 라이브러리 의 몇 가지 문제: #1, #2, #3, #4, #5
NASM #1, #2, #3, #4, #5, #6, #7, #8, #9, #10
삼바 tdbdump + tdbtool, #2, #3, #4, #5, #6 CVE-2019-14907 CVE-2020-10745 CVE-2021-20277 LPRng_time
djvulibre 충돌
VLC 에서 여러 충돌이 발생함
ClassiCube 의 버퍼 오버플로
MPV 의 힙 버퍼 오버플로(또는 UAF)
picoc 의 힙 버퍼 오버플로
OpenCOBOL 충돌: #1, #2
ProFTPD 의 DoS: #1 • #2
ImageIO(iOS/MacOS)의 여러 보안 문제
htmldoc 의 메모리 손상
OpenDetex 의 메모리 손상
Yabasic 의 메모리 손상
Xfig 의 메모리 손상
LibreOffice 의 메모리 손상
ATasm 의 메모리 손상
oocborrt 의 메모리 손상 • CVE-2020-24753
LibRaw 의 메모리 손상
페그 마크다운 에서 NULL-ptr 역참조
MD4C 의 초기화되지 않은 값 • CVE-2020-26148
fwupd 의 새로운 버그 17개
libvips 의 어설션
[ libocispec 충돌)(https://github.com/containers/libocispec/commit/6079cd9490096cfb46752bd7491c71253418a02c)
녹 :
정규식 #1, #2, #3의 패닉()
h2 #1, #2, #3의 패닉()
sleep-parser #1의 패닉()
lewton #1의 패닉()
Ethereum-Parity #1의 패닉()/DoS
crash() 부분 - GPT 파티션 관리자 #1
Rust-bitcoin/rust-lightning #1에서 충돌이 발생함
... 그리고 더
CIFASIS의 QuickFuzz
OSS-퍼즈
개구리와 퍼즈
통역사 퍼징 : 작성자: dyjakan
riufuzz : AFL과 유사한 UI를 갖춘 honggfuzz
h2fuzz : Apache의 HTTP/2 구현 퍼징
honggfuzz-dharma : 달마 문법 퍼저를 사용한 honggfuzz
Owl : 동시성 공격을 찾아내는 시스템
Honggfuzz-docker-앱
FFW : 웜 퍼징
honggfuzz-rs : Honggfuzz로 Rust 퍼징하기
충분히 거친
원숭이 : HTTP 서버
Killerbeez API : 모듈식 퍼징 프레임워크
FuzzM : 그레이 박스 모델 기반 퍼징 프레임워크
FuzzOS : Mozilla 보안 제공
안드로이드 : OHA 제작
QDBI : Quarkslab 제작
fuzzer-test-suite : Google 제공
DeepState : Trail-of-Bits 제작
Quiche-HTTP/3 : Cloudflare 제작
Bolero : 퍼즈 및 속성 테스트 프레임워크
pwnmachine : Linux에서의 익스플로잇 개발을 위한 vagrantfile
Quick700 : 웹 브라우저 및 웹 서버에서 퍼저의 효율성 분석
python-hfuzz : Honggfuzz와 python3 붙이기
go-hfuzz : honggfuzz를 붙이고 go
Magma : 실측 퍼징 벤치마크
임의-모델-테스트 : 상태 저장 모델을 테스트하기 위한 절차적 매크로
Clusterfuzz : OSS-fuzz/Chrome-fuzzing 뒤에 있는 퍼징 엔진
아파치 HTTP 서버
센토스 퍼즈
FLUFFI : Siemens의 즉각적인 퍼징을 위한 완전히 현지화된 유틸리티
Fluent Bit : Linux용 빠른 로그 프로세서 및 전달자
삼바 : SMB 서버
universal-fuzzing-docker : 작성자: nnamon
Canokey Core : 오픈 소스 보안 키의 핵심 구현
uberfuzz2 : 협력적 퍼징 프레임워크
TiKV : 분산 트랜잭션 키-값 데이터베이스
퍼지 모니터
libmutator : 합법적인 테스트 케이스를 변경하여 무작위 테스트 케이스를 생성하기 위한 C 라이브러리
StatZone : DNS 영역 파일 분석기
shub-fuzz/honggfuzz : honggfuzz에 대한 특이점 이미지
코드 인텔리전스 : 서비스로서의 퍼징
SpecFuzz : Spectre 취약점에 대한 퍼징
rcc : Rust C 컴파일러
EIP1962Fuzzing : 다양한 EIP1962 구현에 대한 퍼지 테스트
wasm-fuzz : wasmer 퍼징, 블로그 게시물
propfuzz : 커버리지 기반 퍼징과 속성 기반 테스트를 결합하는 Rust 도구 - Facebook에서 제공
비트코인 코어 : 퍼징
ESP32-Fuzzing-Framework : ESP32 애플리케이션을 위한 퍼징 프레임워크
Fuzzbench : 서비스로서의 Fuzzer 벤치마킹
rumpsyscallfuzz : NetBSD Rump 커널 퍼징
libnbd : honggfuzz로 libnbd 퍼징
EnsmallenGraph : 매우 큰 그래프에서 node2vec와 유사한 가중치 무작위 보행을 실행하는 Rust 라이브러리
오아시스 코어
bp7-rs : dtn 번들 프로토콜 7의 Rust 구현
WHATWG : URL C++ 라이브러리
Xaya Core / Chimera : 분산형 오픈소스 정보 등록 및 전송 시스템
OpenWRT : 임베디드 장치를 대상으로 하는 Linux 운영 체제
RcppDeepStateTools : DeepState 테스트 하니스 실행을 위한 R 기능이 포함된 Linux 관련 R 패키지
Materialize : 실시간 애플리케이션을 위한 스트리밍 데이터베이스
러스트-비트코인
Substrate : 블록체인 혁신을 위한 차세대 프레임워크
솔라나(Solana ): 빠르고 안전하며 검열에 저항하는 블록체인
fwupd : Linux에서 펌웨어 업데이트를 자동으로 안전하고 안정적으로 만드는 것을 목표로 하는 프로젝트
polkadot : Substrate 프레임워크를 기반으로 Rust에서 https://polkadot.network 노드 구현
systemd : honggfuzz에 의해 테스트되었습니다.
freetype : honggfuzz에 의해 테스트되었습니다.
ghostscript : honggfuzz에 의해 테스트되었습니다.
Fuzzme : 프로그래밍 언어 및 퍼저를 위한 퍼징 템플릿
P0 : ImageIO 퍼징
TrapFuzz : P0 기준
Rust의 퍼지 테스트
그리고 여러 Rust 프로젝트
사용자 메일링 리스트: [email protected], 이 링크로 가입하세요.
이것은 공식 Google 제품이 아닙니다.