7. 访问权限控制攻击 Access Control
访问控制基础 Access Control Basics
核心概念
-
安全模型(Security Model)
- 系统抽象, 用于描述和制定安全策略
- 三要素: 主体(Subject), 客体(Object), 操作(Operation)
- 主体 Subject: users, Android Apps, Web Origins
- 客体: resources, including 文件, 目录, 数据库表, 设备(如UNIX文件, 进程)
- 操作: 读, 写, 执行, 调用等
-
安全策略(Security Policy)
-
定义访问控制矩阵, 明确主体对客体的权限
主体/客体 文件1 文件2 Alice 读 读/写 Bob 读 无权限
-
-
安全机制(Security Mechanism)
- 实现安全策略的技术(如操作系统内核, 加密)
2. 核心原则
-
最小权限原则(Principle of Least Privilege)
- 用户/程序**仅**拥有完成任务的必要权限
- 优势: 限制意外或恶意操作的影响范围
-
完全中介原则(Principle of Complete Mediation)
- 所有对客体的访问必须经过权限检查
- 避免 caching check result 导致的漏洞(如TOCTOU, time-of-check–time-of-use vulnerability 攻击)
UNIX安全模型
1. 用户与组管理
-
用户与组
- 用户唯一标识: 用户名与用户ID(UID)
- 组管理: 用户可属于多个组, 支持基于角色的访问控制(RBAC)
- 超级用户(root, UID=0)拥有最高权限
-
有效用户ID(EUID)
- 决定进程的操作权限(继承父进程或通过
setuid变更) - 示例:
login进程以root启动, 认证后切换为普通用户权限
- 决定进程的操作权限(继承父进程或通过
-
权限提升
sudo临时切换为root权限setuid位: 程序运行时以文件所有者权限执行(如passwd命令内部嵌入setuid=0可以让执行者输入密码之后以 root 权限来执行这个程序, 常见的程序还有 login/sshd, 这两个指令执行成功之后还会修改 euid, setuid 等位信息到bash程序等)
2. 文件权限管理
-
权限位表示
- 格式:
rwx rwx rwx(owner, group, other) - 示例:
-rw-r--r--表示所有者可读写, 其他用户只读 chmod 777表示所有用户都设置权限为 可读可写可执行
- 格式:
-
权限决策逻辑
- 优先匹配所有者权限, 其次组权限, 最后其他用户权限
- root用户可绕过权限限制
三, 隔离技术 Confinement Techniques
1. 隔离目标与分类
- 目标
- 限制进程行为(Confinement), 防止恶意程序影响系统的其他文件
- 实现层级
- 系统调用拦截System Call (如SELinux, AppArmor)
- 容器化Container (如Docker, Kubernetes)
- 虚拟机(如VMware, KVM)
- 物理隔离(如 Air-Gap)
- Confinement: reference monitor
- mediates requests from apps 作为所有应用访问的媒介
- must always be invoked 每次必定调用
- Tamperproof: 防止篡改, 即 monitor 无法被关闭, 不调用就同步退出
- Small: 监控代码尽量小, 以减少攻击面
2. 具体技术
-
chroot隔离
- 通过
chroot将进程限制在指定目录(“jail”)chroot指令会将根目录转变为指定目录, 从而让进程不能访问指定目录外面的文件系统
- 局限性: 共享设备, PID, 网络命名空间, 易被绕过
- 通过
-
系统调用拦截(System Call Interposition)
- 监控并过滤进程的系统调用(如
ptrace机制) - 策略示例: 禁止访问
/etc/passwd, 允许访问/tmp/* - 攻击方式:
- 创建 device 使得其能访问 raw disk
- 设备的 namespace 是共享的
- 发送信号到 non-chrooted process
- PID namespace 是共享的
- bind to priviledged ports
- network namespace is shared
- reboot system
- 一些 system call 仍然可以共享
- 创建 device 使得其能访问 raw disk
- System call interposition: 监控应用的 systemcall 调用并且拦截一些没有授权的
调用- 纯 kernel 拦截: SELinux;
- 纯 user space 拦截: Program Shepherding;
- Hybrid: Systrace;
- 监控并过滤进程的系统调用(如
-
容器技术
- 用户空间隔离: 独立文件系统, 资源配额, 网络栈
- 优势: 轻量级, 共享宿主机内核
- 限制: 需与宿主机同内核
-
虚拟机(VM)
- 通过虚拟化层(VMM)隔离多个操作系统实例
- 安全性假设: Attacker 可以攻击 Guest OS, 但无法 escape from the infected VM
3. 隐蔽通道(Covert Channels)
- 定义
- 通过非预期方式在隔离组件间传递信息(如CPU负载, 缓存状态)
- 示例
- VM间通过在指定时间点暴力增加 cpu 负载来改变CPU计算时间, 从而传递二进制位(1=高负载, 0=低负载)
四, 物理隔离与空气间隙
- 物理隔离(Air Gap)
- 通过物理断开网络连接确保系统安全(如敏感数据存储)
- 缺点: 管理复杂, 成本高, 灵活性低
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
