CN107168801A - 基于多内核页表的内核动态数据隔离以及保护技术 - Google Patents
基于多内核页表的内核动态数据隔离以及保护技术 Download PDFInfo
- Publication number
- CN107168801A CN107168801A CN201710345654.1A CN201710345654A CN107168801A CN 107168801 A CN107168801 A CN 107168801A CN 201710345654 A CN201710345654 A CN 201710345654A CN 107168801 A CN107168801 A CN 107168801A
- Authority
- CN
- China
- Prior art keywords
- kernel
- page
- page table
- memory
- many
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000002955 isolation Methods 0.000 title claims abstract description 28
- 238000000034 method Methods 0.000 title claims abstract description 24
- 230000015654 memory Effects 0.000 claims abstract description 98
- 238000009826 distribution Methods 0.000 claims abstract description 14
- 238000012545 processing Methods 0.000 claims abstract description 11
- 230000008569 process Effects 0.000 claims abstract description 7
- 230000008859 change Effects 0.000 claims abstract description 4
- 238000013507 mapping Methods 0.000 claims description 24
- 230000002159 abnormal effect Effects 0.000 claims description 4
- 230000001360 synchronised effect Effects 0.000 claims description 4
- 230000001960 triggered effect Effects 0.000 claims description 2
- 230000001934 delay Effects 0.000 claims 1
- 230000026676 system process Effects 0.000 claims 1
- 230000004048 modification Effects 0.000 abstract description 4
- 238000012986 modification Methods 0.000 abstract description 4
- 230000006870 function Effects 0.000 description 9
- 230000003139 buffering effect Effects 0.000 description 7
- 230000000694 effects Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000005856 abnormality Effects 0.000 description 2
- 230000000712 assembly Effects 0.000 description 2
- 238000000429 assembly Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000012550 audit Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000008263 repair mechanism Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6281—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database at program execution time, where the protection is within the operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了Linux系统上一种基于多内核页表的内核动态数据隔离以及保护技术。该技术的实现主要涉及Linux系统中的页表管理、内存分配器以及缺页处理。实现方法为:首先在内核初始化时创建多套内核态页表,以此在Linux内核中构建多个相对独立的内存视图。正常情况下,内核通过在各个内核态页表的切换保证自身的正确运行。其次修改Linux系统中的内存分配器,通过分配标志区分当前分配的内存应该对应到哪一个内存视图,并修改该内存视图相对应的内核态页表,使得分配的内存在该内存视图中可见,但是对于其他内存视图不可见。最后修改缺页程序,增加新的内核态缺页处理逻辑,用于处理内核访问当前页表下不可见内存区域而造成的内核态缺页异常。
Description
技术领域
本发明涉及Linux内核隔离和防护领域,特别是一种基于多内核页表的内核动态数据隔离以及保护技术。
背景技术
Linux是目前在计算机操作系统上运行越来越快,越来越强大的内核之一。基于Linux内核也已经涌现出了大量的发行版,无论是在服务器还是客户端中都占有着举足轻重的地位。同时,Linux也是一个庞大的开源项目,本身包含千万级别的代码量,甚至该数量仍然在不断扩充。更多的代码意味着更多的漏洞。不仅如此,Linux系统本身还具有很高的可扩展性和灵活性,允许通过插入模块的方式向内核中增加代码,这在进一步增加了Linux代码量的同时,不可信的模块插入也对于系统运行造成很大的风险,导致系统变得更加不安全。虽然我们通常将Linux认为是系统运行中的可信软件,但是仍然需要承认其中存在不可避免的不可信问题。而这些不可信因素通常也给了攻击者可乘之机,被用来获取系统root权限、窃取系统机密信息或者修改系统关键数据等等。
针对内核的不可信问题,存在着大量的研究方向。内核隔离作为其中的一个重要方向得到广泛的研究,其中通过页表构建独立执行空间的思想得到广泛的应用。但是当前基于页表的隔离实现中存在一个普遍的问题:小动态数据的混合页问题。无论是通过Hypervisor页表实现隔离还是通过Linux内核页表实现内核组件的隔离,隔离后的Linux主内核和被隔离组件的小内存数据通常存在混合分布的情况,导致无法利用页粒度的保护对于不同来源的小内存空间进行限制,而通常对于这些混合页面需要引入额外的控制机制,带来很大的空间和时间上的开销。
发明内容
针对以上现有技术中的不足,本发明的目的在于提供一种内核不同来源的动态数据隔离和保护技术。避免来自不同来源的小动态数据混合分布在同一组页框中的情况。从而便于实现隔离不同来源的动态数据的需求,解决内核隔离中常见的动态数据混合页的问题。同时进一步提出了一种通过多内核态页表在内核运行过程中为内核不同来源的动态数据构建隔离空间的方法。通过在内核空间建立多套内核页表,从而在内核空间构建多个内存视图。内核运行过程中通过切换页表的方式实现不同内存视图的迁移。
内核的正常运行需要代码和数据之间的协作。通过将内核不同组件的动态数据隔离到不同的内存视图中,可以对于内核运行在特定组件时能够访问的内存区域进行限制。内核仅仅可以访问当前使用的内核页表限定为可见的内存位置,而无法直接访问当前内存视图中不可见的内存。从而防止内核运行过程中的不可信行为对于任意内核内存区域的破坏。
本发明的技术方案如下:一种基于多内核态页表实现的内核动态数据隔离和保护方法,主要包含以下三个部分:
1)多内核页表的构建:用于在内核空间中通过这多套内核态页表构建多个内存视图。内核运行在特定内核页表构建的内存视图下的时候不能访问当前内核页表中被设置为不可见的内存空间,从而限制内核此时能够访问的内存空间范围。
2)支持分配来源标识以实现动态分配内存隔离的内存分配器构建:通过分配来源标志判定分配请求来源,然后将不同来源的动态内存在不同的内核页表中设置不同的访问权限,使得只有在特定的内核页表的作用下才能完成对于该内存区域的正常访问。
3)多内核页表交叉访问引发的缺页异常的处理:如果内核运行过程中有意或者无意地访问了当前内核页表作用下不可见的内存空间,则会触发内核态缺页异常,通过在缺页异常处理函数中增加额外的逻辑对于该情况进行处理。
进一步,可以将上面的三个部分归结为如下的实现步骤:
步骤1:在系统初始化的时候建立多套内核态页表。初始化时期在这多套内核态页表建立一致性的映射关系。对于内核空间中的直接映射区域将映射关系建立在不同的内核页表页上以便于后期的权限差异化设置,对于内核空间的其他区域,则通过共享低层页表页的方式建立一致性的映射,因为动态数据的隔离不需要对于除了直接映射区域之外的其它空间的页表项进行设置。每个页表用于构建一个相对隔离的内存环境。使用页表的好处就是地址翻译过程构建在其基础之上,内核运行过程中通过内核态页表来完成虚拟地址到物理地址的转换。通过限制内核态页表中页表项的_PAGE_PRESENT属性,就可以使得内核运行在某套内核态页表的时候只能看到部分内存视图。而这个部分内存视图则构成内核当前运行的一个受限的环境。
步骤2:修改Linux内核中内存分配器的实现。对于伙伴系统而言,需要在内存分配时,通过传入的预先定义的gfp_t内存分配标志位来判定内存分配请求的来源,以此设置分配的内存对应于各个内核态页表的可见性。对于SLUB而言,我们预先为每一套内核态页表定义一套kmem_cache缓存管理数据结构,这样我们就可以根据分配接口传递过来的内存分配标志将来自于不同来源的SLUB动态内存分配请求分发到相应的kmem_cache缓存对象中,从而实现不同来源的小动态数据的底层物理页框的隔离。因为SLUB缓存中的slab对象是通过伙伴系统的接口分配内存来构建,因此可以将对于内核态页表可见性的设置汇集到伙伴系统中进行统一处理。
步骤3:捕捉新增的缺页异常,当发生内核态缺页异常的时候,需要针对新引入的内核态缺页情况进行处理。主要就是处理内核运行中访问了当前页表中不可见的内存而引发的异常。这种异常在正确实现的内核中属于错误情况,可以认为是内核受到了破坏,从而使用指定的响应方式进行处理。
通过采用上面的技术方案,本发明实现了如下效果:
1)通过新增加的内存来源分配标志以及新增加的SLUB缓存管理对象可以将不同来源请求分配的动态内存对应到不同的物理页框中,从而解决了传统隔离实现中的混合页问题。
2)通过在内核态引入多套内核页表,从而可以为不同内核组件的动态数据构建相对独立的地址空间,通过将不同内核组件的动态数据隔离到不同的内核页表中,使得内核在运行在特定组件下的时候不能对于不可见的其他组件的动态数据直接修改,从而限制了内核运行在某个组件下时可访问的内存空间位置。即使运行在内核态,内核可访问的内存空间也是受到当前使用的内核页表限制的,从而对于其他组件的动态数据进行保护。
3)通过修改内核态的缺页处理,使得我们可以捕获内核态页表作用下的异常内存访问情况,并对其完成特定的处理过程。
附图说明
下面结合附图和具体实施方式对本发明做更进一步的具体说明。
图1是本发明的整体框架图。
图2是本发明中多套内核页表的关系图。
图3是本发明的伙伴系统内存分配流程图。
图4是本发明的SLUB内存分配流程图。
图5是本发明的内核空间内存访问触发缺页的流程图。
具体实施方式
下面结合附图给出一个非限定性的实施例对本发明做进一步阐述。
本发明提供一种基于多内核态页表实现的内核隔离和保护方法,整个方法的实现效果如图1所示,其包括如下步骤:
步骤1:在内核初始化时期建立多套Linux内核页表,对于内核地址空间中的直接映射区域,通过在不同的内核页表页中设置相同的页表项来建立一致性映射关系,对于非直接映射区域则通过共享页表页的方式建立共享映射关系。直接映射区域的内核建立过程主要实现在init_mem_mapping函数中,其通过init_memory_mapping函数实现主要的映射逻辑。通过在init_memory_mapping中添加对于其他内核页表直接映射区域的页表构建逻辑,从而在初始化时期在各个内核态页表中对直接映射区域建立相同的映射关系。直接映射区域之外的其他内核空间所涉及的页表页的结构和关系定义在arch/x86/kernel/head_64.S文件中,通过在该文件中建立新的顶层页目录页表以及构建初始页表结构使得这多套内核页表共享其他内核空间区域对应的低层页表页,从而在系统运行过程中共享页表页中建立起来的映射。Vmalloc区域需要针对页表项的惰性同步进行额外的处理,在缺页异常处理中针对vmalloc错误,如果判定当前cr3寄存器中的页表是我们为了隔离构建的其它内核页表,则需要将swapper_pg_dir中对应的页目录同步到该内核页表对应位置的顶层页目录项同步到当前cr3的内核页表中。最终建立起来的这多套Linux内核页表之间的关系如图2所示。
步骤2:在内核初始化时期为每套内核页表建立特定的SLUB通用缓冲区对象数组和信息数组,定义位置位于mm/slab_common.c文件中。同时在create_kmalloc_caches函数中为新增加的各个SLUB缓冲区进行初始化,初始化过程直接通过调用new_kmalloc_cache接口来实现。此外,为了便于对Linux内核中当前各个kmem_cache缓冲区的情况进行实时观测,系统在初始化SLUB内存分配器的时候为其建立了一套sysfs内存文件系统文件结构,通过该文件系统,我们就可以直接通过对于/sys/kernel/slab来获取系统中当前各个kmem_cache缓冲区所处的状态。因此如果我们想利用sysfs追踪新增加的SLUB缓冲区的实时状态,还需要在create_unique_id函数中为新增加的kmem_cache缓冲区定义新的命名规则防止命名冲突。
步骤3:内存分配器收到内存分配请求后,进行实际的内存分配。如果是通过伙伴系统申请内存分配,则进入步骤4;如果是通过SLUB分配器申请内存分配,则进入步骤5。
本发明中,所述的内存分配器,主要是指Linux系统中的伙伴系统和SLUB分配器。伙伴系统主要是针对物理页框的倍数级别的内存空间的分配,SLUB分配器则主要针对小内存,最小分配的内存大小是8字节,最大的内存空间大小是8K。如果向SLUB内存分配器申请超过8K大小的空间,则SLUB转而请求底层的伙伴系统分配内存。
本发明中,所述的通过伙伴系统进行内存分配,指的是通过伙伴系统的一系列接口进行内存分配的情况。这些接口包括alloc_page、get_zeroed_page、__get_free_pages、__get_dma_pages、alloc_pages等等。对于伙伴系统分配的内存,可以很容易的通过页表项进行可见性的限制。因为页表项的粒度针对的就是页。所以可以在每次分配内存成功之后修改相应的页表项的_PAGE_PRESENT属性即可。
本发明中,所述的通过SLUB分配器进行内存分配,指的是调用一系列SLUB接口进行内存分配的情况,这些接口主要是指kmalloc和kmem_cache_alloc。对于SLUB分配器分配的内存,因为通常分配的大小小于一个页框,所以不能直接在内存分配的时候进行修改,而应该在SLUB请求触发底层调页的时候通过伙伴系统进行可见性的限定。但是为了在SLUB中能够实现页的限定,我们需要为每一套内核态页表定义一套SLUB管理数据结构,因为我们已经使用了分配标志来对于对应的内核态页表进行区分,因此只需要调用相同的接口就可以了。
步骤4:伙伴系统分配内存时,根据内存分配请求中传入的gfp_t标志参数,来设置对应目标空间的内核态页表中的对应页表项的_PAGE_PRESENT属性。设置逻辑实现在__alloc_pages_nodemask函数中,该函数是伙伴系统内存分配的核心函数。__alloc_pages_nodemask函数修改之后的逻辑如图3所示。
本发明中所述的GFP标志,指的是内存分配标志。我们可以通过增加GFP标志来指示当前分配的内存的目标空间,即针对每一个目标空间定义一个GFP标志与其对应。但是需要注意,能够新增的GFP标志数受限于gfp_t类型的位数。内存分配标志定义在include/linux/gfp.h文件中,在其中增加新的__GFP_COME_FROM_SOURCE1、__GFP_COME_FROM_SOURCE2等作为标识内存分配请求来源的标志。
本发明中所述的设置页表中对应页表项的_PAGE_PRESENT属性,指的是设置页表项的_PAGE_PRESENT属性位。通过设置该属性位,使得使用目标页表进行地址翻译时该内存位置可见。对于其他空间的内核页表中对应的页表项,则清除其_PAGE_PRESENT属性位使得分配的内存页在其中不可见。
步骤5:SLUB分配器分配内存时,如果对应的SLUB缓冲区中的slab能够满足分配需要,则直接从相应的slab中获取合适的空间返回。如果当前对应的SLUB缓冲中无法满足需要,则需要建立新的slab。此时需要向伙伴系统申请内存构建新的slab。进入步骤4,从步骤4返回之后再完成内存分配请求。修改之后的SLUB分配流程图如图4所示。
步骤6:内核运行过程中,通过切换内核态页表的方式对于某一时段内核可见的内存区域进行限制。如果运行过程中发生了内核态缺页,则进入步骤7。
步骤7:如果系统运行在某个页表上时发生了内核态缺页,则进入异常处理程序。此时判定内核异常发生的原因,如果是因为新的多套内核态页表的引入而触发的缺页,则认为当前内核运行在一种异常状态。可以认为是发生了某些不可信行为。此时可采取如下的相应措施:宕机(panic)/重启(kernel_restart),也可以利用内核审计系统接口audit_log生成出错信息的详细的审计记录。
本发明中所属的内核态缺页,指的是内核虚拟地址空间的缺页。具体的处理逻辑如图5所示。当前,内核空间发生缺页异常的情况主要包含以下几种:
情况一:vmalloc错误。该错误是由于init_mm的惰性更新引发,通过将当前的内核态页表和init_mm的页表(即swapper_pg_dir)中异常地址的页目录项进行同步来解决。
情况二:如果是kmemcheck检查引发的缺页,则设置缺页地址在页表中对应的页表项的_PAGE_PRESENT属性,这个是kmemcheck实现的正常逻辑。
情况三:本发明中新引入的一种内核态缺页的情况。即访问了当前用于地址翻译的页表中的不可见的内核态内存地址而引发的缺页。此时采用我们新增的逻辑进行处理。
情况四:虚假错误检查。检查是否是由于陈旧的TLB导致的虚假的缺页。发生的原因是因为TLB的延迟flush。如果判定为这种虚假错误,则直接返回即可。
情况五:Kprobes错误。依据Kprobes所处的不同状态对于缺页异常进行处理。Kprobes是Linux中的一个简单的轻量级装置,使得用户可以将断点插入正在运行的内核中。使用Kprobes可以轻松地收集处理器寄存器和全局数据结构等调试信息。开发者甚至可以使用Kprobes来修改寄存器值和全局数据结构值。
情况六:对于非法地址的访问造成。在内核中产生这样结构的情况主要有两种:一种就是内核通过用户空间传递的系统调用参数,访问了无效的地址,通过异常修复机制修复该内核地址空间缺页状况;另一种就是内核设计中固有的缺陷,此时内核将强制用SIGKILL结束当前进程。
Claims (5)
1.一种基于多内核页表的内核动态数据隔离以及保护技术。其特征在于:多内核页表的构建,支持分配来源标识以实现动态分配内存隔离的内存分配器构建,多内核页表交叉访问引发的缺页异常的处理。
2.根据权利要求1所述的一种基于多内核页表的内核动态数据隔离以及保护技术,主要包含如下几个部分:
(2-1)多内核页表的构建:首先在内核页表初始化的时候构建多套内核态页表,同时在内核中加入适当的内核态页表切换逻辑使得内核运行在保证自身正确性的最小内存视图之上,这多套内核态页表的本质作用就是在内核中构建多个内存视图;
(2-2)支持分配来源标识以实现动态分配内存隔离的内存分配器构建:修改内存分配器,增加新的内存分配管理结构。同时,当内核运行中申请内存时,根据内存分配标志修改各个内核态页表中对应的页表项的_PAGE_PRESENT属性,从而将新分配的内存对应到目标页表中;
(2-3)多内核页表交叉访问引发的缺页异常的处理:增加新的内核态缺页处理逻辑,用于处理内核访问当前页表下不可见内存区域而造成的内核态缺页异常。
3.根据权利要求2所述的一种基于多内核页表的内核动态数据隔离机制,其特征在于,多套内核态页表初始化时期建立的是一种一致性的内存映射关系。对于内核虚拟地址空间中直接映射区域,使用不同的内核页表页,以便后期在内存分配的过程中在这多套内核页表中构建差异性内存访问权限,从而实现动态数据的隔离。对于内存空间中的其他区域,则可以通过共享低层页表页的方式实现映射关系的共享。多套内核页表初始化过程如下:
(3-1)定义多套内核态页表的名称并分配页表页所需内存;
(3-2)初始化这多套内核页表之间的关系,初始化时期在这多套内核态页表中建立一致性的内存映射关系。对于内核直接映射区域,使用不同的内核页表页建立一致的内存映射关系。对于内核其他虚拟地址区域,通过共享低层页表页的方式建立一致性的映射关系,其中vmalloc区域比较特殊,因为该区域页表项使用惰性更新的方式进行同步,因此需要在缺页异常中增加对于多套内核态页表的vmalloc区域的页表项同步逻辑。
4.根据权利要求2所述的一种基于多内核页表的内核动态数据隔离以及保护技术,其特征在于,所使用的内存分配器包括SLUB内存分配器和伙伴系统。为了使得当前的SLUB能够实现页粒度的内存可见性限定,我们需要为每套内核态页表实现自身特定的一组SLUB缓存管理结构,辅之以内存分配标志,来实现内存页可见性的限定。因为SLUB底层调页时仍然是通过伙伴系统的接口,而对于SLUB而言,我们限定可见性的实现点就是在调页时。因此对于页表项_PAGE_PRESENT属性的设定可以汇集到伙伴系统中实现,在伙伴系统中分配内存的过程如下:
(4-1)内核调用伙伴系统的内存分配接口;
(4-2)伙伴系统根据内核中物理内存的管理数据进行内存分配,如果分配成功,则通过分析分配标志参数的设定,来将当前分配内存的可见性设置到相应的内核态页表中,完成内存可见性的限定。
5.根据权利要求2所述的一种基于多内核页表的内核动态数据隔离以及保护技术,其特征在于,我们通过在内核中引入合适的内核态页表切换逻辑来保证内核的正确运行。但是当内核运行过程中,可能因为自身实现或者外界因素干扰,而访问了当前内核态页表之外的内存,则此时因为对应位置的页表项没有设置_PAGE_PRESENT属性位,则触发缺页异常。缺页异常中判定异常原因,如果是因为上述原因,则采取一定的响应措施进行处理。可以采取的动作有:宕机或重启;同时利用审计系统的接口来记录发生的该事件等等。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710345654.1A CN107168801A (zh) | 2017-05-12 | 2017-05-12 | 基于多内核页表的内核动态数据隔离以及保护技术 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710345654.1A CN107168801A (zh) | 2017-05-12 | 2017-05-12 | 基于多内核页表的内核动态数据隔离以及保护技术 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107168801A true CN107168801A (zh) | 2017-09-15 |
Family
ID=59815577
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710345654.1A Pending CN107168801A (zh) | 2017-05-12 | 2017-05-12 | 基于多内核页表的内核动态数据隔离以及保护技术 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107168801A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109710327A (zh) * | 2017-10-20 | 2019-05-03 | 龙芯中科技术有限公司 | 浏览器内存分配方法、内存分配器及浏览器 |
CN112465689A (zh) * | 2020-10-21 | 2021-03-09 | 中国船舶重工集团公司第七0九研究所 | 基于可见显存交换区的gpu不可见显存管理方法及系统 |
CN113722246A (zh) * | 2021-11-02 | 2021-11-30 | 超验信息科技(长沙)有限公司 | 处理器中物理内存保护机制的实现方法及装置 |
CN113867820A (zh) * | 2021-09-29 | 2021-12-31 | 深圳市智微智能软件开发有限公司 | 一种动态修改framebuffer的方法、装置、设备及存储介质 |
WO2023280097A1 (zh) * | 2021-07-08 | 2023-01-12 | 华为技术有限公司 | 一种缺页异常的处理方法及相应装置 |
CN115629994A (zh) * | 2022-12-21 | 2023-01-20 | 北京中科网威信息技术有限公司 | 实现防火墙视图与内核视图切换方法及系统 |
CN116842299A (zh) * | 2023-08-28 | 2023-10-03 | 国网四川省电力公司信息通信公司 | 动态数据访问风险控制系统与方法 |
-
2017
- 2017-05-12 CN CN201710345654.1A patent/CN107168801A/zh active Pending
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109710327A (zh) * | 2017-10-20 | 2019-05-03 | 龙芯中科技术有限公司 | 浏览器内存分配方法、内存分配器及浏览器 |
CN112465689A (zh) * | 2020-10-21 | 2021-03-09 | 中国船舶重工集团公司第七0九研究所 | 基于可见显存交换区的gpu不可见显存管理方法及系统 |
CN112465689B (zh) * | 2020-10-21 | 2023-04-07 | 武汉凌久微电子有限公司 | 基于可见显存交换区的gpu不可见显存管理方法及系统 |
WO2023280097A1 (zh) * | 2021-07-08 | 2023-01-12 | 华为技术有限公司 | 一种缺页异常的处理方法及相应装置 |
CN113867820A (zh) * | 2021-09-29 | 2021-12-31 | 深圳市智微智能软件开发有限公司 | 一种动态修改framebuffer的方法、装置、设备及存储介质 |
CN113867820B (zh) * | 2021-09-29 | 2024-05-28 | 深圳市智微智能软件开发有限公司 | 一种动态修改framebuffer的方法、装置、设备及存储介质 |
CN113722246A (zh) * | 2021-11-02 | 2021-11-30 | 超验信息科技(长沙)有限公司 | 处理器中物理内存保护机制的实现方法及装置 |
CN115629994A (zh) * | 2022-12-21 | 2023-01-20 | 北京中科网威信息技术有限公司 | 实现防火墙视图与内核视图切换方法及系统 |
CN115629994B (zh) * | 2022-12-21 | 2023-04-28 | 北京中科网威信息技术有限公司 | 实现防火墙视图与内核视图切换方法及系统 |
CN116842299A (zh) * | 2023-08-28 | 2023-10-03 | 国网四川省电力公司信息通信公司 | 动态数据访问风险控制系统与方法 |
CN116842299B (zh) * | 2023-08-28 | 2023-11-03 | 国网四川省电力公司信息通信公司 | 动态数据访问风险控制系统与方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107168801A (zh) | 基于多内核页表的内核动态数据隔离以及保护技术 | |
Zhou et al. | A bare-metal and asymmetric partitioning approach to client virtualization | |
US7549022B2 (en) | Avoiding cache line sharing in virtual machines | |
US8190839B2 (en) | Using domains for physical address management in a multiprocessor system | |
US10176007B2 (en) | Guest code emulation by virtual machine function | |
US9851918B2 (en) | Copy-on-write by origin host in virtual machine live migration | |
US6480941B1 (en) | Secure partitioning of shared memory based multiprocessor system | |
US7873879B2 (en) | Mechanism to perform debugging of global shared memory (GSM) operations | |
US8893267B1 (en) | System and method for partitioning resources in a system-on-chip (SoC) | |
JPH11505652A (ja) | 単一アドレス空間内の保護ドメイン | |
US7412705B2 (en) | Method for inter partition communication within a logical partitioned data processing system | |
CN105868028A (zh) | 一种进程间共享数据的方法、装置及终端 | |
US8239879B2 (en) | Notification by task of completion of GSM operations at target node | |
CN104809039B (zh) | 基于物理内存分配映射的内存检测方法 | |
US20090019425A1 (en) | Data splitting for recursive data structures | |
CN101739283A (zh) | 一种计算机及虚拟系统直接访问计算机硬件的方法 | |
CN113094700A (zh) | 执行安全操作的系统以及系统执行安全操作的方法 | |
US8275947B2 (en) | Mechanism to prevent illegal access to task address space by unauthorized tasks | |
US20200285588A1 (en) | Determining affinity domain information based on virtual memory address | |
CN106778275A (zh) | 基于虚拟化环境下的安全防护方法及系统和物理主机 | |
CN101470633A (zh) | 一种虚拟机监视器、虚拟机系统及其内存处理方法 | |
Skarlatos et al. | Babelfish: Fusing address translations for containers | |
KR102044075B1 (ko) | 메모리 오류 감지 방법 | |
CN102722452B (zh) | 一种内存冗余消除方法 | |
US9672151B1 (en) | Block caching between a host device client and storage array in a shared storage environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
DD01 | Delivery of document by public notice |
Addressee: Lv Tengfei Document name: Notification of before Expiration of Request of Examination as to Substance |
|
DD01 | Delivery of document by public notice | ||
DD01 | Delivery of document by public notice |
Addressee: Lv Tengfei Document name: Deemed as a notice of withdrawal |
|
DD01 | Delivery of document by public notice | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20170915 |
|
WD01 | Invention patent application deemed withdrawn after publication |