文档版本变更:
版本 | 日期 | 修改记录 |
---|---|---|
v0.0.1 | 2022/12/11 | 确定用户手册框架 |
v1.0.0 | 2022/12/13 | 完成撰写 |
一、系统概述
本系统通过爬取npm包管理器中的软件包信息,分析javascript供应链的各个环节中可能存在的安全风险,并实现了分析结果的可视化。本系统还为用户提供了检索功能,用来查找具体某个包可能存在的安全风险。
在本系统中我们主要考虑以下六点可能存在的风险:
- 过期的维护者域。如果维护者的域已过期,并且在其帐户上没有设置2FA身份验证,则攻击者可以劫持一个组件。
- 安装脚本。攻击者可以使用安装脚本,通过软件包安装步骤来运行执行恶意行为的命令。
- 未维护的包。攻击者可以针对那些更有可能因为缺乏维护而偷偷侵入恶意软件的软件包。
- 第三方包的代码仓库。代码仓库与npm中的代码版本不一致,或者代码仓库长时间没有提交。
- 名称相似的恶意软件。
- 宽松的开源许可证。
二、功能说明
风险检索
在网站上方的搜索框中输入包名或维护者名,可以查看某个包或某个维护者可能存在的安全风险,用户通过这些风险信息可以自行判断是否将这个包添加为自己项目的依赖或使用某个维护者开发的包。
风险信息可视化
我们根据目前已经爬取的数据进行分析,将分析结果通过柱状图、饼图等形式展示出来,从而对整个javascript生态的供应链风险进行直观地了解。
包依赖关系
我们选取了部分包构建了一张依赖关系网络,用来展示npm的包之间复杂的依赖关系。
三、部署与使用
本系统分为数据层、服务层、应用层三层结构,相关代码均在github开源。
数据层
数据层主要包括分布式爬虫框架scrapy和mysql数据库,用来从npm爬取包信息并经过数据清理后写入数据库。部署scrapy服务需要在根目录下执行:
scrapy crawl ossd
服务层
服务层基于轻量级后端框架flask搭建,用于从服务器中查询数据并返回给前端,部署flask框架需要执行:
python wsgi.py
应用层
应用层基于渐进式javascript框架vue搭建,使用echarts作为图表插件,yarn作为包管理器,运行和打包vue程序分别需要执行:
yarn dev
yarn build