網站每日簽到怎么做大一html網頁制作
關于oss-fuzz-gen
oss-fuzz-gen是一款基于LLM的模糊測試對象生成與評估框架,該工具可以幫助廣大研究人員使用多種大語言模型(LLM)生成真實場景中的C/C++項目以執(zhí)行模糊測試。

該工具基于Google的OSS-Fuzz平臺實現其功能,并對生成的目標執(zhí)行基準測試。
工具架構
工具運行流程如下:

工具會根據生產環(huán)境中的最新數據,使用四個指標來評估生成的模糊測試目標:
1、可操作性;
2、運行時崩潰;
3、運行時覆蓋率;
4、與OSS-Fuzz中現有的人工編寫的模糊目標相比,運行時行覆蓋率存在的差異;
下圖顯示的是該工具與297個開源項目進行的1300+基準測試結果:

支持的模型
Vertex AI code-bison
Vertex AI code-bison-32k
Gemini Pro
OpenAI GPT-3.5-turbo
OpenAI GPT-4
工具要求
Python 3.11
pip
python3.11-venv
Git
Docker
Google Cloud SDK
c++filt
clang-format
工具下載
廣大研究人員可以直接使用下列命令將該項目源碼克隆至本地:
git clone https://github.com/google/oss-fuzz-gen.git
然后使用下列命令創(chuàng)建一個虛擬環(huán)境,激活環(huán)境后使用pip命令和項目提供的requirements.txt安裝該工具所需的其他依賴組件:
cd?oss-fuzz-genpython3 -m venv .venvsource .venv/bin/activatepip install -r requirements.txt
LLM訪問
Vertex AI
訪問Vertex AI模型需要一個啟用了Vertex AI的Google云項目(GCP)。
然后完成GCP身份認證:
gcloud auth logingcloud auth application-default logingcloud auth application-default set-quota-project <your-project>
你還需要指定GCP項目和Vertex AI配額:
export CLOUD_ML_PROJECT_ID=<gcp-project-id>export VERTEX_AI_LOCATIONS=us-west1,us-west4,us-east4,us-central1,northamerica-northeast1
OpenAI
OpenAI的使用需要一個API密鑰,獲取到之后需要在一個環(huán)境變量中設置:
export OPENAI_API_KEY='<your-api-key>'
工具執(zhí)行
下列命令可以生成并評估一個模糊測試對象,然后執(zhí)行基準測試:
./run_all_experiments.py \--model=<model-name> \--benchmarks-directory='./benchmark-sets/comparison' \[--ai-binary=<llm-access-binary>] \[--template-directory=prompts/custom_template] \[--work-dir=results-dir][...]# E.g., generate fuzz targets for TinyXML-2 with default template and fuzz for 30 seconds.# ./run_all_experiments.py -y ./benchmark-sets/comparison/tinyxml2.yaml
其中的<model-name>可以是下列參數:
1、Vertex AI中Code Bison模型的vertex_ai_code-bison或vertex_ai_code-bison-32k;
2、Vertex AI中Gemini Pro的vertex_ai_gemini-pro;
3、OpenAI的gpt-3.5-turbo或gtp-4;
可視化結果
================================================================================*<project-name>, <function-name>*build success rate: <build-rate>, crash rate: <crash-rate>, max coverage: <max-coverage>, max line coverage diff: <max-coverage-diff>max coverage sample: <results-dir>/<benchmark-dir>/fixed_targets/<LLM-generated-fuzz-target>max coverage diff sample: <results-dir>/<benchmark-dir>/fixed_targets/<LLM-generated-fuzz-target>
生成報告
該工具還支持通過一個Web UI來查看結果:
python -m report.web <results-dir> <port>
<results-dir>為--work-dir的目錄路徑,默認值為./results。執(zhí)行完成后,直接訪問http://localhost:<port> 即可查看。
許可證協(xié)議
本項目的開發(fā)與發(fā)布遵循Apache-2.0開源許可證協(xié)議。
項目地址
oss-fuzz-gen:【GitHub傳送門】
參考資料
GitHub - google/oss-fuzz: OSS-Fuzz - continuous fuzzing for open source software.
https://github.com/google/oss-fuzz-gen/blob/main/benchmark-sets/all
https://cloud.google.com/vertex-ai/docs/start/cloud-environment
https://cloud.google.com/resource-manager/docs/creating-managing-projects#console