一种操作系统内核页缓存的双层防护方法及系统与流程
本发明涉及操作系统安全防护,尤其涉及一种操作系统内核页缓存的双层防护方法及系统。
背景技术:
1、操作系统内核的页缓存是文件系统性能优化的核心机制。当进程读取磁盘文件时,内核将文件内容按页缓存到物理内存中,多个进程可通过各自的虚拟地址空间映射到相同的物理页缓存页,实现零拷贝共享。为保护页缓存数据的完整性,操作系统内核通过写时复制机制确保进程对页缓存的写入操作在独立副本上进行,原始页缓存页面保持不变。操作系统内核包含多个功能子系统(如加密处理子系统、网络协议栈、安全关联管理等),这些子系统以模块化方式组织,各自提供独立的内核服务功能。
2、目前,针对页缓存写入安全防护的已有方案主要采用针对单个漏洞逐个修复的方式。例如,对于加密子系统原地写入漏洞(cve-2026-31431)、网络协议解密原地写入漏洞(cve-2026-43284)、数据合并标记丢失漏洞(cve-2026-46300)以及管道合并写入漏洞(cve-2022-0847),现有技术通过在各自漏洞触发路径中增加特定条件检查来阻止非法写入。此外,部分方案采用外在关联标记方式,例如在网络数据包的附属信息字段中设置“共享数据段标记”来标识数据包中是否包含共享页面,供下游解密模块判断是否可执行原地写入。在攻击面管理方面,现有技术主要通过手动卸载内核模块或配置模块加载黑名单来减少潜在的攻击入口。
3、然而,现有技术至少存在以下缺陷:其一,逐个漏洞打补丁的方式仅修复特定的触发路径,当新的类似漏洞出现时仍需单独修补,缺乏对整类漏洞的防御能力;其二,“共享数据段标记”等外在关联标记存储在网络数据包的附属信息中,与物理页面分离,可能未被正确传播而意外丢失,导致下游模块错误地执行原地写入操作;其三,现有方案仅在漏洞触发的具体代码路径末端进行拦截,未在子系统入口层面解决攻击面可达性问题。攻击者可通过访问特定内核子系统的入口路径,使攻击链上必需的子系统变为可达,从而完成漏洞利用。
技术实现思路
1、鉴于上述的分析,本发明实施例旨在提供一种操作系统内核页缓存的双层防护方法及系统,用以解决现有无法系统性防御整类攻击、无法在子系统入口进行前置拦截以及外在标记易丢失而导致防护失效的问题。
2、一方面,本发明实施例提供了一种操作系统内核页缓存的双层防护方法,包括以下步骤:
3、在至少一个内核子系统的访问入口处设置门控检查点,门控检查点具有开放状态和关闭状态;
4、在至少一个内核子系统的写入入口处设置守卫模块,守卫模块具有启用状态和禁用状态;
5、在数据页面的元数据中增加保护标记,当数据页面被存储于操作系统内核页缓存时,将保护标记设置为受保护状态;
6、当接收到对内核子系统的访问请求时,根据门控检查点的状态对访问请求进行准入控制;当内核子系统对数据页面执行写入操作时,在写入操作执行之前,根据数据页面的保护标记和守卫模块的状态对写入操作进行相应处理。
7、基于上述方法的进一步改进,根据数据页面的保护标记和守卫模块的状态对写入操作进行相应处理,包括:
8、若守卫模块处于禁用状态,或保护标记被设置为不受保护状态,则允许写入操作以原地方式执行;
9、若守卫模块处于启用状态且保护标记被设置为受保护状态,则阻止对数据页面的原地写入,并将被阻止的写入操作重定向至复制后写入的安全路径,或者,向调用方返回错误码并中止写入操作。
10、基于上述方法的进一步改进,当阻止对数据页面的原地写入后,执行自愈操作;自愈操作包括:
11、检查数据页面的地址空间映射是否存在,若不存在,则返回;若存在,则尝试以非阻塞方式锁定数据页面,若数据页面正被其它操作锁定,则跳过并返回;否则,确认数据页面仍属于同一地址空间映射且为干净页面后,将数据页面从页缓存中移除,使数据页面失效。
12、基于上述方法的进一步改进,根据门控检查点的状态对访问请求进行准入控制,包括:
13、若门控检查点处于关闭状态,则拒绝访问请求并向调用方返回预设的错误码;
14、若门控检查点处于开放状态,则允许访问请求进入内核子系统。
15、基于上述方法的进一步改进,门控检查点和守卫模块均基于代码路径修补机制实现运行时零开销开关控制;当门控检查点处于开放状态或守卫模块处于禁用状态时,对应检查路径被优化为无条件跳过以实现零开销,当门控检查点处于关闭状态或守卫模块处于启用状态时,对应检查路径被执行。
16、基于上述方法的进一步改进,守卫模块与操作系统内核内部接口之间还构建有版本适配层;版本适配层基于编译时条件选择机制,在提供的统一接口中根据当前操作系统内核版本通过条件编译自动选择对应的内部接口调用;守卫模块仅调用版本适配层提供的统一接口。
17、基于上述方法的进一步改进,版本适配层处理的操作系统内核内部接口的差异包括:页面数据结构与其扩展结构的接口差异;页缓存生命周期管理函数的名称和参数差异;加密子系统的数据传输描述结构的字段差异;管道迭代器存在性差异;进程文件描述符系统调用存在性差异;以及,引用计数类型差异。
18、基于上述方法的进一步改进,多个守卫模块和多个门控检查点分别通过预定义的守卫模块宏列表和门控检查点宏列表在编译阶段展开而构建,并自动生成对应守卫模块或门控检查点的关联代码;守卫模块宏列表中每一行声明对应一个守卫模块;门控检查点宏列表中每一行声明对应一个门控检查点。
19、基于上述方法的进一步改进,方法还包括:当数据页面从源页面迁移至目标页面时,将源页面的保护标记及其状态传播至目标页面。
20、另一方面,本发明实施例提供了一种操作系统内核页缓存的双层防护系统,
21、包括:
22、门控设置模块,用于在至少一个内核子系统的访问入口处设置门控检查点,门控检查点具有开放状态和关闭状态;
23、守卫设置模块,用于在至少一个内核子系统的写入入口处设置守卫模块,守卫模块具有启用状态和禁用状态;
24、标记设置模块,用于在数据页面的元数据中增加保护标记,当数据页面被存储于操作系统内核页缓存时,将保护标记设置为受保护状态;
25、防护控制模块,当接收到对内核子系统的访问请求时,根据门控检查点的状态对访问请求进行准入控制;当内核子系统对数据页面执行写入操作时,在写入操作执行之前,根据数据页面的保护标记和守卫模块的状态对写入操作进行相应处理。
26、与现有技术相比,本发明至少可实现如下有益效果之一:
27、1、通过在内核子系统的访问入口处设置门控检查点、在子系统写入入口处设置守卫模块、在页缓存页面元数据中设置保护标记,构建了“入口级可达性控制”与“页面级写时复制保护”相结合的双层防护架构;门控检查点作为前置总开关,在内核子系统入口处控制整体可达性,使依赖该子系统的攻击链在前置环节即被断裂;守卫模块作为页面级写保护,在各子系统写入入口处检测并拦截对受保护页缓存页面的原地写入操作。两层防护相互独立、协同配合,既解决了现有技术逐个漏洞打补丁无法覆盖整类攻击的问题,又实现了从攻击面管理到数据完整性保护的全链路防御。
28、2、将保护标记存储在物理页面自身的元数据字段中,随物理页面的存在而存在,且在页面迁移时自动传播至目标页面,不因数据包合并、分片重组或子系统间转移操作而丢失,从根本上克服了外在标记在数据转移过程中易丢失导致防护失效的缺陷。
29、3、门控检查点和守卫模块均基于代码路径动态修补机制实现了运行时开关控制,使得系统在正常运维场景下(绝大多数门控开放、守卫启用但不触发拦截)性能不受影响,同时在需要安全防护时能够提供确定性的拦截能力,兼顾了系统性能与安全需求。
30、4、在守卫模块成功阻止非法写入后,自动触发自愈操作,确保了即使攻击者已对缓存数据进行部分篡改,其它进程也不会读取到被污染的数据,实现了从攻击拦截到数据恢复的完整闭环。
31、5、在守卫模块与操作系统内核内部接口之间构建版本适配层,实现了跨内核版本兼容,降低了维护成本。
32、本发明中,上述各技术方案之间还可以相互组合,以实现更多的优选组合方案。本发明的其他特征和优点将在随后的说明书中阐述,并且,部分优点可从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过说明书以及附图中所特别指出的内容中来实现和获得。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com