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

該工具基于Google的OSS-Fuzz平臺(tái)實(shí)現(xiàn)其功能,并對(duì)生成的目標(biāo)執(zhí)行基準(zhǔn)測(cè)試。
工具架構(gòu)
工具運(yùn)行流程如下:

工具會(huì)根據(jù)生產(chǎn)環(huán)境中的最新數(shù)據(jù),使用四個(gè)指標(biāo)來(lái)評(píng)估生成的模糊測(cè)試目標(biāo):
1、可操作性;
2、運(yùn)行時(shí)崩潰;
3、運(yùn)行時(shí)覆蓋率;
4、與OSS-Fuzz中現(xiàn)有的人工編寫(xiě)的模糊目標(biāo)相比,運(yùn)行時(shí)行覆蓋率存在的差異;
下圖顯示的是該工具與297個(gè)開(kāi)源項(xiàng)目進(jìn)行的1300+基準(zhǔn)測(cè)試結(jié)果:

支持的模型
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
工具下載
廣大研究人員可以直接使用下列命令將該項(xiàng)目源碼克隆至本地:
git clone https://github.com/google/oss-fuzz-gen.git
然后使用下列命令創(chuàng)建一個(gè)虛擬環(huán)境,激活環(huán)境后使用pip命令和項(xiàng)目提供的requirements.txt安裝該工具所需的其他依賴組件:
cd?oss-fuzz-genpython3 -m venv .venvsource .venv/bin/activatepip install -r requirements.txt
LLM訪問(wèn)
Vertex AI
訪問(wèn)Vertex AI模型需要一個(gè)啟用了Vertex AI的Google云項(xiàng)目(GCP)。
然后完成GCP身份認(rèn)證:
gcloud auth logingcloud auth application-default logingcloud auth application-default set-quota-project <your-project>
你還需要指定GCP項(xiàng)目和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的使用需要一個(gè)API密鑰,獲取到之后需要在一個(gè)環(huán)境變量中設(shè)置:
export OPENAI_API_KEY='<your-api-key>'
工具執(zhí)行
下列命令可以生成并評(píng)估一個(gè)模糊測(cè)試對(duì)象,然后執(zhí)行基準(zhǔn)測(cè)試:
./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>可以是下列參數(shù):
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;
可視化結(jié)果
================================================================================*<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>
生成報(bào)告
該工具還支持通過(guò)一個(gè)Web UI來(lái)查看結(jié)果:
python -m report.web <results-dir> <port>
<results-dir>為--work-dir的目錄路徑,默認(rèn)值為./results。執(zhí)行完成后,直接訪問(wèn)http://localhost:<port> 即可查看。
許可證協(xié)議
本項(xiàng)目的開(kāi)發(fā)與發(fā)布遵循Apache-2.0開(kāi)源許可證協(xié)議。
項(xiàng)目地址
oss-fuzz-gen:【GitHub傳送門(mén)】
參考資料
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