主题: ASLRn't 仍然存在 x86 内核中,尽管 CVE-2024-26621 修补程序已应用 发件人: Steffen Nurpmeso 收件人: oss-security@openssf.lists.openwall.com - 内容: - 漏洞的关键信息: - 大多数可执行文件只能由 root 写入,但普通用户可用。 - MAP_DENYWRITE 的目的似乎是确保可执行文件不会在正在运行的程序下更改。 - 如果普通用户映射了文件时 MAP_DENYWRITE 有效,则可能导致 DoS 问题。 - 找到了几个文件,对这些文件仅有 root 写权限,但作者认为它可以使用 MAP_DENYWRITE 影响这些文件(如果作者尝试修改自身)。 - 需要重新阅读 Linux 中的强制锁定和锁定文件, lslocks(1) 或 /proc/locks 显示由 PID 1130 持有的锁定,而 "i" 由于战表权限无法看到。 - 作者指出,最终 /proc 和 /sys 中可能没有任何内容。 - 能力变得更加细粒度。 - 作者在替换 Linux 上正在运行的可执行文件的更新变体时总是觉得困难重重,在 BSDs 上简单重命名(不知道为什么一个在执行路径时能用而另一个不能)。 - 简单解决方案: - 在临时名称下写新可执行文件。 - 使用 link(2) 为现有可执行文件创建新名称。 - 使用 rename(2) 以原子方式替换现有可执行文件。 - 在任何所需检查后使用 unlink(2) 删除旧版本。 - 如果不想保留旧可执行文件的备份,可以省略 link(2) 和 unlink(2)。使用此方法将更改可执行文件的 inode 编号(这意味着它确实是不同的文件),旧版本可以在磁盘上保留,即使它的最后一个名称已被删除,只要它仍然在使用中。