Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
cuFuzz — यूज़रलैंड CUDA अनुप्रयोगों के लिए GPU-केंद्रित कवरेज-निर्देशित फ़ज़र | Kitploit
उपकरण/GitHubGitHub/nvlabs/cufuzz
भेद्यता विश्लेषणफज़िंगबाइनरी विश्लेषण
GitHubnvlabs/cufuzz

cuFuzz

यूज़रलैंड CUDA अनुप्रयोगों के लिए GPU-केंद्रित कवरेज-निर्देशित फ़ज़र

रिपॉजिटरी देखें
3976 महीने पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

cuFuzz

इस रिपॉजिटरी में cuFuzz के आर्टिफैक्ट्स शामिल हैं, जो यूज़रलैंड CUDA अनुप्रयोगों के लिए एक GPU-उन्मुख कवरेज-निर्देशित फ़ज़र है। cuFuzz होस्ट-साइड और डिवाइस-साइड कवरेज संग्रह को सैनिटाइज़ेशन के साथ जोड़ता है ताकि CUDA प्रोग्रामों में बग्स को प्रभावी ढंग से खोजा जा सके।

Overview

रिपॉजिटरी संरचना

root@kitploit:~
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)

अन्य GPU: cuFuzz कंप्यूट क्षमता ≥ 7.0 वाले अन्य NVIDIA GPU पर काम करना चाहिए। GPU_ARCH पर्यावरण चर को तदनुसार समायोजित करें (देखें GPU आर्किटेक्चर कॉन्फ़िगरेशन)।

सॉफ़्टवेयर आवश्यकताएँ

त्वरित आरंभ: Docker निर्देश

cuFuzz को आज़माने का सबसे तेज़ तरीका Docker कंटेनर का उपयोग करना है। हमारा Dockerfile आधिकारिक NVIDIA CUDA 12.9 डेवलपमेंट इमेज का उपयोग करता है।

1. आर्टिफैक्ट निकालें और AFL++ सेट अप करें

root@kitploit:~
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 इमेज बनाएं:

root@kitploit:~
sudo docker build --build-arg GPU_ARCH=<your_arch> -t cufuzz .

GPU आर्किटेक्चर संदर्भ:

पूरी सूची के लिए देखें: https://developer.nvidia.com/cuda-gpus

A40/RTX 3090 के लिए उदाहरण:

root@kitploit:~
sudo docker build --build-arg GPU_ARCH=sm_86 -t cufuzz .

नोट: यह चरण आपकी मशीन और नेटवर्क कनेक्शन के आधार पर कई मिनट ले सकता है।

3. Docker कंटेनर चलाएं

root@kitploit:~
sudo docker run --rm --gpus all -it -v /:/my_workspace cufuzz bash

4. इंस्टॉलेशन सत्यापित करें

Docker कंटेनर चलने के बाद, बिल्ड सत्यापित करें:

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

विस्तृत बिल्ड निर्देश (Docker के बिना)

पूर्वापेक्षाएँ

Ubuntu 22.04 पर आवश्यक निर्भरताएँ इंस्टॉल करें:

root@kitploit:~
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 पर्यावरण चर सेट करें (ऊपर आर्किटेक्चर तालिका देखें):

root@kitploit:~
export GPU_ARCH=sm_86  # Change to match your GPU

AFL++ बनाएं

root@kitploit:~
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 डाउनलोड करें:

root@kitploit:~
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 कवरेज टूल बनाएं:

root@kitploit:~
cd src/cufuzz_cov_nvbit/
export GPU_ARCH=sm_86  # Adjust for your GPU
ARCH=$GPU_ARCH make 

सैनिटाइज़र रैपर बनाएं

root@kitploit:~
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 बनाने के बाद, निम्नलिखित कमांड का उपयोग करके फ़ज़िंग चलाएँ:

root@kitploit:~
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 सैनिटाइज़ेशन वेरिएबल

AFL_SAN_ABSTRACTION मोड

AFL_SAN_ABSTRACTION वेरिएबल नियंत्रित करता है कि सैनिटाइज़र को कौन से इनपुट दिए जाएँ:

अनुशंसित: AFL_SAN_ABSTRACTION=simplify_trace (डिफ़ॉल्ट)

उदाहरण

बेसिक मोड

इस मोड में, cuFuzz डिवाइस-साइड कवरेज का उपयोग करता है और इनपुट के एक उपसमुच्चय (अद्वितीय ट्रेस वाले इनपुट) पर compute sanitizer चलाता है। यह मोड कवरेज संग्रह को सैनिटाइज़ेशन से अलग करने के लिए AFL++ की SAND सुविधा का लाभ उठाता है।

root@kitploit:~
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

# Build instrumented version (for fuzzing)
nvcc sampleApp.cu -I/usr/local/cuda/include/ -O2 --ptxas-options "-v" \
    --gpu-architecture=$GPU_ARCH --compiler-bindir ../../Tools/AFLplusplus/afl-clang-fast++ \
    -o sampleApp.out

# Run cuFuzz
ORIGINAL_APP=./sampleApp-vanilla.out \
SANITIZER_PATH=/usr/local/cuda/bin/compute-sanitizer \
SANITIZER_ARG="--tool=memcheck --report-api-errors=no --error-exitcode 99" \
SANITIZER_ARG_RACE="--tool=racecheck --report-api-errors=no --error-exitcode 99" \
SANITIZER_ARG_INIT="--tool=initcheck --report-api-errors=no --error-exitcode 99" \
CUFUZZ_MAP_SIZE=65536 \
AFL_SKIP_CPUFREQ=1 \
AFL_PRELOAD=../../src/cufuzz_cov_nvbit/cufuzz_cov.so \
../../Tools/AFLplusplus/afl-fuzz -x sample.dict -i in/ -o out/ \
    -w ../../src/cufuzz_sand/wrapper_memcheck.out \
    -w ../../src/cufuzz_sand/wrapper_racecheck.out \
    -w ../../src/cufuzz_sand/wrapper_initcheck.out \
    -t 1000000 ./sampleApp.out @@

Sanitizer mode sample output

सैनिटाइज़र के बिना चलाना (अनुशंसित नहीं): -w तर्क और SANITIZER_* वेरिएबल हटाएँ।

डिवाइस-साइड कवरेज के बिना चलाना (वैकल्पिक): AFL_PRELOAD=...cufuzz_cov.so हटाएँ।

पर्सिस्टेंट मोड

इस मोड में, cuFuzz AFL++ पर्सिस्टेंट मोड का लाभ उठाता है, जहाँ एक ही प्रक्रिया के भीतर कई इनपुट का परीक्षण किया जाता है। यह CUDA इनिशियलाइज़ेशन ओवरहेड को समायोजित (amortize) करके थ्रूपुट में काफी सुधार करता है।

पर्सिस्टेंट मोड के लिए फ़ज़िंग हार्नेस सोर्स कोड में संशोधन की आवश्यकता होती है। विवरण के लिए देखें AFL++ पर्सिस्टेंट मोड दस्तावेज़।

root@kitploit:~
cd targets/sampleApp/

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

# Build persistent mode binary
nvcc sampleApp_persistent.cu -I/usr/local/cuda/include/ -O2 --ptxas-options "-v" \
    --gpu-architecture=$GPU_ARCH --compiler-bindir ../../Tools/AFLplusplus/afl-clang-fast++ \
    -o sampleApp_persistent.out

# Run cuFuzz in persistent mode
COV_PERSISTENT=1 \
CUFUZZ_MAP_SIZE=65536 \
AFL_SKIP_CPUFREQ=1 \
AFL_PRELOAD=../../src/cufuzz_cov_nvbit/cufuzz_cov.so \
./../../Tools/AFLplusplus/afl-fuzz -x sample.dict -i in/ -o out/ \
    -t 1000000 ./sampleApp_persistent.out @@

Persistent mode sample output

पर्सिस्टेंट मोड इसका उपयोग करके सैनिटाइज़र विकल्पों का भी समर्थन करता है: src/cufuzz_sand/wrapper_persistent_san.c

समस्या निवारण

सामान्य समस्याएँ

  1. GPU का पता नहीं चला: सुनिश्चित करें कि NVIDIA ड्राइवर इंस्टॉल हैं और nvidia-smi काम करता है
  2. आर्किटेक्चर बेमेल: GPU_ARCH को अपने GPU की कंप्यूट क्षमता से मेल खाने के लिए सेट करें
  3. धीमी फ़ज़िंग: बेहतर थ्रूपुट के लिए पर्सिस्टेंट मोड सक्षम करें

योगदान

हम योगदान का स्वागत करते हैं! योगदान कैसे करें इसके दिशानिर्देशों के लिए कृपया CONTRIBUTING.md देखें, जिनमें शामिल हैं:

  • समस्याओं की रिपोर्ट करना
  • पुल रिक्वेस्ट सबमिट करना
  • डेवलपर सर्टिफिकेट ऑफ ओरिजिन (DCO) आवश्यकताएँ
  • कोड शैली दिशानिर्देश

उद्धरण

यदि आप अपने शोध में cuFuzz का उपयोग करते हैं, तो कृपया हमारे OOPSLA 2026 पेपर को उद्धृत करें:

root@kitploit:~
@article{cufuzz2026,
  title={Hunting CUDA Bugs at Scale with cuFuzz},
  author={Mohamed Tarek Ibn Ziad and Christos Kozyrakis},
  journal={Proceedings of the ACM on Programming Languages},
  volume={10},
  number={OOPSLA1},
  article={123},
  month={4},
  year={2026},
  doi={10.1145/3798231}
}

लाइसेंस

यह प्रोजेक्ट Apache License 2.0 के अंतर्गत लाइसेंस प्राप्त है - विवरण के लिए LICENSE फ़ाइल देखें।

root@kitploit:~
Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

थर्ड-पार्टी घटक

यह प्रोजेक्ट निम्नलिखित थर्ड-पार्टी घटकों का उपयोग करता है:

घटकलाइसेंसलाइसेंस फ़ाइल
AFL++Apache License 2.0third-party-licenses/LICENSE_from_aflplusplus
NVBitNVIDIA EULAthird-party-licenses/LICENSE_from_nvbit
टूल डाउनलोड करें
मेमोरी120GB+ RAM अनुशंसित
स्टोरेजDocker इमेज और फ़ज़िंग आउटपुट के लिए 50GB+ खाली स्थान
घटकसंस्करण
Ubuntu22.04 LTS
NVIDIA ड्राइवर570.144 या संगत
CUDA टूलकिट12.9
Docker20.10+ (अनुशंसित)
nvidia-container-toolkit--gpus फ़्लैग समर्थन के लिए आवश्यक
clang14
GPU परिवारआर्किटेक्चरउदाहरण
Ampere (डेटा सेंटर)sm_80A100
Ampere (कंज़्यूमर/प्रो)sm_86A40, RTX 3090, RTX 3060
Hoppersm_90H100
Ada Lovelacesm_89RTX 4090, L40
Turingsm_75RTX 2080, T4
वेरिएबलविवरणउदाहरण
CUFUZZ_MAP_SIZEकवरेज मैप का आकार बाइट्स मेंCUFUZZ_MAP_SIZE=65536
COV_PERSISTENTAFL पर्सिस्टेंट मोड समर्थन सक्षम करें (0=नहीं, 1=हाँ)COV_PERSISTENT=1
GPU_ARCHबिल्ड के लिए लक्षित GPU आर्किटेक्चरGPU_ARCH=sm_86
वेरिएबलविवरणउदाहरण
ORIGINAL_APPवैनिला (अनइंस्ट्रूमेंटेड) एप्लिकेशन का पथORIGINAL_APP=./cuda_app
SANITIZER_PATHcompute-sanitizer बाइनरी का पथSANITIZER_PATH=/usr/local/cuda/bin/compute-sanitizer
SANITIZER_ARGmemcheck सैनिटाइज़र के लिए तर्कSANITIZER_ARG="--tool=memcheck --error-exitcode 99"
SANITIZER_ARG_RACEracecheck सैनिटाइज़र के लिए तर्कSANITIZER_ARG_RACE="--tool=racecheck --error-exitcode 99"
SANITIZER_ARG_INITinitcheck सैनिटाइज़र के लिए तर्कSANITIZER_ARG_INIT="--tool=initcheck --error-exitcode 99"
मानविवरणसंवेदनशीलताप्रदर्शन
all_traceसैनिटाइज़र को सभी इनपुट देंसर्वोच्चसबसे धीमा
simplify_traceअद्वितीय निष्पादन पथ वाले इनपुट देंउच्चसंतुलित
unique_traceअद्वितीय कवरेज सिग्नेचर वाले इनपुट देंमध्यमतेज़
coverage_increaseकेवल कवरेज वृद्धि का कारण बनने वाले इनपुट देंन्यूनतमसबसे तेज़