安全漏洞
-
漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而可以使恶意者能够在未授权的情况下访问或破坏系统。
-
漏洞可能来自应用软件或操作系统设计时的缺陷或编码时产生的错误,也可能来自业务在交互处理过程中的设计缺陷或逻辑流程上的不合理之处。
-
这些缺陷、错误或不合理之处可能被有意或无意地利用,从而对一个组织的资产或运行造成不利影响,如信息系统被攻击者控制,重要资料被窃取,用户数据被篡改,系统被作为其他主机系统的跳板。
-
从目前发现的漏洞来看,应用软件中的漏洞远远多于操作系统中的漏洞,特别是WEB应用系统中的漏洞更是占信息系统漏洞中的绝大多数
-
测试遵循CVE®披露标准,从静态代码安全性扫描角度,检测软件版本的安全漏洞和漏洞风险程度。CVE®披露的安全漏洞根据CVSS(Common Vulnerability Scoring System)计算出的漏洞的得分划分成 5 类危险程度:超高危(9.0 - 10.0)、高危(7.0 - 8.9)、中危(4.0 - 6.9)、低危(0.1 - 3.9)、无风险(0)。
-
参考
- CVE®官网 : https://cve.mitre.org/
- CVSS评分框架 : https://www.first.org/cvss/
SNYK简介
- 官网地址:https://app.snyk.io/org
在现在的开发中,不管是用什么语言,什么技术栈,我们都会用到很多的开源框架和包。从安全角度讲,这也变相的等于说我们信任陌生的开发者,信任其安全技术水平和相信他没有恶意。在关键业务系统中,仅凭信任肯定不靠谱的。Snky就是用来检查你的依赖包安全漏洞的工具,确保你放心引用各种开源依赖包到你的工程中。
官方介绍:Snyk是一个开发者优先的,自动发现你依赖包的安全漏洞的工具。可以用在多种语言,包括JS,.Net,Java,PHP等等。已经监控了超过100万+的包,12万+的开发者正在使用,保护了10万+的项目
SNYK安装
-
安装snyk, 建议每次执行前都重复安装,以升级snyk
> sudo npm install -g snyk
-
授权,使用github
> snyk auth
自动跳转到⼀一个授权⽹网⻚页,点击授权
如果是首次需要登录github账号
授权完成
-
运行 snyk检测
> snyk test
-
查看常用命令
> snyk --help
SNYK扫描环境安装
- 操作系统:mac os
- 项目语言:java
- 依赖工具:maven
- 使用环境: node.js
mac 安装 npm
> # 使用 brew 安装 npm
> # 检查 brew工具是否已安装
> brew -v
> # 若已安装则更新brewhom,若没安装则先安装
> brew update
> # 执行命令安装node, 安装比较耗时,请耐心等待
> brew install node
> # 检查是否安装成功
> npm -v
# debian
> sudo apt install nodejs npm -y
> root@705131ad8916:/# node -v
v12.22.12
> root@705131ad8916:/# npm -v
7.5.2
参考博客:
a. https://blog.csdn.net/pangjiaming99/article/details/84557813
b. https://blog.csdn.net/weixin_42176112/article/details/116705278
c. https://www.liuzhanwu.cn/2843.html
mac 安装 mvn
-
下载maven,下载地址:http://maven.apache.org/download.cgi
-
配置环境变量
> # 下载压缩包 > wget https://dlcdn.apache.org/maven/maven-3/3.8.3/binaries/apache-maven-3.8.3-bin.tar.gz > # 解压缩下载的安装包 > tar -xzvf apache-maven-3.8.3-bin.tar.gz > # 配置环境变量 > vim ~/.bash_profile > # 在文件中添加如下内容, # maven add PATH export M2_HOME=/Users/user.name/Downloads/apache-maven-3.8.3 export PATH=$PATH:$M2_HOME/bin > # 保存退出后,执行如下命令立即生效配置 > source ~/.bash_profile
在配置中添加如下内容:
-
验证配置是否生效
> # 在任一目录执行如下命令 > mvn -v
-
配置国内镜像
> # 在家目录~新增如下文件 > mkdir ${user.home}/.m2/setting.xml
应用示例
针对后端代码
- 最好先编译一下,以免执行报错
mvn clean install -DskipTests
# 1.在任一目录新建文件夹
mkdir snyktestiam
# 2.进入该文件夹并拉取iam的代码
cd snyktestiam
git clone git@github.com:xxxxxxx/microservice-iam.git
# 3. 进入拉取的iam中,查看当前分支,查看远程分支,并切换到要扫描的分支
> cd iam # 进入iam
> git status # 查看当前分支
> git branch -r # 查看远程分支
> git checkout 本地分支名 远程分支 # 拉取远程分支到本地,并命名为 {本地分支名}
> git status
> 4. 执行如下命令,在项目顶级目录扫描全部项目并把扫描报告文件重定位到上级目录
> snyk test --all-projects >> ../snyk_test_datetime.txt # 扫描结束可以在重定向的文件中查看结果
>
针对前端代码
-
前端一般依赖node.js 环境
-
建议先编译前端代码
-
否则会自动ignore掉
-
针对包含前端代码的项目的扫描示例
> # 解决办法 > # 1. 手工安装前端的依赖包 > # cd 到package.json 所在的目录 > # 执行 npm install > # 执行 rm -rf package-lock.json > # 2. 若执行 npm install 报错,则按照如下方式处理,否则跳过执行步骤3 > # sudo su 切换到管理员权限 > # 参考 https://blog.csdn.net/weixin_42176112/article/details/122200295 把node.js 和 npm 的版本保持一致 > # 3. 以debug模式在项目顶层目录执行snyk 扫描 查看是否报错 > snyk test -d --all-projects >> ./snyk_test_projectName_datatime.txt
参考文章:
a. https://www.cnblogs.com/chihuobao/p/12574035.html
b. https://www.jianshu.com/p/a8704f402ad2