Y²のDiary
碎碎念、摸鱼与拾贝日志。
2025-7-3
- CVE-2025-32462: sudo –host 提权。博客原文
sudo
的 man 里有介绍--host
参数的用途,基本上就是在使用-l
查询当前用户的权限时,可以加一个--host xxx.com
来查询在另一个 host 上的权限。没错,sudo
是支持一个配置文件给多个主机的用户配置权限的。(我终于理解了为什么我机器上的sudo
配置里,第二个字段都是神秘的ALL,原来是“在所有主机上”的意思)- 然而,
sudo
的--help
中却说--host
可以和执行命令一起用,然后大家神奇地发现,这个居然能允许用户以“指定host”上自己的权限,在“当前host”上执行命令。这个漏洞完全让sudo
的这套跨host功能变得完全没用了,因为用户现在可以以他拥有的最高权限在任意服务器上执行指令。
- CVE-2025-32463:sudo 在不加检查地 chroot 后,触发了 Name Service Switch(NSS)操作,导致攻击者可以构造恶意的 NSS 配置文件(/etc/nsswitch.conf)达成提权。博客原文
chroot
实在是太危险了,尤其不能允许用户随意chroot到他具有任意写权限的目录下!利用时和配置文件劫持打组合拳有奇效。- 怀疑这些人每天就关注
sudo
这种有 SUID 的 Binary 更新了什么新功能参数,然后研究它们有什么问题。
- 学习了 OpenC910 中的 AXI 总线接口,ARM IHI0022 手册写得非常通俗易懂。
- 大致了解了下 Android 上的 BootLoader 锁和 ARMv8 安全启动的关系:
- BootLoader 锁(OEM锁)是厂商为了防止用户刷入非自家的镜像,在 recovery 模式程序中实现的一个“功能”。
- ARMv8 安全启动(Secure Boot)是一套标准,力求实现标准化的、基于密码学的信任链。ARM 官方提供了 Trusted Firmware-A (TF-A) 作为 ARMv8-A Secure Boot 的参考实现。(在 ARMv7 中不存在标准化的 Secure Boot,通常由厂商自行实现启动信任链,但也可以使用 TF-A 作为启动软件。)(在 ARMv8-M 中使用的是 Trusted Firmware-M)
- 搬到了张江,开启暑假打工生涯。住宿是老师在贝壳上租的,叫了保洁来帮忙清理,把屋子里的各种发霉的地方都清掉了。不得不说,虽然在房东和租客之间加上中介服务这一层抽象层会带来额外开销(服务费),但确实能给租客省下不少事。
2025-7-4
- 大致了解了下 Android 如何在 Linux Kernel 的基础上限制越狱:
- Android 4.3 版本开始,限制了
setgid
/setuid
系统调用,并启用了 SELinux。SELinux 是内核中的Linux Security Module (LSM) 框架的组成部分。LSM 在各种系统调用的函数入口处添加了安全钩子(security hooks),检查 SELinux 的策略(安全规则)来判断当前用户态程序是否具有合法权限。 - SELinux 的粒度比 Linux 原有的权限系统(用户、用户组)细很多,可以对同一个用户的不同进程做不同的权限设置,甚至可以对 root 用户(uid=0,gid=0)的进程做限制。这是通过在策略中将进程划分为不同的 type 完成的,比如在安卓上定义了以下这些 Type:app.te - platform/external/sepolicy - Git at Google
- 在 Android 中,即使已经拿到了 root 用户权限,由于安卓自带 SELinux 策略的设置,也是残血的 root 用户。安卓源码中自带的 SELinux 策略会在编译成内核可加载的二进制格式后,集成到内核的 boot image 中或嵌入到 ramdisk 中,受到安全启动链的保护。Android 启动时,init 进程将查找并加载策略文件。
- 因此,Magisk 这种 ROOT 工具会在启动时对 SELinux 的策略进行 patch,见awsome-magisk/重读Magisk内部实现细节.md at main · tcc0lin/awsome-magisk · GitHub
- Android 4.3 版本开始,限制了
- 调整了博客的字体、字体大小和行距。字体设置参考了博客字体设置方案 | Daniel’s Blog;字体大小设置为 15 px,行距设置为 2,更适合中文排版了(方块字比较密,行距应该设置得比英文大一些)。
- 看了发现外星生命痕迹,确定度99.7%!——等等,这是怎么算出来的?,一篇关于统计学和概率的科普文。即使一项研究的确定度非常高,达到了5σ的黄金标准(置信度约为99.99994%),也有可能是受到干扰因素影响导致的结果,可能会被推翻。
- 把 OpenC910 的仿真跑通了,并且安装了 vcs、verdi、scl 工具,学会了用 verdi 看 vcs 仿真的波形。
- Vcs、Verdi 安装和使用参考 ubuntu 18.04 安装 vcs、verdi 2018、记一次VCS报错:/usr/bin/ld: undefined reference to
pthread_yield
。但不得不说前面那个教程写得特么有点太烂了。验证服务器会跑在 27000 端口,需要确保这个端口可以访问。这篇教程写了如何配置防火墙规则开放 27000 端口,然后说“firewall 没有安装的需要用 apt 进行安装”——我都没有安装防火墙当然不用开放 27000 端口啊!
- Vcs、Verdi 安装和使用参考 ubuntu 18.04 安装 vcs、verdi 2018、记一次VCS报错:/usr/bin/ld: undefined reference to
2025-7-5
- 在外面演出,上午随便找了家店洗吹,下午彩排和演出,晚上聚餐。
2025-7-6
- CVE-2025-33053:一个恶意的
.url
文件(Windows 上的 InternetShortcut)可以通过指定WorkingDirectory
字段为一个远程的文件服务器路径,使应用加载恶意的 dll 甚至 exe。- 这个漏洞和 CVE-2025-32463 非常相似,我觉得都可以称为“路径劫持”类漏洞,不过它们的根因不太一样。
- 在 Linux 上许多系统框架都会根据绝对路径找配置文件,把这些路径直接硬编码到代码中,并且在
man
手册中进行说明;攻击者可以chroot
就意味着他可以控制根目录位置,进而控制这些配置文件。 - 而在 Windows 上,这里利用的是系统查找可执行文件/动态链接库的顺序,先在当前工作目录搜索,后在标准路径那里搜索。这样以来,攻击者可以控制工作目录就意味着他可以劫持 DLL、甚至劫持可执行文件(也就是这个 CVE 的利用手法,攻击者的
.url
文件中直接指向的iediagcmd.exe
会使用系统 API 调用route.exe print
,触发远程服务器上的恶意route.exe
调用)。 - 想找到这种漏洞,可能一种思路是从程序参数、配置项入手,看看有没有和
chroot
或工作目录相关的选项;另一种思路是直接查找chroot
和工作目录更改 API 的调用,然后硬审。这种逻辑洞似乎想想就不太能 fuzz 出来。