![]() |
1
Sayuri 2024-03-30 14:01:00 +08:00
我感觉这里并没有引入恶意的什么代码。
只是因为这个人做的事情让大家失去信任了。 |
![]() |
3
lisxour 2024-03-30 14:23:49 +08:00 ![]() |
5
daveh 2024-03-30 19:18:46 +08:00 ![]() @Sayuri GenericT #1 #4
safe_fprintf 改 fprintf 确实很可疑,真没这个必要改,对代码功能来讲真没啥鸟用。 但是正是这种改动,让人看不到攻击者的真实意图。 理论上讲这个改动其实是有问题的,这要从这次 xz/sshd 漏洞利用的原理上讲,主要这个 IFUNC 机制,感兴趣上网找找理解一下。 简单讲,safe_fprintf 并不是什么标准库或三方库的函数,可能是自己写的,编译优化、符号隐藏、剥离调试信息、strip 等等,都会让程序运行时,根本看不到什么 safe_fprintf ,IFUNC 也无法替换它;而 fprintf 不同,它是标准库函数,能被 IFUNC 替换掉。 攻击者可能不想让用户看到一些莫名其妙或不相干的错误输出,他就可以通过 IFUNC 机制截获 fprintf ,修改输出内容,从而达到隐藏自己的目的。 |
![]() |
6
seers 2024-03-30 19:21:07 +08:00 via iPhone
换成 std 库的符号就可以 plt hook 了
|
![]() |
7
est 2024-03-30 21:05:00 +08:00
所以 IFUNC 这玩意是干嘛的。?
|
![]() |
8
gsfish 2024-03-30 22:03:07 +08:00 ![]() 苦心经营多年,在最后关头给人发现了,泪目
|
11
GenericT 2024-03-31 12:05:14 +08:00 via Android
@daveh 你在说啥呢,这是个自己写的函数,你去看下实现啊,内部还是调 fprintf 的,你说的这些完全不成立
|
12
daveh 2024-03-31 12:52:36 +08:00 via iPhone
@GenericT #11 这哪一样啊?虽然都是 fprintf ,但是传参可能不一样,写 hook 最好要原始输入参数,变化后 hook 不好写。
|
14
luozic 364 天前
gcc 编译器下面才可用,使用的是 gcc 的一个 feature ?
|
15
jackleeforce3615 364 天前
凡是此人的 PR/MR ,都得拉出来讨论或者干脆回滚,太危险了
|