《开源软件开发导论》——开源软件供应链安全风险分析设计文档

文档版本变更:

版本日期修改记录
v0.0.12022/11/8确定设计文档框架
v0.0.22022/11/9完成概要说明部分
v0.0.32022/11/11完成体系结构设计和数据库设计部分
v0.1.02022/11/15完成界面设计部分

一、概要说明

npm是JavaScript的包管理工具,现代js开发中大部分第三方库的下载都是通过npm进行的,开源开发者们也乐意将自己得库上传到npm上。近些年许多攻击者针对流行的软件包管理器以及他们的用户进行供应链攻击,npm就包括在其中。在2021年,通过利用开源软件的供应链,安全攻击的数量同比增长了650%。

论文What are Weak Links in the npm Supply Chain?中对npm供应链的安全风险做了比较详细的分析,但是其中仍然有些不足,比如作者分析的后三种风险并没有得到从业者的认可,而作者通过调研得到的从业者的观点却没有得到深入分析,另外论文所使用的数据也有些过时了。

因此本项目希望在此篇论文的基础上,结合自己的调研和讨论,从六个方面分析npm供应链的安全风险。

我们初步将项目分为如下需求。

  • 数据爬取,通过npm官方提供的接口爬取所有包的相关数据用于进一步分析。
  • 数据清洗,在爬取的数据中有部分不符合我们的需求或者无法用于分析,这部分数据需要剔除。
  • 数据存储。实际操作中发现由于npm管理着百万级的第三方包,每次爬取都需要花费相当多的时间,因此我们将数据以一定组织形式存储起来。
  • 数据处理,通过得到的数据分析npm供应链的安全风险,主要分为六个方面。
    • 过期的维护者域。如果维护者的域已过期,并且在其帐户上没有设置2FA身份验证,则攻击者可以劫持一个组件。
    • 安装脚本。攻击者可以使用安装脚本,通过软件包安装步骤来运行执行恶意行为的命令。
    • 未维护的包。攻击者可以针对那些更有可能因为缺乏维护而偷偷侵入恶意软件的软件包。
    • 第三方包的代码仓库。代码仓库与npm中的代码版本不一致,或者代码仓库长时间没有提交。
    • 名称相似的恶意软件。
    • 宽松的开源许可证。
  • 后端,由于本项目规模不大,无需搭建复杂的后端框架,因此选择flask作为我们的后端框架。
  • 前端,使用vue.js框架搭建,用于直观展示一些数据。

二、体系结构设计

体系设计部分遵循了数据层-服务层-应用层的框架。

数据层

在数据获取方面,npm相关包的信息储存在CouchDB数据库中,利用python的request包来进行爬取,因为数据量较大,每次爬取消耗时间较长,因此采用Mysql数据库进行存储,并在数据清洗阶段剔除无用的数据。

服务层

后端使用flask框架来进行轻量级开发,与前端使用json格式来进行数据通信,在不影响后端使用的同时尽量减轻框架本身复杂程度带来的冗杂问题。

应用层

前端使用VUE框架进行搭建,采用element-ui框架和echarts图表。

三、数据库设计

在这里插入图片描述

package

名称类型长度是否非空是否主键注释
idvarchar50yesyes
namevarchar50包名
author_idvarchar发布者id
descriptionvarchar50简介
liscensevarchar20许可证
lastest_timedatetime最新版本发布时间
versionvarchar20最新版本号
deprecatedtinyint是否弃用
has_install_scripttinyint是否有安装脚本
repositoryvarchar50仓库链接
modified_timedatetime最近修改时间
is_malicioustinyint是否是恶意包

human

名称类型长度是否非空是否主键注释
idintyesyes
namevarchar20用户名
emailvarchar50邮箱
urlvarchar255主页地址

contributors

名称类型长度是否非空是否主键注释
idintyesyes
human_idint
package_idvarchar50

maintainers

名称类型长度是否非空是否主键注释
idintyesyes
human_idint
package_idvarchar50

dependencies

名称类型长度是否非空是否主键注释
idintyesyes
dependent_idvarchar50依赖者
dependee_idvarchar50被依赖者
typevarchar10依赖类型

四、业务界面设计

在这里插入图片描述

搜索栏设计

页面最上方的搜索栏可以检索具体某个包或者某个维护者的风险信息。

总览栏设计

总览栏显示了当前数据库中所有包的数量、被弃用的包的数量、恶意包的数量以及维护者的数量。

数据详情

通过图表的形式直观展示npm生态中不同方面的风险程度。

六、参考文献

What are Weak Links in the npm Supply Chain?

技术科普:浅谈开源软件供应链风险

奇安信发布《2022中国软件供应链安全分析报告》

《2021年中国互联网安全报告》:软件供应链安全风险加剧

npm API官方文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值