LSM 启动过程

要使能一个 LSM 有两个步骤: 1、该 LSM 的编译选项被打开 各 LSM 代码中都会使用 DEFINE_LSM() 在内核中创建该模块。这个宏的定义如下: 1// include/linux/lsm_hooks.h 2 3#define DEFINE_LSM(lsm) \ 4 static struct lsm_info __lsm_##lsm \ 5 __used __section(".lsm_info.init") \ 6 __aligned(sizeof(unsigned long)) 其实就是创建了一个 struct lsm_info 的实例, …

LSM 的 Security Blob 机制

Linux 内核主线相关补丁: 1ecd5f82e05dd LSM: Infrastructure management of the ipc security blob 2019bcca4626a Smack: Abstract use of ipc security blobs 37c6538280ae9 SELinux: Abstract use of ipc security blobs 4f4ad8f2c4076 LSM: Infrastructure management of the task security 5afb1cbe37440 LSM: Infrastructure management of the …

CVE-2021-43057 分析

0x00 基本信息 信息总览:NVD 链接 漏洞披露:bugs.chromium.org 漏洞评估:CVSS 7.8 上游补丁:链接 0x01 详细描述 在 selinux_ptrace_traceme 函数(即 SELinux 对 PTRACE_TRACEME 的 LSM 接口的实现)中发现一个 Use-After-Free 问题,该问题是由于错误地尝试获取其他内核任务的*主体凭证(Subjective Credential)*而导致的。具体情况如下: 原先在 SELinux 中,有个函数 task_sid() 可以获取一个内核任务的*客体凭证(Objective Credential)*所对应的 SID,但却被用在了一些应该使用 …

关于 SELinux 的宽泛介绍

尚未完工。但鉴于总是要查 SELinux 的笔记,所以决定先行放出。 访问控制 Linux 操作系统上有两种访问控制:自主访问控制(Discretionary Access Control,DAC)和强制访问控制(Mandatory Access Control,MAC)。讨论两者的异同之前,需要明确几个概念: 用户(user):人(碳基高等灵长类生物) 主体(subject):OS 中以某用户身份执行的进程 客体(object):OS 中的各种资源(如文件、sockets、设备等) DAC 的策略是由资源的所有者来决定他人对该资源的访问权限。标准 Linux 安全是一种 DAC:文件的所有者可以对文件的读、写、执行权限进行设定;其 …

基于 BusyBox 快速制作内核验证环境

本文介绍的方法,旨在利用基于 BusyBox 制作的简易文件系统来快速启动内核并进入一个 shell 环境,以此来验证内核的功能和稳定性。其优点在于制作简单,资源占用小,验证环境的启动时间短(仅需启动内核,省去了各种用户态应用及框架的启动过程);缺点是可拓展性较差,难以支撑一些需要用到用户态工具的复杂内核功能的验证。 本文主要以 ARM64 为例讲解整个过程。实际操作中,应结合实际使用的体系结构与工具链对步骤细节进行调整。介绍的验证环境有基于 initrd 和基于 SD 卡两种,可以根据实际情况选择。 BusyBox 编译 1# BusyBox 源代码下载,解压 2# https://busybox.net/downloads/ 3 …