前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何使用VulnerableCode查看受漏洞影响的FOSS软件代码包

如何使用VulnerableCode查看受漏洞影响的FOSS软件代码包

作者头像
FB客服
发布2021-05-20 17:00:31
8630
发布2021-05-20 17:00:31
举报
文章被收录于专栏:FreeBuf

关于VulnerableCode

VulnerableCode是一个免费的开放FOSS软件包漏洞数据库,并且还包含了能够创建并跟踪当前数据的相关工具。在该工具的帮助下,广大研究人员能够查看受漏洞影响的代码包,并实现漏洞的聚合、关联和管理。

FOSS,即Free and Open Source Software,这是联合国教科文组织启用的一个官方术语。“FOSS产业”是有新意的,严格讲来,它不完全等同于“开源产业”。FOSS把现代软件业带入一个全新阶段。“FOSS”的中译文是“自由及开源软件”。

VulnerableCode是FOSS社区开发的一款工具,它能够提升开源软件生态系统的安全性。

运行机制

VulnerableCodeli独立地聚合了许多软件漏洞数据源,并以去中心化的方式支持数据重新创建。这些数据源包括Linux和BSD发行版发布的安全建议、应用程序软件包管理器和包存储库、FOSS项目、GitHub等等。由于这种方法,数据集中在特定的生态系统上,但在单个数据库中进行聚合,从而能够查询代码包之间更丰富的关系图。特定性提高了数据的准确性和有效性,因为跨不同生态系统的同一版本上游数据包可能会或可能不会受到同一漏洞的影响。

工具使用了Package URL PURL来作为主要标识符,而没有使用CPE。VulnerableCode对数据的主要访问是通过REST API进行的。

此外,工具还提供了一个高级的Web界面来帮助用户更好地浏览和搜索漏洞数据库,并通过添加新的包和漏洞逐步实现数据的社区管理,以及审查和更新它们的关系。

工具安装&配置

我们需要使用下列命令将该项目源码克隆至本地:

代码语言:javascript
复制
git clone https://github.com/nexB/vulnerablecode.git

cd vulnerablecode

使用Docker Compose

安装VulnerableCode最简单的方法就是使用Docker容器和Docker Compose。安装好Docker引擎和Docker Compose之后,我们就可以使用下列命令来启动VulnerableCode了:

代码语言:javascript
复制
sudo docker-compose up

接下来,通过下列地址即可访问VulnerableCode:

代码语言:javascript
复制
http://localhost:8000/

http://127.0.0.1:8000/

别忘了运行下列命令来在每一次git pull之后同步你的实例:

代码语言:javascript
复制
sudo docker-compose up -d --no-deps --build web

然后,我们可以使用下列命令来访问VulnerableCode容器,这里我们可以访问manage.py,并运行管理命令来导入数据:

代码语言:javascript
复制
sudo docker-compose exec web bash

本地安装

系统要求:

Python 3.8+ PostgreSQL 9+ 针对Python和PostgreSQL的编译工具链和开发文件

在基于Debian的发行版系统上,可以使用下列下列命令安装和配置VulnerableCode:

代码语言:javascript
复制
sudo apt-get install python3-venv python3-dev postgresql libpq-dev build-essential

sudo -u postgres createuser --no-createrole --no-superuser --login \

--inherit --createdb --pwprompt vulnerablecode``

createdb --encoding=utf-8 --owner=vulnerablecode  --user=vulnerablecode \

--password --host=localhost --port=5432 vulnerablecode

python3 -m venv venv

source venv/bin/activate

pip install -r requirements.txt

DJANGO_DEV=1 python manage.py collectstatic

DJANGO_DEV=1 python manage.py migrate

运行测试

下列命令可以运行代码风格检测和测试用例:

代码语言:javascript
复制
black -l 100 --check .

DJANGO_DEV=1 python -m pytest

数据导入

某些数据导入工具使用了GitHub API,首先我们需要使用下列命令导出GH_TOKEN环境变量:

代码语言:javascript
复制
export GH_TOKEN=yourgithubtoken

运行所有的数据导入器:

代码语言:javascript
复制
DJANGO_DEV=1 python manage.py import --all

枚举所有可用的导入器:

代码语言:javascript
复制
DJANGO_DEV=1 python manage.py import --list

运行指定导入器:

代码语言:javascript
复制
DJANGO_DEV=1 python manage.py import rust npm

REST API访问

开启Web服务器:

代码语言:javascript
复制
DJANGO_DEV=1 python manage.py runserver

获取关于API节点的完整文档:

代码语言:javascript
复制
http://127.0.0.1:8000/api/docs

连续定期数据导入

如果你想要持续定期导入数据,你可以使用一个系统定时器:

代码语言:javascript
复制
$ cat ~/.config/systemd/user/vulnerablecode.service

[Unit]

Description=Update vulnerability database

[Service]

Type=oneshot

Environment="DJANGO_DEV=1"

ExecStart=/path/to/venv/bin/python /path/to/vulnerablecode/manage.py import --all

$ cat ~/.config/systemd/user/vulnerablecode.timer

[Unit]

Description=Periodically update vulnerability database

[Timer]

OnCalendar=daily

[Install]

WantedBy=multi-user.target

配置好之后,你就可以使用下列命令来开启这个定时器:

代码语言:javascript
复制
systemctl --user daemon-reload

systemctl --user start vulnerablecode.timer

项目地址:

VulnerableCode:https://github.com/nexB/vulnerablecode

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-05-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 关于VulnerableCode
  • 运行机制
  • 工具安装&配置
    • 使用Docker Compose
      • 本地安装
      • 运行测试
      • 数据导入
      • REST API访问
      • 连续定期数据导入
      相关产品与服务
      容器镜像服务
      容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档