来自 Github 的漏洞提醒

来自 Github 的漏洞提醒

最后修改于 2022-3-18 ⋅ 共 922 字 ⋅ 2分钟 / #Tutorial / #Github, #Git, #漏洞, #安全

背景 #

今天在 push 文件的时候收到了来自 Github 的漏洞提醒,原因是我使用的组件中存在漏洞。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
> git push
Enter passphrase for key '/home/root/.ssh/id_rsa': 
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 2 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 1.28 KiB | 109.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
remote: 
remote: GitHub found 1 vulnerability on user/repo's default branch (1 low). To find out more, visit:
remote:      https://github.com/user/repo/security/dependabot/path/requirements.txt/aiohttp/open
remote: 
To github.user/repo.git
   bae83c8..8019db0  master -> master

处理 #

在上传完文件后, git 命令返回了一些以前没有的信息,提醒我在我使用的 Python 依赖中,当前版本的 aiohttp 包含了漏洞,并给出了详细信息的网址。 页面
代码当前依赖的 aiohttp 组件版本为 3.5.4,这个版本下的组件存在一个通过构造 URL 将其他用户导向任意链接的漏洞,尽管这个漏洞被标记为低严重性,但是 Github 的依赖机器人(Dependabot)还是建议我将依赖升级到修复 bug 后的 3.7.4。

1
pip3 install aiohttp==3.7.4

同时,这个机器人还在昨天给我发了一个 pull request,将依赖要求文件requirements.txt中的版本也进行了替换。
pull request
这里有三种 merge 选项1(M 代表 Master,F 代表 Feature):

  1. merge
    分支中的所有 commit 历史以及提交者信息都会被保留加入到主干的历史中,会有额外的 commit。

    graph LR; A-->B-->M1-->M2-->Z[普通 Merge] B-->F1-->F2-->Z

  2. Squash merge
    分支中的 commit 历史合并为单个 commit 添加到主干中,原提交者信息替换为操作者,会有额外的 commit。

    graph LR; A-->B-->M1-->M2-->Z[Squash and Merge]

  3. Rebase merge
    分支中的所有 commit 历史都会被保留加入到主干的历史中,但不会添加额外的 commit。

    graph LR; A-->B-->M1-->M2-->F1-->F2-->Z[Rebase and Merge]

三种选项都可以,区别只是体现在了commit历史中,所以我选择了Squash merge。完成合并后,在本地库中再git pull一下拉回来更改(也可以git fetchgit merge组合,前者获取远程库更改,后者将更改合并到本地库中,git pull比较粗暴适合本地已完成所有更新提交后使用)。

1
2
3
4
git fetch origin master#只取回远程更新的信息,但并没有改变本地的代码,工作空间和缓存区都没改变,就相当于专门开辟了一片空间来保存远程仓库更新的信息。远程更新的信息指针为FETCH_HEAD
git diff FETCH_HEAD#展示本地当前状态和远程仓库最新提交的区别
git show FETCH_HEAD#展示远程仓库最新提交和远程仓库上次提交的区别
git merge FETCH_HEAD#将本地和远程最新提交merge

参考 #