Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
cuFuzz — 사용자 영역 CUDA 애플리케이션을 위한 GPU 지향 커버리지 기반 퍼저 | Kitploit
도구/GitHubGitHub/nvlabs/cufuzz
Vulnerability AnalysisFuzzingBinary Analysis
GitHubnvlabs/cufuzz

cuFuzz

사용자 영역 CUDA 애플리케이션을 위한 GPU 지향 커버리지 기반 퍼저

저장소 보기
3971216일 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

cuFuzz

이 저장소는 사용자 영역 CUDA 애플리케이션을 위한 GPU 지향 커버리지 가이드 퍼저인 cuFuzz의 아티팩트를 포함합니다. cuFuzz는 호스트 측 및 디바이스 측 커버리지 수집을 sanitization과 결합하여 CUDA 프로그램의 버그를 효과적으로 발견합니다.

Overview

저장소 구조

cufuzz-artifacts/
├── src/                        # Core cuFuzz components
│   ├── cufuzz_cov_nvbit/       # NVBit-based device-side coverage collection tool
│   └── cufuzz_sand/            # Sanitizer wrappers for SAND integration
├── targets/                    # Example fuzzing targets
│   └── sampleApp/              # Simple CUDA app with intentional bug for testing
├── scripts/                    # Evaluation and analysis scripts
├── Tools/                      # External dependencies
│   ├── AFLplusplus/            # AFL++ fuzzer (git submodule)
│   └── AFLplusplus.patch       # cuFuzz patches for AFL++
├── third-party-licenses/       # Third-party license files
│   ├── LICENSE_from_aflplusplus  # AFL++ Apache 2.0 license
│   └── LICENSE_from_nvbit        # NVBit NVIDIA EULA
├── images/                     # Documentation images
├── build.sh                    # Automated build script
├── verify_build.sh             # Quick verification test
├── Dockerfile                  # Docker container definition
├── LICENSE                     # Apache License 2.0
└── CONTRIBUTING.md             # Contribution guidelines and DCO

요구 사항

하드웨어 요구 사항

cuFuzz는 다음 하드웨어 구성에서 테스트되었습니다:

구성 요소사양
GPUNVIDIA A40 (48GB VRAM, Compute Capability 8.6)
CPUIntel Xeon Platinum 8362 (64 cores, 2 threads/core)
메모리120GB+ RAM 권장
저장 공간Docker 이미지 및 퍼징 출력을 위한 50GB+ 여유 공간

기타 GPU: cuFuzz는 Compute Capability ≥ 7.0 이상의 다른 NVIDIA GPU에서도 작동해야 합니다. GPU_ARCH 환경 변수를 이에 맞게 조정하십시오 (GPU 아키텍처 구성 참조).

소프트웨어 요구 사항

구성 요소버전
Ubuntu22.04 LTS
NVIDIA 드라이버570.144 또는 호환 버전
CUDA 툴킷12.9
Docker20.10+ (권장)
nvidia-container-toolkit--gpus 플래그 지원에 필요
clang14

빠른 시작: Docker 지침

cuFuzz를 가장 빠르게 사용해 볼 수 있는 방법은 Docker 컨테이너를 사용하는 것입니다. 우리의 Dockerfile은 공식 NVIDIA CUDA 12.9 개발 이미지를 사용합니다.

1. 아티팩트 압축 해제 및 AFL++ 설정

tar -xzvf cufuzz-artifacts.tar.gz
cd cufuzz-artifacts

# Clone AFL++ (required dependency)
git clone https://github.com/AFLplusplus/AFLplusplus.git Tools/AFLplusplus
cd Tools/AFLplusplus
git checkout 9cac7ced05eb9f36c1d0b02ad594b3b09cd3938b
cd ../..

2. Docker 이미지 빌드

GPU 아키텍처를 지정하여 Docker 이미지를 빌드하십시오:

sudo docker build --build-arg GPU_ARCH=<your_arch> -t cufuzz .

GPU 아키텍처 참조:

GPU 제품군아키텍처예시
Ampere (데이터 센터)sm_80A100
Ampere (소비자/프로)sm_86A40, RTX 3090, RTX 3060
Hoppersm_90H100
Ada Lovelacesm_89RTX 4090, L40
Turingsm_75RTX 2080, T4

전체 목록은 다음을 참조하십시오: https://developer.nvidia.com/cuda-gpus

A40/RTX 3090 예시:

sudo docker build --build-arg GPU_ARCH=sm_86 -t cufuzz .

참고: 이 단계는 시스템 및 네트워크 연결 상태에 따라 몇 분이 소요될 수 있습니다.

3. Docker 컨테이너 실행

sudo docker run --rm --gpus all -it -v /:/my_workspace cufuzz bash

4. 설치 확인

Docker 컨테이너가 실행 중이면 빌드를 확인하십시오:

root@container:~/cufuzz# ./verify_build.sh

상세 빌드 지침 (Docker 미사용)

사전 요구 사항

Ubuntu 22.04에 필요한 종속성을 설치하십시오:

apt-get update && apt-get install -y build-essential python3-dev automake cmake git flex \
    bison libglib2.0-dev libpixman-1-dev python3-setuptools cargo libgtk-3-dev lld llvm llvm-dev \
    clang ninja-build cpio libcapstone-dev wget curl python3-pip vim less libxxhash-dev bc zlib1g-dev

GPU 아키텍처 설정

GPU에 맞게 GPU_ARCH 환경 변수를 설정하십시오 (위의 아키텍처 표 참조):

export GPU_ARCH=sm_86  # Change to match your GPU

AFL++ 빌드

cd Tools/AFLplusplus 
patch -N -p1 < ../AFLplusplus.patch 
export CXX=/usr/bin/clang++-14 
export CC=/usr/bin/clang-14
make -j8 &> build.log

NVBit 커버리지 도구 빌드

NVBit 버전 1.7.5를 다운로드하십시오:

mkdir -p Tools/NVBit
wget https://github.com/NVlabs/NVBit/releases/download/v1.7.5/nvbit-Linux-x86_64-1.7.5.tar.bz2
tar -xvf nvbit-Linux-x86_64-1.7.5.tar.bz2 
mv nvbit_release_x86_64/* Tools/NVBit/
rm -rf nvbit_release_x86_64 nvbit-Linux-x86_64-1.7.5.tar.bz2

우리의 NVBit 커버리지 도구를 빌드하십시오:

cd src/cufuzz_cov_nvbit/
export GPU_ARCH=sm_86  # Adjust for your GPU
ARCH=$GPU_ARCH make 

Sanitizer 래퍼 빌드

cd src/cufuzz_sand
AFL_SAN_NO_INST=1 ../../Tools/AFLplusplus/afl-clang-fast -O2 wrapper_san.c -o wrapper_memcheck.out 
AFL_SAN_NO_INST=1 ../../Tools/AFLplusplus/afl-clang-fast -DSAN_MODE_INIT -O2 wrapper_san.c -o wrapper_initcheck.out 
AFL_SAN_NO_INST=1 ../../Tools/AFLplusplus/afl-clang-fast -DSAN_MODE_RACE -O2 wrapper_san.c -o wrapper_racecheck.out
AFL_SAN_NO_INST=1 ../../Tools/AFLplusplus/afl-clang-fast -DSAN_MODE_ASAN -O2 wrapper_san.c -o wrapper_asan.out

사용법

cuFuzz를 빌드한 후 다음 명령을 사용하여 퍼징을 실행하십시오:

CUFUZZ_MAP_SIZE=65536 AFL_SKIP_CPUFREQ=1 AFL_PRELOAD=/PATH/TO/cufuzz_cov.so \
    ./Tools/AFLplusplus/afl-fuzz -x sample.dict -i input_samples/ -o output_dir/ \
    -t 1000000 ./cuda_app.out @@

cuFuzz 환경 변수

AFL++ 표준 변수

변수설명예시
AFL_SKIP_CPUFREQCPU 스케일링 정책 확인 건너뛰기AFL_SKIP_CPUFREQ=1
AFL_PRELOADNVBit 커버리지 도구 경로AFL_PRELOAD=/path/to/cufuzz_cov.so

cuFuzz 커버리지 변수

변수설명예시
CUFUZZ_MAP_SIZE커버리지 맵 크기(바이트)CUFUZZ_MAP_SIZE=65536
COV_PERSISTENTAFL 영구 모드 지원 활성화 (0=아니요, 1=예)COV_PERSISTENT=1
GPU_ARCH빌드를 위한 대상 GPU 아키텍처GPU_ARCH=sm_86

cuFuzz Sanitization 변수

변수설명예시
ORIGINAL_APP순수(비계측) 애플리케이션 경로ORIGINAL_APP=./cuda_app
SANITIZER_PATHcompute-sanitizer 바이너리 경로SANITIZER_PATH=/usr/local/cuda/bin/compute-sanitizer
SANITIZER_ARGmemcheck sanitizer 인자SANITIZER_ARG="--tool=memcheck --error-exitcode 99"
SANITIZER_ARG_RACEracecheck sanitizer 인자SANITIZER_ARG_RACE="--tool=racecheck --error-exitcode 99"
SANITIZER_ARG_INITinitcheck sanitizer 인자SANITIZER_ARG_INIT="--tool=initcheck --error-exitcode 99"

AFL_SAN_ABSTRACTION 모드

AFL_SAN_ABSTRACTION 변수는 어떤 입력이 sanitizer에 공급되는지 제어합니다:

값설명민감도성능
all_trace모든 입력을 sanitizer에 공급가장 높음가장 느림
simplify_trace고유한 실행 경로를 가진 입력을 공급높음균형적
unique_trace고유한 커버리지 시그니처를 가진 입력을 공급중간더 빠름
coverage_increase커버리지 증가를 유발하는 입력만 공급가장 낮음가장 빠름

권장: AFL_SAN_ABSTRACTION=simplify_trace (기본값)

예시

기본 모드

이 모드에서 cuFuzz는 디바이스 측 커버리지를 사용하고 또한 입력 하위 집합(고유한 트레이스를 가진 입력)에 대해 compute sanitizer를 실행합니다. 이 모드는 AFL++의 SAND 기능을 활용하여 커버리지 수집과 sanitization을 분리합니다.

cd src/cufuzz_sand

# Build sanitizer wrappers
AFL_SAN_NO_INST=1 ../../Tools/AFLplusplus/afl-clang-fast -O2 wrapper_san.c -o wrapper_memcheck.out 
AFL_SAN_NO_INST=1 ../../Tools/AFLplusplus/afl-clang-fast -DSAN_MODE_INIT -O2 wrapper_san.c -o wrapper_initcheck.out 
AFL_SAN_NO_INST=1 ../../Tools/AFLplusplus/afl-clang-fast -DSAN_MODE_RACE -O2 wrapper_san.c -o wrapper_racecheck.out
AFL_SAN_NO_INST=1 ../../Tools/AFLplusplus/afl-clang-fast -DSAN_MODE_ASAN -O2 wrapper_san.c -o wrapper_asan.out

cd ../../targets/sampleApp/

export PATH=/usr/local/cuda/bin/:$PATH
export GPU_ARCH=sm_86  # Adjust for your GPU

# Build vanilla version (for sanitizer)
nvcc sampleApp.cu -I/usr/local/cuda/include/ -O2 --ptxas-options "-v" \
    --gpu-architecture=$GPU_ARCH -o sampleApp-vanilla.out
도구 다운로드