已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目 录 一 绪论 1 1 1 课题来源 1 1 2 国内外研究现状 1 1 2 1 入侵检测 1 1 2 2 沙盒技术 2 1 2 3 竞态条件 2 1 3 论文的结构 2 二 入侵检测 4 2 1 入侵检测的基本概念 4 2 2 入侵检测系统 4 2 2 1 入侵检测系统模型 4 2 2 2 通用入侵检测框架 5 2 3 入侵检测技术 5 2 3 1 异常入侵检测技术 5 2 3 2 滥用入侵检测技术 6 2 3 3 两种入侵检测技术的优缺点 6 三 角色沙盒入侵检测系统 7 3 1 角色沙盒入侵检测系统构建思想 7 3 2 角色沙盒入侵检测系统体系结构 7 3 2 1 总体结构 7 3 2 2 角色授予模块 8 3 2 3 执行模块 8 3 2 4 系统调用处理模块 8 3 2 5 安全策略库 9 3 2 6 访问控制信息通用缓存 9 四 竞态条件 10 4 1 参数竞争 10 4 2 符号链接竞争 13 4 3 共享存储空间竞争 14 五 解除竞态条件 16 5 1 引起竞态条件的原因 16 5 2 信号量机制 16 5 3 利用信号量机制解除竞态条件 17 5 3 1 解除参数竞争 17 5 3 2 解除符号链接竞争 19 5 3 3 保护共享存储空间 21 六 总结及进一步的工作 22 6 1 解除竞态条件一般方法 22 6 2 进一步的工作 22 谢 辞 23 参考文献 24 一 绪论 1 1 课题来源 计算机和互联网技术正在改变着人类社会的面貌 与之伴随而来的是信息和网络安 全的问题 黑客入侵 网上经济犯罪 垃圾电子邮件等都预示着全球信息安全的形势不 容乐观 虽然防火墙是抵御入侵的重要手段 但它采取的是一种静态防御的策略 要求 事先设置规则 对于实时攻击或异常行为不能实时反应 无法自动调整策略设置以阻断 正在进行的攻击 入侵检测技术采用的是一种较为主动的技术 能有效地发现入侵行为 和合法用户滥用特权的行为 它是 P2DR 动态安全模型 1 的核心部分 已成为网络安 全领域研究的热点 沙盒 模型是一种模拟操作系统的虚拟环境 能为不可信进程或测试进程提供所需的 运行环境 2 在沙盒中 对底层的系统调用设置了拦截点 通过截获系统调用来判断是否 发生了入侵 因此其入侵检测具有高的准确率 3 我们把基于截获系统调用的入侵检测引入到 沙盒 模型中 并将用户分为若干角色 角色与权限相关联 这样就提出了角色沙盒入侵检测系统 该系统由角色授予模块 执 行模块 系统调用处理模块 安全策略库和访问控制信息通用缓存五部分组成 在角色 沙盒入侵检测系统中 管理员通过分配和撤销授予用户的角色来实现用户权限的授予和 撤销 大大的减轻了管理访问控制的开销及管理员的负担 4 5 同时提出了角色沙盒和虚拟 技术沙盒 并且访问控制信息不只局限于某个程序 而是针对所有客体 规定了不同角 色所具有的访问权限 确保了足够有力的入侵检测能力 尽管角色沙盒具有上述的许多优点 但角色沙盒入侵检测系统的构建却是一个非常 复杂的过程 其中可能出现各种各样的竞态条件 如果粗心的实施者忽略了这些竞态条 件 就会使我们的角色沙盒入侵检测系统产生许多漏洞 恶意程序很容易就能绕过检测 侵入系统 从而使我们之前所有构建安全的入侵检测系统的努力付诸东流 6 所以说 对 角色沙盒入侵检测系统中竞态条件的解除具有重大的意义 1 2 国内外研究现状 1 2 1 入侵检测 对入侵检测概念的第一次详细阐述 来源于 James P Anderson 在 1980 年 4 月为美国 空军做了一份题为 Computer Security Threat Monitoring and Surveillance 的技术报告中 从 20 世纪 90 年代到现在 入侵检测系统的研发呈现出百家争鸣的繁荣局面 并在智能 化和分布式两个方向取得了长足的进展 目前 SRI CSL 普渡大学 加州大学戴维斯分 校 洛斯阿拉莫斯国家实验室 哥伦比亚大学 新墨西哥大学等机构在这些方面的研究 代表了当前的最高水平 7 近年来 国内对于入侵检测的研究也已取得了非凡的成就 国 内一些计算机病毒防治与研究的企业 都成功的自主研发出了自己的商业化入侵检测产 品 如瑞星公司的瑞星入侵检测系统 RIDS 100 等 1 2 2 沙盒技术 沙盒的概念最早是由 Wahbe 等人在软件故障隔离中提出的 8 用于实现在单一地址 空间中的故障隔离 使得可信模块和不可信模块可以在相同的地址空间中安全运行 Goldberg 等人首次用沙盒来描述应用程序运行的受限环境 创建了 Janus 6 Systrace 9 是 在 Janus 的基础上进行扩展 提出了有效限制多个应用程序 支持多种策略的新技术 目 前沙盒技术已经在很多软件安全设计方面有所应用 例如华盛顿大学的 Alexander Moshchuk 所领导的一个研究小组 已利用 虚拟沙盒 技术开发出了非常有效的检测工 具来过滤 Web 恶意程序 10 现在国内将沙盒技术应用于入侵的研究也有了很大的发展 上海交通大学的几位教授提出了基于安全盒的入侵保护系统 5 将安全盒与应用程序绑定 安全盒限定应用程序所能访问的资源 以此来防止入侵 河北大学的刘振鹏 王凤先等 教授所研究的一种仿生物免疫系统设计的计算机系统安全模型 GECISM general computer immune system model 该模型由不同的代理构成 各代理模拟相应免疫细胞 的功能 在此基础上提出了沙盒主机代理的构建方案 11 1 2 3 竞态条件 竞态条件 race condition 又名竞争危害 race hazard 旨在描述一个系统或者进程的 输出展现无法预测的 对事件间相对时间的排列顺序的致命相依性 对竞态条件的研究 一直是操作系统和程序开发研究的热点之一 如操作系统中的进程管理 实质上就是对 操作系统中可能出现的竞态条件的预防与解除 对于入侵检测系统中存在的竞态条件 斯坦福大学计算机系的 Tal Garfinkel 曾做过比较细致的研究 并提出了一些建设性的一般 处理原则 6 美国加利福尼亚大学的 Eugene Tsyrklevich 和 Bennet Yee 曾对文件系统中的 竞态条件做过详细的研究 并提出了许多有效的解决方案 12 但国内对这方面的研究 主要是从入侵检测中存在的问题 如高误报率 高漏报率等 出发的 几乎很少有专门 对入侵检测系统中竞态条件的研究 13 1 3 论文的结构 本文在分析入侵检测系统的基础上 提出了将底层系统调用 基于角色的访问控制 同沙盒技术相结合 构建角色沙盒入侵检测系统的思想 详细阐述了角色沙盒入侵检测 系统的构建思想及其体系结构 重点分析了角色沙盒入侵检测系统中可能出现的竞态条 件及其出现原因 并针对不同的竞态条件设计出了相应的解除方法 第 1 章主要是对本课题的背景 国内外研究现状等做了简要介绍 第 2 章主要介绍入侵检测的概念和两种常用的入侵检测技术 以及其优缺点的比较 第 3 章在前面对入侵检测技术介绍的基础上 阐述了角色沙盒入侵检测系统的总体 设计思想及其体系结构 第 4 章介绍了竞态条件的基本内容 并重点分析了角色沙盒入侵检测系统中可能出 现的竞态条件 第 5 章总结角色沙盒入侵检测系统中竞态条件出现竞态条件的原因 并设计相应的 解决方案 第 6 章总结解除角色沙盒入侵检测系统中可能出现的竞态条件的一般方法 并对下 一步工作提出设想 二 入侵检测 2 1 入侵检测的基本概念 入侵检测是保证网络信息安全的一种重要方法 近年来已经成为信息安全领域的研 究热点 对于 入侵检测 的概念存在很多提法 美国国家安全通信委员会 NSTAC 下属的入侵检测小组 IDSG 在 1997 年给出的关于 入侵检测 的定义为 入侵检测是 对企图入侵 正在进行的入侵或者已经发生的入侵进行识别的过程 其中 入侵 是指 对信息系统的非授权访问以及 或者 未经许可在信息系统中进行操作 1 实质上 入侵 检测就是识别和响应针对信息系统的非法攻击 包括检测外部非法入侵者的恶意攻击或 试探 以及内部合法用户的超越使用权限的非法行为 2 2 入侵检测系统 所有能够执行入侵检测任务和功能的系统 都可以称为入侵检测系统 其中包括软 件系统和软硬件结合的系统 一般来说 入侵检测系统的功能应该包括 1 监视分析用 户活动 2 系统构造变化和弱点的审计 3 识别反映已知进攻的活动模式并报警 4 异常行为模式的统计分析 评估重要系统和数据文件的完整性 5 操作系统的审计 跟踪管理 14 入侵检测系统是防火墙之后的第二道安全闸门 提供了对内部攻击 外部攻 击和误操作的实时保护 2 2 1 入侵检测系统模型 图 2 1 给出了一个入侵检测系统模型 1 控制动作 警报信息 审计数据等 知识库 检测器 数据收集器 控制器配置信息 目标系统 图 2 1 入侵检测系统模型 图 2 1 所示的入侵检测系统模型 主要由以下几大部分组成 1 数据收集器 负责 收集数据 2 检测器 负责分析和检测任务 并发出警报信号 3 知识库 提供必要 数据信息支持 如检测规则集合等 4 控制器 根据警报信号人工或自动做出反应动作 2 2 2 通用入侵检测框架 为了使分布于不同主机上的入侵检测系统能够相互通讯 交换检测数据和分析结果 以检测跨时间段的大范围攻击 Common Intrusion Detection Framework CIDF 组织提出 了一个入侵检测系统的通用框架 15 如图 2 2 所示 事件产生器 事件分析器事件数据库 响应单元 事件来源 图 2 2 通用入侵检测框架 通用入侵检测框架将 IDS 需要分析的数据统称为事件 它既可以是网络中的数据包 也 可以是从系统日志或其他途径得到的信息 以上通用入侵检测框架中的 4 个组件代表的 都是逻辑实体 组件之间采用统一入侵检测对象 General Intrusion Detection Object GIDO 格 式进行数据交换 事件产生器 Event generators 事件产生器的任务是从整个计算环境中收集事件 并将 这些事件转换成 GIDO 格式传送给其他组件 事件分析器 Event analyzers 事件分析器负责分析从其他组件收到的 GIDO 并将产 生的分析结果传送给其他组件 响应单元 Response units 响应单元负责处理接收到的 GIDO 并根据分析结果做出反 应 如切断网络连接 改变文件权限 简单报警等应急响应 事件数据库 Event databases 事件数据库用来存储 GIDO 以备系统需要的时候查询 和使用 2 3 入侵检测技术 根据数据分析手段不同 入侵检测技术主要分为两大类 异常入侵检测 Anomaly Detection 和滥用入侵检测 Misuse Detection 1 2 3 1 异常入侵检测技术 异常入侵检测的假设条件是对攻击行为的检测可以通过观察当前活动与系统历史正 常活动情况之间的差异来实现 异常入侵检测通常都会建立一个关于系统正常活动的状 态模型并不断进行更新 然后将用户当前的活动情况与这个正常模型进行对比 如果发 现了超过设定阈值的差异程度 则指示发现了非法攻击行为 常用的方法有 基于统计 模型的异常入侵检测 基于神经网络的异常入侵检测 基于免疫系统的异常入侵检测 基于文件检查异常入侵检测 基于协议认证的异常入侵检测等 2 3 2 滥用入侵检测技术 滥用入侵检测的技术基础是分析各种类型的攻击手段 并找出可能的 攻击特征 集合 滥用入侵检测利用这些特征集合或者对应的规则集合 对当前的数据来源进行各 种处理后 再进行特征匹配或者规则匹配工作 如果发现满足条件的匹配 则指示发生 了一次攻击行为 滥用入侵检测常用的方法有 基于表达式匹配的误用入侵检测 基于 状态转移分析的误用入侵检测 基于专家系统的误用入侵检测 基于击键监控的误用入 侵检测 基于批模式分析的误用入侵检测等 2 3 3 两种入侵检测技术的优缺点 异常入侵检测主要根据非正常行为和计算机资源的非正常使用检测出入侵行为 这 就要求入侵活动是异常活动的子集 建立一个正常行为模型后 使用异常入侵检测技术 能够准确地检测出一些未知的攻击 但当出现具有入侵性而表现正常的行为和不具有入 侵性而表现异常的行为时 就不可避免地会造成误判或漏检 也就是说 异常入侵检测 并不能完全反映出系统复杂的动态 理论上的正常行为模型难以建立 滥用入侵检测是根据已知系统或应用程序的漏洞建立入侵特征模型 然后将用户行 为与之进行匹配检查 相同就是入侵 比较而言 滥用入侵检测比异常入侵检测具备更 好的确定解释能力 即明确指示当前发生的攻击手段类型 因而在诸多商业系统中得到 广泛应用 滥用入侵检测对已知的攻击有较高的检测准确度 但对新型的攻击或已知攻 击的变体却表现出无能为力 滥用入侵检测技术的扩展性和适应性都比较差 三 角色沙盒入侵检测系统 3 1 角色沙盒入侵检测系统构建思想 近几年来 大量对以操作系统为基础的入侵检测和用户权限控制的研究 给我们提 供了很多通过检测系统调用实现入侵检测和用户权限控制的方法 系统调用接口是一个 可用于监控系统调用的强制性的接口 几乎所有的应用程序都要通过它才能访问网络资源 和文件系统 我们可以在此接口之上用截获系统调用的方法来监测和控制对系统的敏感 资源的访问 这样可以在很大程度上保障信息系统的安全 沙盒模型是一种模拟操作系统的虚拟环境 能为不可信进程或测试进程提供所需的 运行环境 由于在沙盒中 对底层的每个与安全相关的系统调用都设置了拦截点 通过 基于角色的系统调用截获来判断是否发生了入侵 因此其入侵检测具有高的准确率 我们把基于截获系统调用的入侵检测引入到沙盒模型中 并将沙盒中的用户分为若 干角色 角色与权限相关联 用户被授予若干角色从而获得相应的权限 这样就构成了 角色沙盒入侵检测系统 在角色沙盒入侵检测系统中 管理员通过分配和撤销授予用户 的角色来实现用户权限的授予和撤销 大大的减轻了管理访问控制的开销及管理员的负 担 4 5 同时提出了角色沙盒和虚拟技术沙盒 并且访问控制信息不只局限于某个程序 而是针对所有客体 规定了不同角色所具有的访问权限 确保了足够有力的入侵检测能 力 而且 角色沙盒入侵检测系统是通过截获系统调用来实现入侵检测的 这就可以大限 度的降低误报警和漏报警率 实现高效准确的入侵检测 3 2 角色沙盒入侵检测系统体系结构 3 2 1 总体结构 在 Linux 系统下 基于角色访问控制的沙盒入侵检测系统的总体结构如图 3 1 所示 由角色授予模块 执行模块 系统调用处理模块 安全策略库和访问控制信息通用缓存 五部分组成 入侵检测的过程如下 1 用户登录后 通过角色认证进行角色的授予 2 用户执行应用程序进入执行模块 截获系统调用 3 进入内核的系统调用处理模块 通过向访问控制信息通用缓存发送决策请求来 判断是否具有访问客体的权限 4 如果访问控制信息通用缓存没有该客体的权限信息 则向用户级的安全策略库 发送决策请求 5 安全策略库或访问控制信息通用缓存将处理结果发回系统调用处理模块 如果 是 allow 则执行该系统调用 否则进入虚拟技术沙盒 使其访问该客体的一个除去敏感 信息的副本 6 最后将系统调用结果返回执行模块 继续执行程序 用户 角色授予模块 执行模块 系统调用 入口 执行 系统调用 虚拟技术沙 盒 登录 角色认证 执行应用程序 调用系统调用 allow deny 系统调用结果 决策请求 处理结果 allow deny 决策请求 处理结果 allow deny 用户级 内核级 访问控制信 息通用缓存 安全策略库 系统调用 处理模块 图 3 1 基于角色访问控制的沙盒入侵检测系统的结构 3 2 2 角色授予模块 我们把角色沙盒入侵检测系统中具有主动行为能力的对象称为主体 包括用户和进 程 系统中能够保存信息 只能被动地接受主体的访问的实体称为客体 客体主要包括 以下几类 文件 File 目录 Dir 设备 Device 进程间通信 IPC 系统控制数 据 SCD 和进程 Process 等 角色授予模块通过对主体授予角色 来授予角色所拥 有的权限 其中一个主体可以对应一个或多个角色 一个角色也可对应一个或多个权限 3 2 3 执行模块 执行模块负责执行用户应用程序 在执行模块中使用 Linux 可装载内核模块 LKM 来截获系统调用 当用户的应用程序在执行模块内执行时 执行模块截获用户应用程序 发出的系统调用 将其送入系统调用处理模块 等待系统调用处理模块对其做出相应处 理 在这个过程中 用户的该系统调用进程将一直被休眠 直到系统调用处理模块允许 其执行或对其做出其他处理 例如执行模块修改安全相关调用函数 来处理服务请求 3 2 4 系统调用处理模块 系统调用处理模块负责对在执行模块中截获的系统调用做出相应的处理 当执行模 块将截获的系统调用及其参数传入系统调用处理模块后 系统调用处理模块将系统调用 信息和用户的角色权限等相关信息与安全策略库中的角色及其权限策略相对照 如果用 户进程有执行此系统调用的权限 则告知执行模块唤醒系统调用进程并允许其执行该调 用 反之 则拒绝该系统调用的执行 并做出相关处理 3 2 5 安全策略库 安全策略库为基于角色访问控制的沙盒入侵检测系统提供安全策略 每个角色对应 一个角色沙盒 安全策略库实现了访问控制信息的存储 主要包括角色访问控制信息 主体访问控制信息和客体访问控制信息 在安全策略库中 角色就是一些访问权限的集合 主体 用户或进程 拥有了一个 或多个角色 也就拥有了这些角色相应的权限 所有的系统角色定义保存在角色数组中 将系统管理特权分为三部分 系统管理特权 安全管理特权和审计管理特权 将特权用 户的特权进行了分化 有关角色的定义及拥有的权限信息和特权信息属于角色访问控制 信息 在主体访问控制信息中 包括用户和进程的角色集合 使用链表结构来实现 在 客体访问控制信息中 将客体分为文件 目录 设备 进程 进程间通信 系统控制数 据和其他类 这些类又有各自的子类 3 2 6 访问控制信息通用缓存 访问控制信息通用缓存主要用于存储已读取的客体访问权限信息 根据最近访问优 先原则 将已读取的客体访问权限信息保留在访问控制信息通用缓存中 这样下次再访 问到该客体时就可以直接从内存中读取 不用再到安全策略库中去查找了 这样做可以 帮助我们在很大程度上提高入侵检测系统的工作效率 因此 系统调用处理模块首先向 访问控制信息通用缓存发出决策请求 如果访问控制信息通用缓存有相应客体的访问权 限信息 则直接返回处理结果 否则 访问控制信息通用缓存向用户级的安全策略发出 决策请求 接收处理结果 更新访问控制信息通用缓存 并将处理结果返回系统调用处 理模块 四 竞态条件 竞态条件表现为在多进程或多线程共享数据的情况下 由于进程或者线程的执行顺 序程序的不同 而导致程序最终运行结果的不同 16 下面是一个简单的导致竞态条件的 例子 int count 0 Thread A Thread B count count 这个例子说明了一般的最明显的出现竞态条件的情形 但在实际中 我所遇到的很 多竞态条件要比这种情况隐蔽和复杂许多 要正确构建出一个系统 就不得不对其中所 有可能出现的竞态条件加以考虑 在构建以截获系统调用为基础的角色沙盒入侵检测系统时 往往会遇到许多竞态条 件 这是因为我们所构建的系统中权限检查和系统访问授权都不是原子操作 这就会使 检测系统中进程的运行展现出无法预测的 对事件间相对时间的排列顺序的致命相依性 12 这些有时也被称为 time of check time of use 漏洞 17 下面是一个产生竞态条件基本的轮 廓 1 根据当前的系统中各个进程运行的状态 入侵检测系统根据安全策略 授权允许 A 操作执行 而入侵检测系统做出这一决策所根据的当前系统状态是很容易发生变化的 2 在 A 操作获得授权而并未执行之前 该系统状态发生变化 导致 A 变成非法操作 即 A 的意义在此背景下发生了变化 3 A 操作被操作系统执行 而在正常的情况下 根据当前的系统状态 A 操作是违反 安全策略的 因而入侵检测系统是不允许执行该操作的 这样的竞态条件是角色沙盒入侵检测系统中的一个重要的问题 会严重影响入侵检 测系统的性能 提高漏检率 并且常常会被黑客利用来欺骗入侵检测系统 以此绕过入 侵检测系统来达到入侵的目的 通常 入侵检测系统会根据易变的共享系统状态来决定 系统调用操作的执行 如果状态发生变化将会从根本上改变对系统调用的影响 在以下 几节 我们以参数竞争 符号链接竞争和共享存储空间竞争为例进行说明 4 1 参数竞争 如果一个系统调用的参数已经通过了系统调用处理模块的审核 但在执行系统调用 之前 这个参数被另一个进程所修改 就会发生参数竞争 如果将系统调用参数存放在 内存中多个进程都可以访问到的区域内 就可能发生参数竞争 如下所示的进程运行状 态 是一个角色沙盒入侵检测系统中可能发生参数竞争的例子 假设角色沙盒安全策略库中的安全策略是允许进程 A 以只读方式访问 tmp foo 不允 许对其他文件进行访问 1 进程 A 调用 open path O RDONLY 其中 path 是 tmp foo 2 角色沙盒的执行模块截获进程 A 的系统调用 并将其传递给系统调用处理模块 等待系统调用处理模块对其进行审核 3 系统调用处理模块从 A 的存储区域读取路径 对照安全策略及进程 A 的角色权限 确定 tmp foo 可以被打开 于是允许执行模块继续执行该系统调用 4 进程 B 将路径修改为指向 etc shadow 5 角色沙盒的执行模块根据审核结果 执行打开文件的系统调用 打开 etc shadow 文件 从而违反了系统的安全策略 上述参数竞争的过程可以用以下程序表示出 define MAX PATH 20 宏定义最长路径名的字符个数 define O RDONLY 1 宏定义 O RDONLY 的值为 1 char pname MAX PATH 声明路径名数组 pname 为全局变量 void process A void 进程 A pname tem foo SdBox exe open pname O RDONLY 角色沙盒入侵检测系统截获 open 系统调用 通过访问控制信息通用缓存或全策 略库判断是否允许以只读方式打开 tem foo 如果允许则执行 否则不执行 void process B void 进程 B pname etc shadow 修改系统调用参数 即路径名 pname 的值 int SdBox exe open char path int oflag 角色沙盒入侵检测系统截获 open 系统调用 通过访问控制信息通用缓存或安全策略库 判断是否允许执行 open 系统调用 如果允许则执行 否则不执行 int i i SdBox check open path oflag 通过访问控制信息通用缓存或安全策略库判断是 否允许执行 open 系统调用 if i 1 如果返回值为 1 则表示允许执行该系统调用 open path oflag printf File s is opened path exit 1 else 返回值不为 1 则不允许该系统调用执行 printf Cannot open file n exit 0 int Sdbox check open char ptr int ofl 模拟通过访问控制信息通用缓存或安全策略库判断是否允许执行 open 系统调用 sleep 2 进程休眠 2 秒 if strcmp ptr pname 0 比较文件名 由此确定是否执行调用 exit 1 参数符合安全策略 返回 1 允许继续执行 else exit 0 参数不符合安全策略 返回 0 不允许继续执行 include include main 主函数 使 A 进程和 B 进程并发执行 pid t pid if pid fork 0 process A void exit 0 else if pid 0 process B void exit 0 else printf fork error n exit 0 在上面的程序中 SdBox exe open 函数表示角色沙盒入侵检测系统截获 open 系统 调用 通过访问控制信息通用缓存或安全策略库判断是否允许执行 open 系统调用 而我 们用 Sdbox check open 模拟通过访问控制信息通用缓存或安全策略库判断是否允许执 行 open 系统调用 用 sleep 2 替代了读取安全策略的过程 这是因为本文的研究重点只是 角色沙盒入侵检测系统中的竞态条件 而用这些函数就足以说明我们所要表示的问题 运行该程序的输出结果依赖于进程 A 与进程 B 的运行顺序 并不是一成不变的 由此我 们可以清晰的观察到系统中出现的参数竞争和其所导致的安全问题 一般来说 参数竞争只会发生在系统调用参数非立即数的情况下 立即数系统调用 参数一旦被送入操作系统的寄存器 立即会被系统调用截获程序复制进入内核 用户空 间的进程只能通过 ptrace 和其他追踪接口篡改在内核中的立即数参数 非立即数参数 例如路径名和 Socket 地址等 均不能立即从用户存储区复制到内核 这就在一个系统调用已经提出并且其调用参数已经通过系统调用处理模块的审核后 但 参数尚未复制到内核前 为黑客实施攻击造成了一个可乘之机 像这样的参数竞争 一般会在共享全局变量的情况下发生 例如上面程序中的路径 名 pname 实质上是进程 A 和 B 所共享的全局变量 例如在 Linux 中支持共享存储器的 机制包括 SYSV 共享存储设备 mmap 和通过克隆系统调用创建多线程之间的共享内存 6 像 ptrace 这类样调试接口 会允许一个进程修改其他进程的内存 也必须加以考虑 4 2 符号链接竞争 符号链接竞争 17 是在 Linux 系统中的一个常见问题 如果某个进程中所用到符号链 接所指向的文件已经通过了角色沙盒入侵检测系统的检测授权 而在该进程对此符号链 接指向的文件访问发生之间 如果符号链接被修改而指向另一个不同文件 就会发生符 号链接竞争 下面给出一个角色沙盒入侵检测系统中发生符号链接竞争的例子 假设角色沙盒入侵检测系统中的安全策略库中的安全策略是 进程 A 有对 tmp foo 和 tmp dar 进行读写操作的权限 而且有对 tmp baz 进行读操作的权限 假设最初的 tmp foo 和 tmp dar 符号链接指向同一个文件 下面给出一个会导致竞态条件的进程推进顺序 1 进程 A 调用 open tmp foo O RDWR 2 角色沙盒入侵检测系统中的执行模块截获系统调用 并将其传递给系统调用处理 模块 3 系统调用处理模块根据策略库中的安全策略检查进程 A 对 tmp foo 和 tmp dar 的权 限 发现这一系统调用是符合安全策略的 于是通知执行模块执行该系统调用 4 进程 B 删除 tmp foo 并创建一个新的符号链接 tmp foo 使其指向 tmp baz 假设 进程 B 拥有此权限 5 沙盒中的执行模块执行进程 A 中 open tmp foo O RDWR 操作 从而进程 A 对 tmp baz 的只读权限提升为了读写权限 在上述的例子中 进程 A 明显违反了沙盒模型策略库中的安全策略 它现在同时拥 有了对 tmp baz 的读写访问权限 而角色沙盒入侵检测系统却不能检测出进程 A 的越权行 为 其实在这个例子中 进程 B 不一定必须在系统调用处理模块完成对进程 A 的检查授 权后立即修改 tmp foo 所指向的链接 而只需在沙盒中的执行模块执行该系统调用之前进 行修改即可 也就是说 如果中间还有其他进程的话 进程推进的顺序并不需要严格按 照例子中的顺序进行 在基于截获系统调用的角色沙盒入侵检测系统中 符号链接竞争是最常见的问题之 一 可以看出 符号链接竞争与参数竞争出现时的情况比较相似 都是在系统调用处理 模块给予授权而执行模块执行之前做出某些修改而达到入侵的目的 所以符号链接竞争 的程序表示与 4 2 节中的程序相类似 在此不再列举 但是它们所表示的系统中问题和具 体的解决方法不尽相同 因此我们不能把这两种情况归为一类 4 3 共享存储空间竞争 如果有两个进程共享存储空间 系统调用处理模块在进行依赖于描述符类型的权限 检查时 可能会出现一些资源竞争 例如 假设角色沙盒入侵检测系统的安全策略是只允许将 TCP 插口绑定到 80 端口 通过下面顺序来执行一个多进程应用程序的进程 A 和进程 B 的系统调用 可以绕过入侵 检测系统而违反这项安全策略 1 进程 A 调用系统接口 创建一个 TCP 插口 fd2 2 进程 A 调用系统接口 创建一个 UDP 插口 fd3 3 进程 A 发出一个绑定到 fd2 的 80 端口的系统调用 4 执行模块截获这个系统调用 并将其传递给系统调用处理模块 5 系统调用处理模块对照安全策略 发现 fd2 是一个 TCP 接口 于是允许该系统调用 继续 4 进程 B 关闭 fd2 5 进程程 B 调用 dup2 2 3 6 进程 A 的绑定调用被执行模块继续进行 绑定了一个 UDP 插口到 80 端口 违反了 安全策略 在上面的例子中 由于进程 A 和进程 B 共享存储空间 使得进程 B 可以随意修改进 程 A 的数据 这就很容易导致竞态条件的出现 给系统带来了严重的安全隐患 这种类 型的竞争 连同参数竞争 使处理多进程的应用程序出现了很多问题 五 解除竞态条件 5 1 引起竞态条件的原因 通过第四部分对角色沙盒入侵检测系统中可能出现的各种竞态条件的分析 我们可 以发现引起角色沙盒中出现竞态条件的原因主要有两点 1 并发进程或线程的执行顺序的 不可控制性 从而导致程序运行结果的不可预知性 2 进程或线程共享过多的资源 并且 可以不受限制的对像系统调用参数 符号链接等资源进行修改 由于角色沙盒入侵检测系统中对用户的权限检查和系统访问授权都不是原子操作 这就使得利用竞态条件对角色沙盒入侵检测系统的攻击都呈现出一个比较相似的特点 即对系统中某些数据的篡改都发生在系统调用处理模块检查并允许系统调用后 而在执 行模块执行该系统调用之前的这段时间内 因此 我们可以把与系统调用相关的参数 符号链接等数据作为临界资源处理 即让不同进程或线程对其进行互斥的访问 这样就 可以规范系统中的进程执行顺序 解除系统中的多数竞态条件 5 2 信号量机制 荷兰学者 Dijkstra1965 年提出的信号量机制是一种卓有成效的进程同步工具 18 Dijkstra 最初把信号量定义为一个整型量 除初始化外 仅能通过 2 个标准的原子操作 wait s 和 signa s 来访问 这两个操作很长时间以来一直被分别称为 P V 操作 wait s 和 signa s 操作可描述为 wait s while s 0 no op s signal s s wait s 和 signa s 是 2 个原子操作 因此 它们在执行时是不可中断的 亦即 当一 个进程在修改某个信号量时 没有其他进程可同时对该信号量进行修改 为了使多个进程能互斥的访问某个临界资源 只需为该资源设置一互斥信号量 mutex 并设其初始值为 1 然后将各进程的临界区 CS 置于 wait mutex 和 signal mutex 操 作之间即可 这样 每个欲访问该临界资源的进程在进入临界区之前 都要先对 mutex 执行 wait 操作 若该资源此刻未被访问 本次 wait 操作成功 进程便可以进入自己的临 界区 这时若再有其它进程欲进入自己的临界区 由于对 mutex 执行 wait 操作必然失败 因而阻塞 从而保证了该进程资源被互斥地访问 当访问临界资源的进程退出临界区后 又应对 mutex 执行 signal 操作 释放该临界资源 利用信号量实现进程互斥的进程可描述 如下 semaphore mutex 1 void process A void process B while 1 while 1 wait mutex wait mutex critical section critical section signal mutex signal mutex main cobegin process A process B 5 3 利用信号量机制解除竞态条件 利用信号量机制 可以实现进程对临界资源的互斥访问 从而避免并发的进程同时 对临界资源进行操作而导致的问题 由于在角色沙盒入侵检测系统中所出现的竞态条件 基本上都呈现出一个相同的特点 即在系统调用处理模块对参数 符号链接等系统调用 相关数据进行审核授权后 而执行模块尚未执行该系统调用之前 另一个进程对这些数 据进行了修改 由此 我们可以将这些重要系统调用相关数据列为临界资源 在从审核 之前到执行系统调用这段时间内禁止其他进程对其进行修改 从而达到解除竞态条件的 目的 5 3 1 解除参数竞争 我们在 4 1 节已经分析了出现参数竞争的原因 即在一个系统调用的参数通过了系统 调用处理模块的审核后 但在执行模块用它来执行系统调用之前 这个参数被另一个进 程所修改 发生参数竞争的系统调用参数一般都存放在内存中多个进程都可以访问到的 区域内 所以我们可以通过将系统调用参数设置为临界资源 利用信号量机制解除角色 沙盒中的参数竞争 这里我们继续利用 4 1 节中的例子来说明这种解除参数竞争的方法 假设角色沙盒安全策略库中的安全策略是允许进程 A 以只读方式访问 tmp foo 不允 许对其他文件进行访问 1 设置信号量 限制对系统调用参数的访问 进程 A 调用 open path O RDONLY 其中 path 是 tmp foo 2 角色沙盒入侵检测系统的执行模块截获进程 A 的系统调用 并将其传递给系统调 用处理模块 等待系统调用处理模块对其进行审核 3 系统调用处理模块从 A 的存储区域读取路径 对照安全策略及进程 A 的角色权限 确定 tmp foo 可以被打开 于是允许执行模块继续执行该系统调用 4 进程 B 通过执行模块做出将 path 修改为指向 etc shadow 的系统调用 5 执行模块发现进程 B 要访问的数据正在被进程 A 使用 执行 wait 操作 6 角色沙盒的执行模块根据审核结果 执行进程 A 的打开文件的系统调用 打开 tmp foo 文件 然后执行 signal 操作 释放临界资源 7 进程 B 被执行 将 path 修改为 etc shadow 其实上面只是描述了进程执行的一种情形 对于这个例子我们可以描述如下 semaphore mutex 1 path tem foo void process A void process B while 1 while 1 wait mutex wait mutex SdBox exe open path O RDONLY path etc shadow signal mutex signal mutex main cobegin process A process B 进程执行的顺序可能有以下两种 如图 5 1 5 2 所示 process Aprocess B wait mutex SdBox exe openwait mutex signal mutex path etc shadow signal mutex 图 5 1 进程执行顺序 一 process Aprocess B wait mutex wait mutex path etc shadow signal mutex SdBox exe open signal mutex 图 5 2 进程执行顺序 二 在图 5 1 所示的进程执行顺序 一 中 我们可以明显的观察到 由于引进了信号量 机制 进程 A 先顺利的执行完了利用执行模块打开 tmp foo 文件的系统调用 然后进程 B 执行了修改参数 path 的操作 这并不会违反我们的安全策略 在图 5 2 所示的进程执行 顺序 二 中 虽然进程 B 先执行了修改系统调用参数 path 的操作 接下来 A 进程利用 执行模块执行 open 的系统调用 但是由于参数修改发生在系统调用处理模块处理系统调 用之前 所以当 A 进程通过执行模块执行系统调用时 其系统调用请求并不会被系统调 用处理模块授权 这是因为此时系统调用处理模块可以检测出其调用参数不符合安全策 略 所以也不会有违反安全策略的系统调用被执行 由此我们可以看出 由于使用了信 号量机制 我们已成功解除了角色沙盒入侵检测系统中的参数竞争 5 3 2 解除符号链接竞争 符号链接文档也称为 symlink 是一种简单的文档 当被访问时 它会将请求重定向 到另一个文档 常见解决符号链接竞争的方法有 尝试首先通过规范路径名 然后参照 规范的路径名的安全策略审核系统调用的权限 或者在某些情况下 通过改变可疑的系 统调用的变量强制应用程序使用规范的名称来进入文件系统 这也并不能解决符号链接 竞争问题 因为它并没有找到这个问题的根源 并发 Tal Garfinkel 对于这一问题做了 细致的分析 6 并对如何解除符号链接竞争做出了许多尝试 如 1 拒绝对我们不允许 自由访问的文件创建链接 2 拒绝创建和重新命名链接 3 拒绝通过链接进行访问等 但这些方法都还存在或多或少的缺陷 其实我们可以利用信号量机制来解除符号链接竞争 因为进程修改符号链接文档的 操作也是要通过我们的执行模块才能进行 所以我们只需要在执行模块中将与系统调用 相关的符号链接文档作为一种临界资源 阻止不同进程对其同时进行访问即可 当一个进程通过执行模块对符号链接文档进行打开 修改等操作时 执行模块对该 符号链接文档建立了相应的信号量 执行 wait 操作 相应地 执行模块在每次执行完与 此符号链接文档相关的操作后 都必须执行一次 signal 操作 下面给出利用这种方法解除 4 2 节中所举的发生符号链接竞争程序的描述 semaphore mutex 1 SdBox exe A SdBox exe B 沙盒执行模块中的 A 进程 沙盒执行模块中的 B 进程 while 1 while 1 wait mutex wait mutex open tmp foo O RDWR delete tmp foo 打开符号链接 tmp foo 删除符号链接 tmp foo signal mutex creat tmp foo tmp baz 创建新符号链接 tmp foo signal mutex main cobegin SdBox exe A SdBox exe B 进程执行的顺序可能有以下两种 如图 5 3 5 4 所示 SdBox exe ASdBox exe B wait mutex open tmp foo O RDWR wait mutex signal mutex delete tmp foo creat tmp foo tmp baz signal mutex 图 5 3 进程执行顺序 一 SdBox exe ASdBox exe B wait mutex wait mutex delete tmp foo creat tmp foo tmp baz signal mutex open tmp foo O RDWR signal mutex 图 5 4 进程执行顺序 二 由以上描述可以看出 与图 5 1 5 2 相类似 这种解决符号链接竞争的方法 利用信 号量机制来将对符号链接的操作变成了逻辑上的原子操作 从根本上解决了产生符号链 接问题的根源 并发 可以有效的解除角色沙盒入侵检测系统中的符号链接竞争 5 3 3 保护共享存储空间 由于进程共享存储空间所导致的竞态条件 与参数竞争的情况极为相似 以为产生 参数竞争的原因之一 就是多个进程共享同一个系统调用参数 实质上它们所共享的参 数 也可以看作是一块共享存储空间 不同的是参数竞争中不同进程共享的只是很有限 的一个存储区域 而像 4 3 节中所列举的导致出现竞态条件的这种共享存储空间的情形 是几个进程完全共享分配给进程的共享存储空间 Tal Garfinkel 提出了可以使用专门的内核代码或强制进程使用 mmap 和 mprotect 函数 管理内存的特定区域的思想来解决这一问题 在系统调用相关数据被被入侵检测系统检 查之前 入侵检测系统可以先将这些数据复制到内存的特定区域 较早版本的入侵检测 系统采用的就是这种方法 在不可信进程被 捕获 时 调用 mmap 函数创建一个只读 存储区域 然后一直对不可信应用程序地址空间中的这个临时存储区域保持监控 这种 方法的正确性依赖于入侵检测系统能有效的保护 mprotect mmap 和 mremap 接口 以确 保内存中这段只读存储区域是不能被恶意篡改的 6 其实 我们也可以采用信号量机制来保护共享存储空间 操作系统中著名的 读者 写者问题 就是应用信号量机制解决共享存储空间的一个典型范例 将共享存储空间视 为临界资源 设置信号量 在有一个进程对共享存储空间进行读操作后 直到这个进程 的操作通过系统调用处理模块审核 在执行模块中执行完成的这段时间内 不允许其他 进程修改共享存储空间中所有与正在运行的进程相关的数据 这样就可以避免共享存储 空间所引起的竞态条件 由于这种解决方法与 5 3 1 节中所描述的解除参数竞争的方法相 似 我们在此不再详细描述 六 总结及进一步的工作 在上面两部分我们论述了什么是竞态条件 并分析了角色沙盒入侵检测系统中常见 的出现各种竞态条件的原因及各种竞态条件的相应解除方法 下面我们根据各种竞态条 件的解除方法 总结出在角色沙盒入侵检测系统中解除竞态条件的一般方法 并指出下 一步的工作 6 1 解除竞态条件一般方法 通过第五部分对角色沙盒入侵检测系统中可能出现的各种竞态条件的分析 我们可 以发现其实利用信号量机制就能够解除角色沙盒入侵检测系统系统中竞态条件 这是因 为这些竞态条件的出现都有一个共同的根源 并发 而信号量机制是解决进程并发执 行所带来的各种问题的有效手段 如我们第五部分所述 角色沙盒入侵检测系统中所出现的竞态条件基本上都呈现出 一个相同的特点 即当系统调用处理模块对参数 符号链接等系统调用相关数据进行审 核授权后 而执行模块尚未执行该系统调用之前 另一个并发执行的进程对这些数据进 行了修改 由此 我们得到解除角色沙盒入侵检测系统中竞态条件的一般方法 即当一 个进程在执行模块中创建之时 为其建立一个动态的临界资源表 将该进程需要使用的 系统调用参数 符号链接等系统调用的敏感数据作为临界资源保护起来 直到该进程在 执行模块中执行完成或是被系统拒绝执行而结束时 才允许其他进程对其访问 从而解 除系统中的竞态条件 6 2 进一步的工作 使用信号量机制虽然可以简单有效的解除角色沙盒入侵检测系统中可能出现的各种 竞态条件 虽然它具有很大的通用性 但这并不代表信号量机制就是最好的解除竞态条 件的方法 因为信号量机制在解决系统中由
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026贵州贵阳长黔汽车销售服务有限公司招聘考试备考试题及答案解析
- 乐清市人力资源和社会保障局公开选调1名下属事业单位工作人员考试备考试题及答案解析
- 2026年绍兴嵊州市水务投资发展集团有限公司公开招聘工作人员8人笔试备考题库及答案解析
- 2026湖南长沙广播中心招聘考试参考试题及答案解析
- 2026广西梧州市万秀区残疾人联合会招聘社区残协专职委员3人考试参考试题及答案解析
- 2026年河南医药大学诚聘研究生辅导员10名考试参考题库及答案解析
- 2026重庆九龙坡区铁马小学校招聘3人考试参考试题及答案解析
- 2026年甘肃省平凉市庄浪县第一批城镇公益性岗位工作人员招聘47人笔试备考题库及答案解析
- 2026江苏泰州市兴化市人才储备中心招募见习人员(第1号)考试参考试题及答案解析
- 2026福建漳龙集团有限公司面向集团竞聘权属地产集团两个副总经理岗位2人考试备考试题及答案解析
- 幼儿园STEAM教育评价体系-洞察与解读
- 山东建筑大学土木工程材料期末考试复习题及参考答案
- 第三方检测机构年终总结
- 四川省工伤课件
- 排风工程安装方案(3篇)
- 民爆销售企业安全培训课件
- 粮食存储与安全知识培训课件
- 乳制品配送服务质量保障措施
- 2025年7月19日四川省考补录公务员面试真题及答案解析(政法岗)
- 秋天公开课教学课件
- 保密文件流转管理办法
评论
0/150
提交评论