访问控制基础 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 仍然可以共享
    • 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)
    • 通过物理断开网络连接确保系统安全(如敏感数据存储)
    • 缺点: 管理复杂, 成本高, 灵活性低