针对页缓存页的写入防护方法、系统、设备、介质及产品与流程

摘要: 本公开涉及计算机领域,尤其涉及一种针对页缓存页的写入防护方法、系统、设备、介质及产品。背景技术:1、在现代操作系统中,为了提升文件i/o性能,内核普遍采用页缓存...
针对页缓存页的写入防护方法、系统、设备、介质及产品与流程

本公开涉及计算机领域,尤其涉及一种针对页缓存页的写入防护方法、系统、设备、介质及产品。

背景技术:

1、在现代操作系统中,为了提升文件i/o性能,内核普遍采用页缓存(page cache)机制将磁盘文件数据缓存到物理内存中。当多个进程读取同一个文件时,这些进程可以共享相同的页缓存页,从而显著减少内存占用和磁盘读取次数。为了进一步提升数据传输效率,linux内核提供了零拷贝机制,例如,以splice系统调用为例,应用程序可以通过该系统调用将文件数据直接“拼接”到管道(pipe)中,而无需将数据从内核态拷贝到用户态缓冲区。随后,管道中的数据可以进一步通过零拷贝路径传递给网络套接字(socket)、加密子系统或其他内核消费者。这一机制广泛应用于高性能网络传输、流媒体处理、数据加解密等场景。

2、然而,零拷贝机制在提升性能的同时,也引入了一个潜在的安全风险:当只读文件的页缓存页通过零拷贝路径被“借用”到其他内核子系统后,其“只读来源”语义可能在传播过程中丢失。部分下游子系统(即通过散列表(scatterlist)或直接页面引用接收数据且具备写入能力的内核组件)可能将这些借用的页缓存页误认为是可写的私有缓冲区,从而执行写入操作,导致原始页缓存页被污染。这种污染可能引发数据完整性破坏、权限提升漏洞,甚至在某些场景下被利用为安全漏洞的攻击路径。

技术实现思路

1、本公开提供一种针对页缓存页的写入防护方法、系统、设备、介质及产品,以至少解决相关技术无法在零拷贝传播链的下游消费点进行针对性的写入拦截的问题。

2、根据本公开实施例的第一方面,提供一种针对页缓存页的写入防护方法,包括:响应于检测到下游内核组件通过目标页缓存页对应的第一内核数据结构对目标页缓存页对应的物理页执行写操作,检测第一内核数据结构是否包括第一来源标记,第一来源标记用于指示目标页缓存页为只读页缓存页;响应于第一内核数据结构包括第一来源标记,确定针对只读页缓存页的处理模式,其中,处理模式指示允许对只读页缓存页执行写操作或拒绝对只读页缓存页执行写操作;按处理模式,处理下游内核组件对目标页缓存页对应的物理页的写操作。

3、可选地,目标页缓存页对应的第一内核数据结构通过如下方式获取:在零拷贝数据路径的起始点,响应于目标页缓存页为只读页缓存页,在将目标页缓存页映射到第一内核组件得到的第二内核数据结构中,设置第二来源标记,其中,第二来源标记用于指示目标页缓存页为只读页缓存页;在零拷贝数据路径的下游转换点,基于第二内核数据结构,将目标页缓存页映射到第二内核组件,得到包含第一来源标记的第一内核数据结构。

4、可选地,在将目标页缓存页映射到第一内核组件得到的第二内核数据结构中,设置第二来源标记之前,还包括:检测处理模式的标识,其中,处理模式包括关闭模式、强制拦截模式和允许模式;响应于处理模式的标识指示为关闭模式,在将目标页缓存页映射到第一内核组件得到的第二内核数据结构中,不设置第二来源标记,并且,响应于检测到下游内核组件通过目标页缓存页对应的第一内核数据结构对目标页缓存页对应的物理页执行写操作,不检测第一内核数据结构是否包括第一来源标记;响应于处理模式的标识指示为强制拦截模式或允许模式,在将目标页缓存页映射到第一内核组件得到的第二内核数据结构中,设置第二来源标记。

5、可选地,允许模式包括审计模式和自动复制模式,其中,确定目标页缓存页的处理模式,包括:通过策略层的策略检查接口确定目标页缓存页的处理模式,并返回与确定的处理模式相应的指示信息,其中,策略层以可加载内核模块实现,指示信息包括以下任一信息:响应于策略检查接口确定处理模式的标识指示为审计模式,指示信息为允许执行写操作;响应于策略检查接口确定处理模式的标识指示为强制拦截模式,指示信息为拒绝错误码;响应于策略检查接口确定处理模式的标识指示为自动复制模式,指示信息为指示复制的信号。

6、可选地,按处理模式,处理下游内核组件对目标页缓存页对应的物理页的写操作,包括:响应于指示信息为允许执行写操作,执行写操作;响应于指示信息为指示复制的信号,分配新的物理页,将目标页缓存页对应的物理页的内容复制到新的物理页;更新第一内核数据结构指向新的物理页并清除第一来源标记;对新的物理页执行写操作。

7、可选地,按处理模式,处理下游内核组件对目标页缓存页对应的物理页的写操作,包括:响应于指示信息为拒绝错误码且拒绝写操作的方式为终止写操作的进程,策略层通过内核任务管理接口直接终止写操作的进程;响应于指示信息为拒绝错误码且拒绝写操作的方式为系统停机,策略层直接触发内核恐慌机制,强制操作系统进入安全状态。

8、可选地,通过策略层记录违规写操作事件的次数,并策略层通过诊断接口向用户态暴漏记录的违规写操作事件的次数。

9、可选地,在对第一内核数据结构进行拆分或克隆,得到第三内核数据结构的情况下,第三内核数据结构继承第一内核数据结构包括的第一来源标记。

10、根据本公开实施例的第二方面,提供一种针对页缓存页的写入防护系统,包括:检测单元,被配置为响应于检测到下游内核组件通过目标页缓存页对应的第一内核数据结构对目标页缓存页对应的物理页执行写操作,检测第一内核数据结构是否包括第一来源标记,第一来源标记用于指示目标页缓存页为只读页缓存页;确定单元,被配置为响应于第一内核数据结构包括第一来源标记,确定目标页缓存页的处理模式,其中,处理模式指示允许对目标页缓存页执行写操作或拒绝对目标页缓存页执行写操作;处理单元,被配置为按处理模式,处理下游内核组件对目标页缓存页对应的物理页的写操作。

11、可选地,所述写入防护系统还包括获取单元,被配置为通过如下方式获取目标页缓存页对应的第一内核数据结构:在零拷贝数据路径的起始点,响应于目标页缓存页为只读页缓存页,在将目标页缓存页映射到第一内核组件得到的第二内核数据结构中,设置第二来源标记,其中,第二来源标记用于指示目标页缓存页为只读页缓存页;在零拷贝数据路径的下游转换点,基于第二内核数据结构,将目标页缓存页映射到第二内核组件,得到包含第一来源标记的第一内核数据结构。

12、可选地,获取单元,还被配置为在将目标页缓存页映射到第一内核组件得到的第二内核数据结构中,设置第二来源标记之前,检测处理模式的标识,其中,处理模式包括关闭模式、强制拦截模式和允许模式;响应于处理模式的标识指示为关闭模式,在将目标页缓存页映射到第一内核组件得到的第二内核数据结构中,不设置第二来源标记,并且,响应于检测到下游内核组件通过目标页缓存页对应的第一内核数据结构对目标页缓存页对应的物理页执行写操作,不检测第一内核数据结构是否包括第一来源标记;响应于处理模式的标识指示为强制拦截模式或允许模式,在将目标页缓存页映射到第一内核组件得到的第二内核数据结构中,设置第二来源标记。

13、可选地,允许模式包括审计模式和自动复制模式,其中,确定单元,还被配置为通过策略层的策略检查接口确定目标页缓存页的处理模式,并返回与确定的处理模式相应的指示信息,其中,策略层以可加载内核模块实现,指示信息包括以下任一信息:响应于策略检查接口确定处理模式的标识指示为审计模式,指示信息为允许执行写操作;响应于策略检查接口确定处理模式的标识指示为强制拦截模式,指示信息为拒绝错误码;响应于策略检查接口确定处理模式的标识指示为自动复制模式,指示信息为指示复制的信号。

14、可选地,处理单元,还被配置为响应于指示信息为允许执行写操作,执行写操作;响应于指示信息为指示复制的信号,分配新的物理页,将目标页缓存页对应的物理页的内容复制到新的物理页;更新第一内核数据结构指向新的物理页并清除第一来源标记;对新的物理页执行写操作。

15、可选地,处理单元,还被配置为响应于指示信息为拒绝错误码且拒绝写操作的方式为终止写操作的进程,策略层通过内核任务管理接口直接终止写操作的进程;响应于指示信息为拒绝错误码且拒绝写操作的方式为系统停机,策略层直接触发内核恐慌机制,强制操作系统进入安全状态。

16、可选地,所述写入防护系统还包括记录单元,被配置为通过策略层记录违规写操作事件的次数,并策略层通过诊断接口向用户态暴漏记录的违规写操作事件的次数。

17、可选地,所述写入防护系统还包括继承单元,被配置为在对第一内核数据结构进行拆分或克隆,得到第三内核数据结构的情况下,第三内核数据结构继承第一内核数据结构包括的第一来源标记。

18、根据本公开实施例的第三方面,提供了一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,处理器被配置为执行指令,以实现根据本公开的针对页缓存页的写入防护方法。

19、根据本公开实施例的第四方面,提供了一种计算机可读存储介质,当计算机可读存储介质中的指令被至少一个处理器运行时,促使至少一个处理器执行如上根据本公开的针对页缓存页的写入防护方法。

20、根据本公开实施例的第五方面,提供了一种计算机程序产品,包括计算机指令,计算机指令被处理器执行时实现根据本公开的针对页缓存页的写入防护方法。

21、本公开的实施例提供的技术方案至少带来以下有益效果:

22、根据本公开的针对页缓存页的写入防护方法、系统、设备、介质及产品,在对于只读页缓存页对应的内核数据结构中设置指示只读页缓存页的来源标记,同时,在下游内核组件要通过内核数据结构对该只读页缓存页执行写操作前进行检查,在检查到内核数据结构携带有只读页缓存页的来源标记时,可以根据针对只读页缓存页的处理模式,可以灵活选择拒绝执行写操作或允许执行写操作,从而能够在用户设定了拒绝对只读页缓存页执行写操作时,阻止下游内核组件对只读页缓存的错误写入,进而有效防止页缓存污染。因此,本公开解决了相关技术无法在零拷贝传播链的下游消费点进行针对性的写入拦截的问题。

23、应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。