用户可借助此工具在开源环境中识别隐匿漏洞补丁。该平台通过多阶段特征计算与语义分析,结合大模型判断代码变更,实现补丁组排序推荐,支持自行部署或Docker快速使用。【此简介由AI生成】
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 4 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 4 个月前 |
开源环境下隐匿漏洞补丁识别工具平台SHIP
文件结构
本项目主要的文件结构如下所示。代码部分包含根据我们的方法SHIP实现的工具,数据部分包含我们所使用的数据集中所有漏洞和补丁的信息。
├── ship/
│ ├── build/ # 构建工具配置
│ ├── config/ # 环境和项目配置
│ ├── dist/ # 前端静态文件
│ ├── src/ # 前端页面
│ ├── deepseek.py # 调用大模型获取代码变更摘要和是否为补丁的判断结果
│ ├── get_each_commit_feature.py # Phase3-计算每个代码提交的基于规则的特征
│ ├── get_feature.py # Phase1-计算每个代码提交的基于规则的特征
│ ├── group_ranking.py # Phase3-对所有提交组进行排序,推荐排名第一的组为补丁组
│ ├── initial_ranking.py # Phase1-计算每个代码提交的语义特征并进行初始排序
│ ├── interrelationship_feature.py # Phase2-计算每对代码提交的基于规则的特征
│ ├── manage.py # 后端程序
│ ├── predict_relevance_score.py # Phase2-计算每对代码提交的语义特征并预测代码提交间的相关性分数
│ ├── util.py # 自定义函数文件
│ ├── favicon.ico # SHIP logo图片
│ ├── index.html # 主页面入口文件
│ ├── package-lock.json # 依赖锁定文件
│ ├── package.json # 项目配置文件
├── data/
│ ├── multi.csv # 数据集文件 (包含单补丁和多补丁漏洞,共4,630条数据)
│ ├── ghsa_dict.pkl # CVE ID和GHSA ID的对应关系文件
│ ├── vuln_type_impact.json # 漏洞类型和影响文件 (用于Phase1)
├── requirements.txt # 依赖环境配置文件
如何运行
方法一:自行部署
实验在Ubuntu 20.04、cuda 12.2的机器上进行。用户可按照如下步骤进行部署:
-
将https://figshare.com/articles/dataset/SHIP_models/30162115中提供的三个模型权重参数文件下载至 ship/ 目录
-
创建并激活conda虚拟环境
conda create -n SHIP python=3.9 conda activate SHIP -
安装 PyTorch, torchaudio, torchvision
conda install pytorch==2.4.0 torchvision==0.19.0 torchaudio==2.4.0 pytorch-cuda=12.1 -c pytorch -c nvidia -
从官网下载并安装 nodejs 16.2.0和MySQL
-
将数据集文件multi.csv导入到MySQL数据库
-
安装其他依赖库
pip install -r requirements.txt -
运行后端程序
python manage.py -
安装前端依赖
npm install -
运行前端程序
npm run dev
方法二:直接使用Docker
用户可按照如下步骤使用我们提供的Docker镜像:
-
下载Docker镜像https://figshare.com/articles/dataset/SHIP_docker/30162439
-
在终端内导入并运行Docker镜像
docker import ship_web.tar ship_web docker run -it --gpus all -p 8080:8080 -p 5000:5000 ship_web /bin/bash -
运行脚本文件以启动服务
sh /home/start.sh