结合 BusyBox 与完整发行版的内核验证环境

本站之前的两篇文章: 《基于 BusyBox 快速制作内核验证环境》 《基于完整发行版搭建内核验证环境》 分别总结了基于 QEMU 搭建内核验证环境的两种思路。经过这几年下来在日常工作中的实践和体会,总结下两者各自的优劣: 前者构建成本低,操作简单;用户态极简,启动时省去了大量用户态(如 systemd)的初始化工作,启动速度快。 后者有完整的 C 语言运行时环境,可执行动态链接的用户态程序;有完整的包管理,软件资源丰富,可拓展性强。 我个人的偏好是,优先考虑使用前者,毕竟简单高效,有利于反复试错和快速迭代;如果验证场景对 C 语言运行时或者其他用户态基础设施有依赖,再考虑使用后者。 那么,有没有一种方法,能够将两者的优点结合起来, …

内核符号重定位:从 CVE-2024-26816 说开去

前言 & 背景 CVE-2024-26816 1:/sys/kernel/notes 的内容是当前运行的 vmlinux 镜像的 .notes 节,里面存有内核函数 hypercall_page 的地址。此信息可用于绕过 KASLR 保护。 探究内容:x86 内核启动过程中,KASLR 对内核整体镜像做偏移时,是如何修改 .notes 节中的 hypercall_page 地址的? 分析过程 初始链接阶段 对于 OLK-6.6 的 x86 内核,若编译时开启了 CONFIG_XEN 选项,则 arch/x86/xen/xen-head.S 会将汇编函数 hypercall_page 加入到 vmlinux …

Vim: Search for What You Select

Way 1: yank the selected text with y go to search mode / paste the last yanked text with Ctrl+R 0 Ctrl-R 0 is to get register 0’s value. Use :reg to see what’s in your registers. Way 2: yank the selected text with y go to search mode with command-line window q/ paste p (and you can continue editing) Source: …

关于 SELinux 的各种理论知识

在用户态部署 SELinux SELinux 架构图(源自 SELinux Notebook ): 正如此文 所述: There can only be one Security Server, which resides in the kernel. However, the AVCs and OMs can reside both in the kernel and in userspace. Security Server 即二进制策略储存处,内核 LSM 中又称 policydb,有且仅有一份,处于内核中; Access Vector Cache(AVC)缓存 Security Server 对近期一些访问行为的决定,既可在 …

Linux 上进程 Capabilities 可能变化的场景

0、前言 本文不介绍各个 Cap 集的含义,只列举它们各自发生变化的场景和方式。 只讨论 Linux 2.6.33 之后的场景,即:1、Bounding Set 为 per-thread 属性;2、支持文件 Cap。 1、线程自行调整 相较于 DAC 和 MAC,Capabilities 的一个特点是可在运行时动态增减。程序的代码中可带有调整 Cap 的相关系统调用和逻辑,在执行时根据需要主动调整线程的 Cap。例如,在执行某些需要特权的操作前将(Permitted Set 范围内)必要的 Cap 添加至 Effective Set 中,在执行完毕后再将这些 Cap 从 Effective Set 中去除。这种会主动调整 Cap 的 …