8

git 协议可能被中间人攻击吗?

 1 year ago
source link: https://www.v2ex.com/t/882664
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

V2EX  ›  git

git 协议可能被中间人攻击吗?

  x199ian · 8 小时 12 分钟前 via Android · 1666 次点击

今天看到个项目用到 git clone git://git.busybox.net/busybox ,不太了解 git 协议,这有被中间人攻击的风险吗?

25 条回复    2022-09-25 03:54:27 +08:00
kkeep

kkeep      7 小时 59 分钟前 via Android

有意思,你这个是基于 ssh 的?
yankebupt

yankebupt      7 小时 59 分钟前

The downside of the Git protocol is the lack of authentication.
应该是有的
x199ian

x199ian      7 小时 41 分钟前

@kkeep 应该不是
@yankebupt 我也觉得有,但是好像资料比较少,我没找到更具体的描述
@charlie21 但是协议本身是不是不保证安全呢
dem0ns

dem0ns      7 小时 37 分钟前

git:// 就是基于 ssh 协议的,中间人攻击 /防御和 ssh 是一致的,首次连接的时候会进行指纹确认,指纹信息会保存到 known_hosts 文件,下次连接的时候系统会对比指纹的,只有指纹一致才会进行数据传输
Trim21

Trim21      7 小时 36 分钟前

会,git 协议是没加密的 tcp ,作为本地和服务器 git 命令之间的 pipe 进行远程代码同步。所以是有可能被中间人的。
moen

moen      7 小时 31 分钟前

https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols 就知道,git 协议是为「公开的大型项目」而设计的,它不需要 HTTP 协议的各种限制,也不需要 SSH 的加密和认证机制,git 协议和 SSH 都是建立在同一层的。简单说 git 协议就是明文传输的,可以被中间人攻击
x199ian

x199ian      7 小时 30 分钟前 via Android

@dem0ns #5 但是我之前试过,应该没有确认指纹
@Trim21 #6 明白了,谢谢
dem0ns

dem0ns      7 小时 28 分钟前

@x199ian 你可以检查下你的 known_hosts 文件是否有 git.busybox.net
crab

crab      7 小时 28 分钟前

@x199ian 免密码首次登陆有公钥指纹提示的啊。
x199ian

x199ian      7 小时 27 分钟前 via Android

@moen #7 谢谢,那么似乎目前应该避免使 git 协议
Trim21

Trim21      7 小时 25 分钟前 via Android   ❤️ 1

@dem0ns 你把 git@和 git://弄混了吧,前者是 ssh 协议只不过省略了
dem0ns

dem0ns      7 小时 22 分钟前

@Trim21 确实 =.= 一直以为是做了个 alias
x199ian

x199ian      7 小时 15 分钟前 via Android

@dem0ns #9
@crab #10 确实没有确认指纹,known_hosts 里也没有
dem0ns

dem0ns      7 小时 12 分钟前   ❤️ 1

抓了个包,发现就是明文的,我在前面说的错了,误以为是 ssh


部分流量
003dgit-upload-pack /busybox.host=<请不要在每一个回复中都包括外链,这看起来像是在 spamming>.version=2.000eversion 2
0015agent=git/2.31.1
0013ls-refs=unborn
0012fetch=shallow
0012server-option
0017object-format=sha1
00000014command=ls-refs
0024agent=git/2.37.0.(Apple.Git-136)0016object-format=sha100010009peel
000csymrefs
000bunborn
0014ref-prefix HEAD
001bref-prefix refs/heads/
001aref-prefix refs/tags/
00000052c8c1fcdba163f264a503380bc63485aacd09214c HEAD symref-target:refs/heads/master
0044267b925bb46d53472d28e88edc7d837c5918612b refs/heads/0_60_stable
00442f8880d2333c0ff9229a2b386eb652952010d7e6 refs/heads/1_00_stable
004a1fb759908f0cc38fd0b763fb7908eef515f4af33 refs/heads/1_00_stable_10817
0044e9f8b2f830bf0273d0d51f56d24da84b955e0df5 refs/heads/1_10_stable
00444a81fe4173bf5029058253cf0be194c23a5ad369 refs/heads/1_11_stable
00449b8f810d38a720bca94af864e2960de91aae3a29 refs/heads/1_12_stable
00448f0c89e05a7b52f8c5ae7b451de6fd50732aeb45 refs/heads/1_13_stable
0044757e46252c004c9170dfc748a78f42abd416cf50 refs/heads/1_14_stable
004475919134e1fbd0c4dc60cab8fb5a7746c241123b refs/heads/1_15_stable
00446b5656e9bbc8c202dc323aecf54592185f9e129a refs/heads/1_16_stable
0044db4171d842e9bdc1c2903a9d5cfea053aceb35a2 refs/heads/1_17_stable
00442e79bc6c77560d4460847a459857039774de004a refs/heads/1_18_stable
0044f99811908419608e3ab81393d0177cc456101e4b refs/heads/1_19_stable
0043bdea7807b1f045a230a2efab8d85fa21a9aa3e48 refs/heads/1_1_stable
0044b1cec5003b73080a8aa7ea277621bf1c71c3e8d6 refs/heads/1_20_stable
0044e73f3c1d3d83699b723251f7e6a981021ce75475 refs/heads/1_21_stable
004428dd64a0e1a9cffcde7799f2849b66c0e16bb9cc refs/heads/1_22_stable
0044be947c4d97c0dacb703a6f24dd813ff6dd3a33b6 refs/heads/1_23_stable
dem0ns

dem0ns      7 小时 10 分钟前

002d.Compressing objects: 100% (28643/28643)
0034.Compressing objects: 100% (28643/28643), done.
[email protected]{h.x.'..b.
....qj.........Hl....1.O!"y.-.l..&.lFD..A28.y....m.:[email protected]".>Q...<.8;.....kEG......;|V....^.......m.Y*.T.9..
.s.Y...O.h.~.Zz..!..........J/.v.M.... DI..Jm.]...4N'.........L.l..-x..R.j.0...+tl .%...J.....k.Kc[D..$g..:IO=%..0.Yx.a&.D*.......]7..F..U......!AK.j.....RH).N.9.....U). ..e.....q$0...........n...A...7.........Q~z.|!.EU....`.,....."!........F38Hs.-.....)R<%[email protected]\.F...f{
.z.P..."...aQ^q.%...!..r8+..nX5?D......h.....[.2F...Y..q....0.3..nI..=......K.v......b...........7...h..x....n. .D{....Z...j.m.2J.)....d...I...6.Rmy..3.."0\.R;g..};z.........j..J"J....
.+C.w..F...T^89..G.v...h..m}...7..&x.j...x.&..Z.J..G.. :.uZ....3..%.+.x..Wx.X).........}.r."-.bs..%ZI#.? ..Z{....uE7CH...b..c.T...SNqg.5L........]._.......}S..x...Mj.0...:....lG.TJ..7(t.B.I#[T..-7..k.BW.....x..0e".. .dm......;a.kC.
o.ip..v..p.T..l.rBH-P........;......Q..2. ^(]gx.8Sz....p.CZ..}

PACK 开始是压缩信息
x199ian

x199ian      6 小时 53 分钟前 via Android

@dem0ns #15 谢谢 看来应该避免使用 git 协议
agagega

agagega      6 小时 51 分钟前

Git 存数据的方式有点像区块链,一环套一环,所以即使被中间人攻击了,发现 hash 对不上很容易就发现了
keith1126

keith1126      6 小时 45 分钟前

@agagega #18

区块链之所以防篡改并不是因为用了哈希,而是用了计算复杂度高的哈希。Git 用的哈希毫无密码学强度可言,完全可以在篡改后从第一个 commit 开始全部重算一遍哈希。
timpaik

timpaik      6 小时 1 分钟前 via Android

@keith1126 所以 git 的 commit 一般会用 gpg 签名啊
lambdaq

lambdaq      5 小时 56 分钟前

@x199ian git 的「协议」只是一种格式,可以通过 ssh 传输,也可以通过 https 传输,当你用 http 协议传输肯定能被容易中间人的。
keith1126

keith1126      5 小时 54 分钟前

@timpaik #20

并没有吧,反正据我观察,用 GPG 签名的人并不多。

而且另一方面,由于 GPG 签名不是强制的+普及度不高,当你遇到一个没有签名的 commit ,大概率只会觉得是对方没签名,而不是被篡改了。
Tobias747

Tobias747      5 小时 1 分钟前

GitHub 官方八月份已经支持显示 SSH commit verification, 建议开启[SSH commit verification now supported | GitHub Changelog]( https://github.blog/changelog/2022-08-23-ssh-commit-verification-now-supported/)
Greenm

Greenm      4 小时 54 分钟前

git 不关注应用层的安全性,所以原则上是有风险的。

主流的 SaaS 服务商部署的 git 都是走的 SSH 或者 https ,这两个协议能够较好的防止中间人,如 github, gitlab 等。 但你如果自建 git 服务器,那就无法避免被中间人。
zk8802

zk8802      29 分钟前 via iPhone

Git 被中间人攻击之后可能被用来直接攻击客户端,而不仅仅是修改 commit 历史。参见 CVE-2018-11233 和 CVE-2018-11235 。

不应该在不安全的网络环境下使用 Git (尤其很多人习惯性忽略 SSH host key 不匹配的提示)。

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK