WO2023098653A1 - 内核保护方法、装置及系统 - Google Patents

内核保护方法、装置及系统 Download PDF

Info

Publication number
WO2023098653A1
WO2023098653A1 PCT/CN2022/135001 CN2022135001W WO2023098653A1 WO 2023098653 A1 WO2023098653 A1 WO 2023098653A1 CN 2022135001 W CN2022135001 W CN 2022135001W WO 2023098653 A1 WO2023098653 A1 WO 2023098653A1
Authority
WO
WIPO (PCT)
Prior art keywords
page table
kernel
privilege
command
memory
Prior art date
Application number
PCT/CN2022/135001
Other languages
English (en)
French (fr)
Inventor
黄振强
马尼亚瓦伦丁
朱健伟
Original Assignee
华为技术有限公司
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 华为技术有限公司 filed Critical 华为技术有限公司
Publication of WO2023098653A1 publication Critical patent/WO2023098653A1/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing 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/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices

Definitions

  • the first privilege is kernel privilege.
  • the page table has many permissions, such as read, write, and execute permissions.
  • the permissions corresponding to different page tables play different roles in resisting kernel intrusion.
  • the key memory permission in this patent refers to the page table permission to resist the exploitation of kernel vulnerabilities, including the write permission of the kernel code segment and the driver code segment, the write permission of the rop-pool page table, and the execution permission of the data segment.
  • the preset command includes but not limited to insn.
  • the preset commands may also include commands for modifying page table attributes of the kernel code segment.
  • FIGS. 8A-8F are schematic diagrams of the page table provided by the embodiment of the present application.
  • FIG. 13-15 are schematic diagrams of the software architecture of the kernel protection device provided by the embodiment of the present application.
  • FIG. 17 is a schematic diagram of a chip system provided by an embodiment of the present application.
  • the multi-level page table includes a top-level page table (also called a first-level page table) and a multi-level sub-page table.
  • the top-level page table includes but not limited to page directory (page directory, PGD).
  • Subpage tables include but are not limited to page table entries (page table, PTE).
  • the address of the top-level page table is stored in the page table register, and the address of the sub-page table is stored in its upper-level sub-page table.
  • the base address of the PA corresponding to the VA is stored in the subpage table of the lowest level.
  • the base address of the second-level sub-page table is stored in the top-level page table.
  • Page table permission priority It means that the permissions in the high-level page table will override the permissions in the low-level page table. For example, if the permission in the top-level page table is set to be non-executable, then each sub-level page table contained in the top-level page table cannot be executed even if it has execute permission. Exemplarily, if the permission of address B in the top-level page table as shown in Figure 2A is set to be non-executable, then even if the permission corresponding to address B in the third-level sub-page table is set to be executable, subsequently, address B corresponds to the memory space The data in is also not allowed to execute.
  • First privilege In some cases, attackers can use vulnerabilities (including but not limited to array out-of-bounds and other vulnerabilities) to escalate system privileges, that is, elevate from ordinary privileges to first privileges (including but not limited to root privileges). After the attacker obtains the first privilege, based on trust and other reasons, the attacked system no longer performs security checks on the attacker's page table modification operations, so that the attacker can re-establish the page table or page table remapping (double- Mapping) and other methods to tamper with the page table, including but not limited to modifying the permission data in the page table, such as modifying the read, write, and execute permissions corresponding to a certain memory in the page table (such as the memory associated with the kernel), and then realizing the system kernel.
  • vulnerabilities including but not limited to array out-of-bounds and other vulnerabilities
  • Page table modification is usually to modify the data in the page table, such as modifying the access permission data in the page table.
  • the embodiment of the present application provides a kernel protection method. Considering that some access rights of the kernel-related memory are stored in the page table, these kernel-related memories can be protected by protecting the page table. And then realize the protection of the system kernel.
  • the data segment and the code segment do not have write permission and execution permission at the same time.
  • the data segment if the data segment is allowed to be written, the data segment is not allowed to execute the operation, or in other words, it is forbidden to add permission to the data segment to allow execution.
  • the attacker obtains the first privilege by escalating privileges and injects malicious code into the data segment, he will not be able to run the injected malicious code because he is prohibited from adding execution permissions to the data segment. In this way, malicious codes can be prevented from being executed as much as possible.
  • the code segment if the code segment is allowed to be executed, the code segment is not allowed to write, or it is forbidden to add permission to the code segment to allow writing. In this way, since the code segment is not allowed to be written under the first privilege, tampering of the kernel code can be avoided as much as possible.
  • the memory 201 can be used to store data, software programs and modules, and mainly includes a program storage area and a data storage area. Data created at the time of use, etc.
  • the above-mentioned operating system may include a general-purpose operating system (for example, system) or a secure operating system.
  • the secure operating system may be, for example, a trusted execution environment operating system (trusted execution environment operating system, TEE OS).
  • the application programs required by at least one of the above functions may include kernel programs and driver module programs based on various operating systems.
  • the data stored in the above storage data area may include but not limited to kernel data.
  • the processor 202 is used to control and manage the actions of the device, for example, by running or executing software programs and/or modules stored in the memory 201, and calling data stored in the memory 201, to perform various functions and processes of the device data.
  • the processor 202 may include at least one of a secure element (Secure element, SE), a central processing unit, a digital signal processor, an artificial intelligence (artificial intelligence, AI) processor, a microprocessor, or a microcontroller.
  • SE secure element
  • AI artificial intelligence
  • the communication device 203 is used to support the electronic device to communicate with other devices.
  • the communication device 203 may be a receiver, a receiving circuit, a transmitter, a sending circuit, a transceiver with a sending and receiving function, a sending and receiving circuit, and the like.
  • the communication device 203 is a transceiver circuit based on near field communication (near field communication, NFC), or a short-distance communication device in other modes such as Bluetooth.
  • the processor 202 itself may be regarded as a device for implementing a kernel protection function (may be referred to simply as a kernel protection device), which may serve as a computing core to implement the kernel protection function.
  • the processor 202 may be located in a kernel protection device, which together with other components in the kernel protection device may implement the kernel protection function.
  • the kernel protection device can be one or more chips, chipsets, or can selectively run software to work.
  • the initialization sub-module 302a in the proxy module can cooperate with the initialization sub-module 303a in the control module 303 to complete some configurations in the kernel initialization.
  • the initialization submodule 302a may send related information of the kernel to the initialization submodule 303a.
  • the kernel-related information includes, but is not limited to, any one or more of the following information: important page table information, and important register information.
  • the monitoring sub-module 303b can receive the page table modification command from the monitoring sub-module 302b, and judge whether the page table modification command is legal. If it is legal, the corresponding page table is modified according to the page table modification command. surface.
  • the agent module may also be called an agent program or other names, but this does not constitute a limitation on the functions of the agent module.
  • the control module may also be called a control program or other names, but this does not constitute a limitation on the functions of the control module.
  • important page tables include but are not limited to page tables of partial data segments, page tables of kernel code segments, and page tables of driver code segments. These page tables may be called second page tables.
  • the second page table is a kernel-relative page table.
  • FIG. 7A exemplarily shows the dedicated page table pool created by the proxy module.
  • the proxy module in the process of creating relevant page tables for the dedicated page table pool, the proxy module will use some important page tables (such as the page table of some data segments, the page table of the kernel code segment, the page table of the driver code segment, The page tables of the dedicated page table pool) are all stored in the dedicated page table pool.
  • the base address of the physical address of the entire dedicated page table pool is stored in the page table of the dedicated page table pool, and the read, write, and execute permissions of the entire dedicated page table pool are stored.
  • the write permission of page table A can only be removed through a higher CPU permission, that is, the write permission of the entire physical memory of the dedicated page table pool can be removed through a higher CPU permission (such as the second privilege).
  • a privilege cannot restore the write permission of page table A.
  • the above S102 and S103 are the page table mapping process corresponding to the first privilege at the initial stage of kernel initialization. During the page table mapping process, corresponding access authority data and address mapping data are written in each important page table.
  • the page table mapping under the second privilege is implemented by the control module.
  • the control module creates a new page table A1 for the dedicated page table pool, and the page table A1 of the dedicated page table pool is no longer stored In the private page table pool.
  • step S104 is not limited.
  • S104 may be executed after S101, or at other timings.
  • the agent module sends initialization information to the control module.
  • the third message is used to notify or request or instruct the control module to remove the write permission of the private page table pool under the first privilege. It means that subsequently, under the first privilege, no write operation is allowed on the dedicated page table pool, so that the system security under the first privilege can be improved.
  • the embodiment of the present application also provides a kernel protection method, which is applicable to the running process of the kernel.
  • the kernel protection method during kernel running is introduced in the following scenarios.
  • the proxy module sends a page table modification command to the control module.
  • the page table modification command carries address information of the physical memory whose access permission is to be modified.
  • the proxy module running under the first privilege cannot directly modify the important page table, and the operation of modifying the important page table is completed by the control module running under the second privilege.
  • the agent module will judge whether the page table to be modified is in the dedicated page table pool. In some cases, if the page table to be modified belongs to the dedicated page table pool, it means that the page table to be modified is an important page table (which has a greater impact on kernel security), then, in order to ensure the security of the kernel, the proxy module sends The control module running on the second privilege issues a page table modification command, and the control module with higher privilege judges whether to modify the corresponding important page table.
  • control module after the control module receives the page table modification command from the agent module, if it determines that the page table modification command is a legal command, it means that the command to modify the important page table is usually from a legitimate user operation, and usually does not cause any damage to the system. Attack risk, then, the control module modifies the target page table according to the page table modification command, so as to realize the corresponding function of the system.
  • control module receives the page table modification command from the proxy module, it determines that the command is a legal command to load the hot patch into the kernel code (such as the insn command ), the control module can directly modify the content in the physical address where the kernel code segment is located according to the command, such as directly modifying the hot patch function hook in the kernel code segment.
  • control module may send a modification rejection response to the agent module.
  • the preset command includes but not limited to insn.
  • the preset commands may also include commands for modifying page table attributes of the kernel code segment.
  • the insn does not modify the page table attributes of the kernel code segment in the dedicated page table pool, and can directly modify the content of the kernel code segment through the second authority.
  • the content of the kernel code segment to be modified is less, usually individual bytes.
  • the control module receives an insn command from the agent module, and the command indicates that the page table C1 shown in FIG. 8C needs to be modified to add write permission to the physical memory at address C (the memory where the kernel code segment is located). If the insn command comes from the kernel code segment and is a preset command, the control module determines that the insn command is legal, and can directly modify the content of the kernel code segment without additionally modifying the page table C1.
  • the control module determines whether the monitoring function is currently enabled. If the monitoring function is currently enabled by the control module, the control module performs legality judgment, that is, it needs to judge whether the page table modification command can cause the driver code segment to have both write and execute permissions. If the page table modification command can cause the driver code segment to have write and execute permissions at the same time, the control module regards the page table modification command as an illegal command and does not respond to the page table modification command. If the page table modification command does not cause the driver code segment to have write and execute permissions at the same time, the control module regards the page table modification command as a legal command.
  • the control module receives a page table modification command A from the agent module, and the page table modification command A is stored in memory X outside the kernel code segment. Since the command comes from outside the kernel code segment, whether the command is safe cannot be directly ensured. Then, the control module keeps the monitoring function turned on, and continues to detect the legitimacy of the page table modification command A. Exemplarily, as shown in FIG.
  • the control module determines that the page table modification command A can cause the driver code segment to have write and execute permissions at the same time, Then the page table modification command A is not responded to, that is, page table B2 is refused to be modified, so as to reduce the risk of the system being subjected to injection execution attacks.
  • the control module can measure periodically or in response to specific events.
  • the control module sends Warning message.
  • the agent module can display the warning information through the display driver, so as to prompt the user that the current system may be at risk.
  • the proxy module creates a target page table.
  • the control module creates a target page table according to the page table creation command, and stores the target page table in a dedicated page table pool.
  • the method may include:
  • the page table remapping command is used to remap the target page table.
  • the kernel verifies the signature of the ko module, and the verification passes.
  • the switch submodule of the proxy module instructs the monitoring submodule to send a page table modification command to the monitoring submodule of the control module.
  • the monitoring sub-module of the control module modifies the target page table.
  • the switch sub-module of the proxy module sends a monitoring function restoration command to the switch sub-module of the control module.
  • the switch sub-module of the control module sends a monitoring function restoration command to the monitoring sub-module of the control module, so as to restore the monitoring function.
  • the monitoring sub-module of the control module recovers the monitoring function.
  • This structural solution is suitable for deployment and operation in a virtual machine, and the integrity of the VM kernel of the virtual machine is guaranteed through the host kernel. Prevent attackers from invading the VM kernel, thereby invading the host, or carrying out other attack activities.
  • This structural solution is deployed and run on the host to ensure the integrity of the host's kernel kernel. This solution is suitable for scenarios that do not run virtual machines.
  • the processing unit 1301 may include at least one of a central processing unit (CPU), an application processor (Application Processor, AP) or a communication processor (Communication Processor, CP).
  • the processing unit 1301 may perform operations or data processing related to control and/or communication of at least one of other elements of the user electronic device.
  • the processing unit 1301 can be configured to control the content displayed on the main screen according to a certain trigger condition. Or determine what is displayed on the screen according to preset rules.
  • the processing unit 1301 is also configured to process the input instruction or data, and determine a display style according to the processed data.
  • the storage unit 1303 may include a volatile memory and/or a nonvolatile memory.
  • the storage unit is used to store at least one related instruction or data in other modules of the user terminal device, specifically, the storage unit can record a page table.
  • the display unit 1304 may include, for example, a Liquid Crystal Display (LCD), a Light Emitting Diode (LED) display, an Organic Light Emitting Diode (OLED) display, a Micro Electro Mechanical System (MEMS) display or an electronic paper display. Used to display user-viewable content (eg, text, images, videos, icons, symbols, etc.).
  • LCD Liquid Crystal Display
  • LED Light Emitting Diode
  • OLED Organic Light Emitting Diode
  • MEMS Micro Electro Mechanical System
  • An embodiment of the present application further provides a computer program product, which, when running on a computer, causes the computer to execute the various functions or steps performed by the electronic device in the foregoing method embodiments.
  • an integrated unit is realized in the form of a software function unit and sold or used as an independent product, it can be stored in a readable storage medium.
  • the technical solution of the embodiment of the present application is essentially or the part that contributes to the prior art, or all or part of the technical solution can be embodied in the form of a software product, and the software product is stored in a storage medium Among them, several instructions are included to make a device (which may be a single-chip microcomputer, a chip, etc.) or a processor (processor) execute all or part of the steps of the methods in various embodiments of the present application.
  • the aforementioned storage medium includes: various media that can store program codes such as U disk, mobile hard disk, read only memory (ROM), random access memory (random access memory, RAM), magnetic disk or optical disk.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

一种内核保护方法、装置及系统,涉及安全技术领域,可以降低内核遭受攻击的概率,提升系统的安全性。该方法应用于电子设备,该方法包括:工作在第一特权,并检测到页表修改命令;该页表修改命令用于修改目标页表中的访问权限数据;该目标页表是内核相关的页表;该第一特权是内核特权;由该第一特权切换至第二特权,并在该第二特权下,根据该页表修改命令判断是否对该目标页表进行修改;该第二特权的权限高于该第一特权;若确定对该目标页表进行修改,则修改该目标页表中的访问权限数据。

Description

内核保护方法、装置及系统
本申请要求于2021年11月30日提交国家知识产权局、申请号为202111461175.9、发明名称为“内核保护方法、装置及系统”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及安全技术领域,尤其涉及内核保护方法、装置及系统。
背景技术
服务器上大量的应用程序以普通权限运行在用户空间。当进行网络通信或者硬件资源访问时,则需要提权到具有更高权限(内核特权)的内核空间进行。所以,服务器内核的安全性对整个服务器的健康运行至关重要。
目前,一旦应用获得内核特权,则系统信任该应用,攻击者可以任意篡改,达到攻击窃取信息的目的,风险大。因此,亟待提出一种保护内核免受入侵的方案。
发明内容
本申请提供内核保护方法、装置及系统,可以降低内核遭受攻击的概率,提升系统的安全性。
为了实现上述目的,本申请实施例提供了以下技术方案:
第一方面提供内核保护方法,应用于电子设备,所述方法包括:
工作在第一特权,并检测到页表修改命令;所述第一特权包括第一特权;所述页表修改命令用于修改目标页表中的访问权限数据;所述目标页表是内核相关的页表;所述第一特权是内核特权;
由所述第一特权切换至第二特权,并在所述第二特权下,根据所述页表修改命令判断是否对所述目标页表进行修改;所述第二特权的权限高于所述第一特权;
若确定对所述目标页表进行修改,则修改所述目标页表中的访问权限数据。
可选的,第一特权为内核特权。
本申请实施例的技术方案,使得内核特权下无法直接修改内核中关键内存的访问权限,如果需要修改关键内存的权限,则需切换至更高特权(比如第二特权)完成修改,因此,能够降低在内核特权下遭受攻击的概率。
关键内存权限:页表具有很多权限,比较重要的如读、写、执行权限。而不同页表对应的权限,在抵御内核入侵上所起的作用也不同。本专利中的关键内存权限是指抵御内核漏洞利用的页表权限,包括内核代码段和驱动代码段的写入权限,rop-pool页表的写入权限,以及数据段的执行权限。
在一种可能的设计中,所述内核相关的页表包括如下任一种或多种页表:用于映射内核代码段的页表,用于映射驱动代码段的页表,用于映射数据段的页表;
根据所述页表修改命令判断是否对所述目标页表进行修改,包括:
如果所述目标页表为用于映射内核代码段的页表,且所述页表修改命令为预设命令,则确定修改所述目标页表。
示例性的,预设命令包括但不限于insn。预设命令还可以包括用于修改内核代码段的页表属性的命令。
在一种可能的设计中,所述方法还包括:在所述第一特权下,创建第一物理内存、第一页表以及第二页表;
其中,所述第一页表和所述第二页表存储在所述第一物理内存中;第一页表为用于映射所述第一物理内存的页表,第二页表是内核相关的页表。
在一种可能的设计中,所述第一特权下,所述第一物理内存的访问权限为只读。
在一种可能的设计中,所述第一特权下,所述第一页表不包括写入权限,所述第二特权下,所述第一页表包括写入权限。
在一种可能的设计中,所述预设命令包括insn命令。
如下,对本申请实施例涉及的部分技术术语进行简单介绍:
重要页表:能影响内核运行逻辑的页表,如映射内核代码段的页表,映射各驱动模块代码段的页表,本专利中映射rop-pool物理内存的页表,以及部分数据段页表。在具有页表权限优先级的芯片架构上,部分数据段页表指映射数据段的高层级页表。而其他芯片架构上,部分数据段页表指映射需要被监测的数据段的页表。专利实现者可根据实际情况,如数据段已采用其他技术进行保护,则可不需要监测,或者部分监测。
专用页表池:在内核初始化初期开辟的一段物理内存,用于保存内核页表。在内核初始化过程中,将内核代码段和数据段等的页面映射放入专用页表池,并将专用页表池自身的页面映射也放入其中;内核初始化后期,将专用页表池的写入权限去除。为了更直观反应其意义,本专利中也用rop-pool对专用页表池进行标记:rop-pool表示在内核运行时,该页表池在内核态(或者说是特权A模式)呈现为只读,如果要修改,则需要陷入更高权限完成。页表专用池是本专利方案中的一个核心控制数据块。
自身映射(self-mapping)机制:创建专用页表池,并将映射该页表池自身的页表也放入专用页表池中,内核初始化完成后,通过比内核特权更高的CPU特权去除专用页表池的写入权限,后续内核特权下无法恢复该写入权限,从而保障专用页表池中重要页表数据无法被修改。
高特权合法性判决机制:位于高特权的控制程序对内核的代理程序下发的页表权限的修改操作进行合法性判断,合法则修改,不合法则拒绝。
在本申请实施例的技术方案中,内核初始化过程中,代理程序触发控制会去除专用页表池的页表的写入权限,后续在内核特权(比如特权A或B)下无法被恢复,保障内核中关键内存权限无法被篡改。内核运行过程中,代理程序会将内核中关键内存权限的修改交于控制程序执行,控制程序进行合法性判断后再选择是否执行,从而阻止非法修改并保障系统正常运行。
此外,非内存数据(如寄存器等)在内核中无法禁止被修改,需要在控制程序中做周期性检测(告警)。除了寄存器,专利实现者可根据实际需要,亦可在控制程序中对DMA页表数据,rop-pool页表数据,内核代码段等重要内存数据做周期性检测比如检测异常变更。
需要说明的是,本申请实施例的双特权技术要求CPU具有不同权限等级,目前通用的arm和x86芯片皆支持该功能。
进一步的,开源内核在创建页表时,随机申请物理内存进行页表数据存放,不便于对其进行管理和控制。为了能统一管理重要页表,开辟统一的第一物理内存,第一物理内存用于存储重要页表。
目前,存在如下攻击方式,直接修改硬盘文件系统上的内容,比如,假设某个KO还没加载到内存时,则通过替换或篡改磁盘文件系统中的KO进行攻击;还有一种攻击方式,可以直接替换或修改内核。本申请实施例中,为了降低系统的安全风险,磁盘文件系统上的文件通过安全启动的签名和校验进行保障,使得文件系统中改变的任何东西,在加载时无法通过签名,加载失败,如此用户就可以知道系统出现问题。
第二方面提供一种内核保护装置,包括:
处理单元,工作在第一特权,并检测到页表修改命令;所述第一特权包括第一特权;所述页表修改命令用于修改目标页表中的访问权限数据;所述目标页表是内核相关的页表;所述第一特权是内核特权;由所述第一特权切换至第二特权,并在所述第二特权下,根据所述页表修改命令判断是否对所述目标页表进行修改;所述第二特权的权限高于所述第一特权;若确定对所述目标页表进行修改,则修改所述目标页表中的访问权限数据。
在一种可能的设计中,所述内核相关的页表包括如下任一种或多种页表:用于映射内核代码段的页表,用于映射驱动代码段的页表,用于映射数据段的页表;
可选的,用于映射数据段的页表包括映射重要页表所在数据段的页表、映射数据段的高层级页表。
根据所述页表修改命令判断是否对所述目标页表进行修改,包括:
如果所述目标页表为用于映射内核代码段的页表,且所述页表修改命令为预设命令,则确定修改所述目标页表。
在一种可能的设计中,所述处理单元,还用于在所述第一特权下,创建第一物理内存、第一页表以及第二页表;
其中,所述第一页表和所述第二页表存储在所述第一物理内存中;第一页表为用于映射所述第一物理内存的页表,第二页表是内核相关的页表。
在一种可能的设计中,所述第一特权下,所述第一物理内存的访问权限为只读。
在一种可能的设计中,所述第一特权下,所述第一页表不包括写入权限,所述第二特权下,所述第一页表包括写入权限。
在一种可能的设计中,所述预设命令包括insn命令。
第三方面,本申请提供一种电子设备,该电子设备具有实现如上述任意方面及其中任一种可能的实现方式中的内核保护方法的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
第四方面,本申请提供一种计算机可读存储介质,包括计算机指令,当计算机指令在电子设备上运行时,使得电子设备执行如上述任意方面及其中任一种可能的实现方式中任一项的内核保护方法。
第五方面,本申请提供一种计算机程序产品,当计算机程序产品在电子设备上运行时,使得电子设备执行如任意方面及其中任一种可能的实现方式中任一项的内核保护方法。
第六方面,提供一种电路系统,电路系统包括处理电路,处理电路被配置为执行如上述任意方面及其中任一种可能的实现方式中的内核保护方法。
第七方面,本申请实施例提供一种芯片系统,包括至少一个处理器和至少一个接口电路,至少一个接口电路用于执行收发功能,并将指令发送给至少一个处理器,当至少一个处理器执行指令时,至少一个处理器执行如上述任意方面及其中任一种可能的实现方式中的内核保护方法。
附图说明
图1为本申请实施例提供的MMU机制的运行原理;
图2A、图2B为本申请实施例提供的页表的查询机制;
图3为本申请实施例提供的系统架构的示意图;
图4为本申请实施例提供的内核保护装置的结构示意图;
图5为本申请实施例提供的内核保护装置的软件结构示意图;
图6为本申请实施例提供的内核保护方法的流程示意图;
图7A、图7B为本申请实施例提供的页表的示意图;
图8A-图8F为本申请实施例提供的页表的示意图;
图9-图12为本申请实施例提供的内核保护方法的流程示意图;
图13-图15为本申请实施例提供的内核保护装置的软件架构示意图;
图16为本申请实施例提供的装置的示意图;
图17为本申请实施例提供的芯片系统的示意图。
具体实施方式
首先,对本申请实施例涉及的技术术语进行介绍:
内存访问机制:内核通过内存管理单元(memory management unit,MMU),将虚拟内存地址(virtual address,VA)(可简称为虚拟地址)映射为物理内存地址(physical address,PA)(可简称为物理地址)。具体的,如图1所示,程序运行时,程序对应的地址为虚拟地址,中央处理单元(central processing unit,CPU)通过MMU将虚拟地址解析为物理地址,然后通过MMU对相应物理地址的内存进行寻址访问。
本申请实施例中,内存可以是各种形式内存,比如可以但不限于是双速率(double data rate,DDR)内存。
页表(page)以及页表在内存寻址中的作用(页表的作用之一):MMU机制通过多级页表中的最低级别页表存放VA对应的PA的基址。
其中,多级页表包含顶级页表(也可称为一级页表)和多级子页表。可选的,顶级页表包括但不限于页目录(page directory,PGD)。子页表包括但不限于页表条目(page table,PTE)。顶级页表的地址存储在页表寄存器中,子页表的地址存储在其上一级子页表中。最低级别的子页表中存储VA对应的PA的基址。示例性的,如图2A所示,顶级页表中存储二级子页表的基址。CPU可以根据该基址和虚拟地址A中的偏移量找到对应的二级页表地址,后续页表其他以此类推。比如,二级子页表中存储三级子页表(为图2A例子中的最低级子页表)的基址,以此类推。三级子页表中存储物理内存地址B对应的基址。后续,可以根据虚拟地址A中的偏移量以及物理地址B对应的基址,计算物理地址B的地址。
图2A示出了一种内存寻址的方案,CPU在通过MMU解析虚拟地址A时,MMU先访问页表寄存器,获取顶级页表的物理地址,并根据顶级页表中的物理地址寻址访问相应内存地址,获取顶级页表。之后MMU逐级解析子级页表,在最低级别子页表中获取待访问虚拟地址A对应的物理地址B的基址,并根据该基址以及虚拟地址中的偏移量(offset)计算物理地址B,进而寻址到物理地址B。
页表权限技术(页表在内存保护中的作用(页表的作用之二)):在一些方案中,为了实现对内核运行过程中内核相关内存的完整性保护,可以采用页表权限技术,对内核相关的内存空间(内存区域)的访问权限进行控制。页表权限技术,通过在内存对应的页表中加入该内存的访问权限(如RWX),来对漏洞利用进行防御,防止内核代码被篡改和数据段注入执行等攻击。其中,R表示读取权限,即可以对相应的内存进行读取操作。W表示写入权限,即可以对相应的内存进行写入操作。X表示执行权限,即相应内存上的指令代码可以被执行;如果没有执行权限,则对应的代码指令不能被执行。示例性的,如图2A所示,三级子页表中的访问权限数据是R、W权限,表示允许对地址B对应的内存进行读、写操作。再如图2B所示,三级子页表中的访问权限数据是R、W、X权限,表示允许对地址B对应的内存进行读、写、执行操作。
其中,内核相关的内存,可以是用于存储内核相关代码、内核相关数据的内存。比如可以包括但不限于数据段所在内存、代码段所在内存。代码段包括但不限于内核代码段、驱动代码段。内核代码段包括但不限于内核vmlinuz。
在本申请实施例中,驱动还可以称为驱动模块、驱动文件等,名称并不构成对驱动的功能的限制。驱动代码段,指的是驱动的代码段。可选的,驱动模块包括但不限于ko模块。可选的,驱动代码段包括但不限于ko代码段。
在本申请实施例中,用于映射内核相关内存的页表,可以称为内核相关页表。内核相关页表包括但不限于:用于映射内核代码段的页表、用于映射驱动代码段的页表、用于映射数据段的页表。
在一些方案中,针对不同的内存空间,可以有不同的访问权限。示例性的,如图2B所示,为了防止非法入侵者在数据段中注入非法代码,并执行非法代码,导致系统逻辑篡改,可以在三级子页表中将物理地址B对应的数据段的执行权限去除(即该部分数据仅具有读写权限),使得即便在数据段所在内存注入了非法代码,也无法执行该非法代码,进而保证系统安全。
页表映射,可以包括页表对物理地址和虚拟地址之间的映射。
可以看出,页表中的访问权限数据是较为重要的数据,其能够通过控制一段内存的读、写、执行权限,来尽可能提升该段内存的安全。
本申请实施例中,将用于存储数据段对应的物理地址,以及存储该数据段对应的访问权限的页表,称为用于映射数据段的页表,进一步的,还可简称为数据段的页表。示例性的,如图2A所示的三级子页表即为数据段的页表。
类似的,将用于映射内核代码段的页表,简称为内核代码段的页表。将用于映射驱动代码段的页表,简称为驱动代码段的页表。
页表权限优先级:是指高层级页表中的权限会覆盖低层级页表中的权限。比如,顶级页表中的权限设置为不可执行,则该顶级页表包含的各子级页表即使包含执行权限,也无法执行。示例性的,如果如图2A所示的顶级页表中地址B的权限设置为不可执行,那么,即便三级子页表中地址B对应的权限设置为可执行,后续,地址B对应内存空间中的数据也不允许执行。
在一些方案中,CPU的不同运行特权层级下,有不同的页表映射机制。可以通过不同特权层级的页表映射机制控制不同特权层级下对某些内存的访问权限。可选的,在普通权限下,内存A具有只读权限,即只允许对内存A进行读取,不允许写入,在第一特权下,内存A具有读取、写以及执行权限。示例性的,如图2A示出了普通权限下的页表映射。如图2B示出了第一特权下的页表映射。
漏洞:可以理解为可以被攻击者利用的系统或者程序代码的缺陷,可以是代码的bug,也可以是系统设计的缺陷等。
第一特权:某些情况下,攻击者可以利用漏洞(包括但不限于数组越界等漏洞),进行系统提权,即由普通权限提升到第一特权(包括但不限于root权限)。在攻击者获得第一特权后,被攻击系统基于信任等原因,不再对攻击者的诸如页表修改操作进行安全校验,使得攻击者能够通过重新建立页表或页表重映射(double-mapping)等方式篡改页表,包括但不限于修改页表中的权限数据,比如修改页表中某段内存(比如内核关联的内存)对应的读、写、执行权限,进而实现对系统内核的攻击。示例性的,攻击者在获得第一特权之后,可以绕过系统的防御机制,在图2B所示三级子页表A中的权限数据中增加执行(X)权限。如此一来,后续,攻击者可以在地址B对应的内存空间中注入恶意代码并执行该恶意代码,实现对系统内核的攻击。
其中,页表重映射,可以是对一块物理内存重新建立页表映射,相当于为该物理内存再建了一张页表。页表重映射的攻击难度很大。
页表修改,通常就是修改页表中的数据,比如修改页表中的访问权限数据。
内核入侵:在一些方式中,攻击者可以通过篡改内核代码的实现逻辑,入侵内核。在另一些方式中,攻击者通过向内核注入恶意代码,潜伏入系统,在不被管理员或者用户发现的情况下,不断窃取重要数据。在上述攻击方式中,可能对系统造成直接的破坏,或者即便不会对系统造成直接的破坏,但可以造成用户信息泄露或者财产损失等重大危害。
内核代码段的篡改:在一些攻击方式中,在获得第一特权后,攻击者可以获得对 内核代码段进行写入操作的权限,这样一来,攻击者可以通过篡改内核代码段中的内核代码,篡改系统的实现逻辑,实现攻击目的。
数据段注入执行:在一些攻击方式中,在获得第一特权后,攻击者可以获得对数据段进行写入、执行操作的权限,攻击者可以在数据段中注入恶意代码,并执行该恶意代码,以实现攻击目的。
为了防止上述内核入侵或系统潜伏问题,本申请实施例提供一种内核保护方法,考虑到页表中存储有内核相关内存的一些访问权限,因此,可以通过保护页表来保护这些内核相关内存,进而实现对系统内核的保护。
在本申请的技术方案中,数据段、代码段不同时具有写入权限和执行权限。以数据段为例,若允许对数据段进行写入操作,则不允许对数据段进行执行操作,或者说,禁止对数据段添加允许执行的权限。如此一来,即便攻击者进行提权获得第一特权,其在数据段注入了恶意代码,其也会因为被禁止为数据段添加执行权限,而无法运行注入的恶意代码。如此,可以尽可能的阻止恶意代码被执行。
以代码段为例,若允许对代码段进行执行操作,则不允许对代码段进行写入操作,或者,禁止对代码段添加允许写入的权限。如此一来,由于不允许在第一特权下对代码段进行写入操作,因此,可尽可能避免内核代码遭受篡改。
本申请实施例提供的内核保护方法可应用于需要进行内核保护的系统中。如图3示出了一种示例性的系统架构,该系统包括一个或多个电子设备。电子设备可以云侧设备或端侧设备。云侧设备包括但不限于是服务器(比如图3所示服务器300)。端侧设备包括但不限于是终端(比如笔记本电脑100、台式电脑200)。当然,图3仅是举例,本申请实施例对电子设备的具体形态不进行限制。其中,本申请实施例涉及的电子设备可以是手机、电脑等运行有内核,并需要进行内核保护的设备。
参见图4,为本申请实施例提供的电子设备的一种可能的结构示意图。例如,该设备可以是终端,或者终端中的部件,或服务器,或服务器中的部件。在一种可能的实现方式中,电子设备可以包括存储器201、处理器202、通信器件203和总线204。存储器201、处理器202以及通信器件203通过总线204相互连接。
其中,存储器201可用于存储数据、软件程序以及模块,主要包括存储程序区和存储数据区,存储程序区可存储操作系统、至少一个功能所需的应用程序等,存储数据区可存储该装置在使用时所创建的数据等。在本申请实施例中,上述操作系统可以包括通用操作系统(比如,
Figure PCTCN2022135001-appb-000001
系统)或安全操作系统。安全操作系统比如可以是可信执行环境操作系统(trusted execution environment operating system,TEE OS)。上述至少一个功能所需的应用程序可以包括基于各种操作系统的内核的程序、驱动模块的程序。上述存储数据区存储的数据可以包括但不限于内核的数据。
在本申请的一些实施例中,处理器(比如CPU)中可包括MMU,或者,MMU可以为独立于CPU之外的功能模块。
在一些可行的实施例中,存储器201可以是软盘,硬盘如内置硬盘和移动硬盘,磁盘,光盘,磁光盘如只读光盘(compact disc read-only memory,CD_ROM)、数字视盘(digital video disc read-only memory,DVD_ROM),非易失性存储设备如随机存取存储器(random access memory,RAM)、只读存储器(read-only memory, ROM)、可编程只读存储器(programmable read-only memory,PROM)、可擦写可编程只读存储器(erasable programmable read-only memory,EPROM)、电可擦写可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、闪存、或者技术领域内所公知的任意其他形式的存储介质。
处理器202用于对设备的动作进行控制管理,比如,通过运行或执行存储在存储器201内的软件程序和/或模块,以及调用存储在存储器201内的数据,执行设备的各种功能和处理数据。其中,处理器202可以包括安全元件(Secure element,SE)、中央处理单元、数字信号处理器、人工智能(artificial intelligence,AI)处理器、微处理器、或微控制器等的至少一个。
可选的,处理器还选择性包括专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件加速器或者其任意组合。可选的,处理器也可以是实现计算功能的组合。进一步的,在本申请实施例中,处理器202可选择性包括其他硬件加速器,该组合可用于支持设备执行本申请中内核保护的功能,其中,内核保护方法的具体过程可以参见下述方法实施例中的描述。
通信器件203用于支持电子设备与其他设备进行通信。通信器件203可以是接收器、接收电路、发送器、发送电路、具有收发功能的收发器、收发电路等。比如,通信器件203是基于近场通信(near field communica-tion,NFC)的收发电路,或蓝牙等其他模式的近距离通信器件。
总线204可以是外设部件互连标准(peripheral component interconnect,PCI)总线,或者扩展工业标准结构(extended industry standard architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
在本申请实施例的一些实现方式中,处理器202本身可以视为一个用于实现内核保护功能的装置(可简称为内核保护装置),其可作为运算核心实现内核保护功能。或者,处理器202可位于一个内核保护装置,其与内核保护装置中的其他部件可共同实现内核保护功能。该内核保护装置可以是一个或多个芯片、芯片组,或可以选择性运行软件来工作。
图4仅是本申请实施例的电子设备的一种示例性结构。在另一些实施例中,电子设备还可以有更多或更少的组件,或具有其他组件布局方式,或将图4中的某些组件进行拆分,或将图4所示某些组件集成。本申请实施例对电子设备的实现形态不做限制。
图5为本申请实施例提供的一种处理器202上运行的软件的架构示意图。其中,处理器202,可用于运行用户应用程序301、代理模块302以及控制模块303。其中,处理器202具有不同的运行权限,各类应用程序在各自对应的运行权限下运行。
作为一种可能的实现方式,用户应用程序301通常运行在用户权限(或称普通权限)。用户应用程序301可以通过调用内核提供的访问硬件和资源的接口,来访问硬件和相应资源。通常,在用户权限下,用户应用程序301能够访问的硬件和资源有限,即只能访问用户权限所允许访问的硬件和资源,以降低用户应用程序301对系统的篡改和攻击风险。
内核运行在第一特权下,第一特权比用户权限高。因此,在第一特权下运行的内核能够比用户权限下运行的用户应用程序301访问更多的硬件和资源。需要说明的是,某些情况下,用户应用程序301也可以陷入第一特权运行。比如,在执行系统调用时,用户应用程序301可以陷入第一特权中运行。
代理模块302,运行在第一特权下,第一特权的权限高于用户权限。作为一种可能的实现方式,代理模块302,包括初始化子模块302a、监测子模块302b、开关子模块302c。
其中,在内核初始化过程中,代理模块中的初始化子模块302a,可以与控制模块303中的初始化子模块303a配合,完成内核初始化中的一些配置。可选的,在内核初始化过程中,初始化子模块302a可以将内核的相关信息发送给初始化子模块303a。可选的,内核的相关信息包括但不限于如下任一项或多项信息:重要页表的信息、重要寄存器的信息。
在内核运行过程中,监测子模块302b,可以与控制模块中的监测子模块303b配合,实现监测功能。监测功能,包括但不限于如下任一项或多项:检测被修改的页表是否属于需要被监测的页表(即重要页表)。如果被修改的页表不是重要页表,则可以按开源逻辑处理,如果被修改的页表是重要页表,则可以将相关的页表修改命令(比如页表修改请求)转发给监测子模块303b。其中,页表修改命令用于修改目标页表中的访问权限数据。目标页表是内核相关的页表。
内核相关的页表包括如下任一种或多种页表:用于映射内核代码段的页表,用于映射驱动代码段的页表,用于映射数据段的页表。
比如,在检测到页表修改命令时,将相应的页表修改命令转发给控制模块303中的监测子模块303b,由监测子模块303b根据页表修改命令判断是否进行页表修改操作,若页表修改命令合法,则修改相应页表,若页表修改命令不合法,则拒绝修改相应页表。
在内核运行过程中,开关子模块302c,可以在检测到内核加载(插入)驱动时,向控制模块303中的开关子模块303c发送监测功能关闭命令。监测功能关闭命令用于指示/请求/通知控制模块303停止对驱动代码段相关的页表修改命令的合法性监测。如此,当接收到对驱动代码段相关的页表修改命令(比如修改页表中ko模块的访问权限的命令)之后,控制模块303(比如控制模块303中的监测子模块303b)不再对该页表修改命令的合法性进行判断,而是直接根据该页表修改命令对相应页表进行修改。
开关子模块302c,用于在内核加载驱动等模块时,向控制模块303下发相关命令,以使得系统支持插入驱动等模块。相关命令比如可以为指示监测功能关闭的命令。
开关子模块302c,还可以在驱动插入完成时,向控制模块303中的开关子模块303c下发监测功能恢复命令。监测功能恢复命令用于指示/请求/通知控制模块303恢复对驱动代码段的监测功能。
控制模块303,运行在第二特权下,第二特权的权限高于第一特权。作为一种可能的实现方式,控制模块303,包括初始化子模块303a、监测子模块303b、开关子 模块303c。
其中,初始化子模块303a,可以从初始化子模块302a接收内核的相关信息,并根据内核的相关信息执行初始化。
监测子模块303b,可以从监测子模块302b接收页表修改命令,并判断该页表修改命令是否合法,若合法,则根据页表修改命令对相应页表修改,若非法,则拒绝修改相应页表。
监测子模块303b,还可以在内核初始化完成后,检测内核相关的寄存器。当检测到篡改寄存器的操作后,向代理模块上报告警。监测子模块303b检测内核相关的寄存器,可以是周期性检测,或者按照策略检测。比如,当检测到某些特定事件时,触发检测内核相关寄存器。本申请实施例对监测子模块303b的检测时机以及检测条件不做限制。
开关子模块303c,可以从开关子模块302c接收监测功能关闭命令,并根据监测功能关闭命令,停止对驱动代码段相关的页表修改命令的合法性监测。还可以从开关子模块302c接收监测功能恢复命令,并根据监测功能恢复命令,恢复对驱动代码段相关的页表修改命令的合法性监测。为了进一步提升系统的安全性,开关子模块303c可以判断来自开关子模块302c的监测功能关闭命令是否合法。作为一种可能的实现方式,开关子模块303c判断该监测功能关闭命令的地址是否位于内核代码段区域内,若监测功能关闭命令的地址位于内核代码段内,则确定监测功能关闭命令合法,反之,若监测功能关闭命令的地址没有位于内核代码段内,则确定监测功能关闭命令非法。
可选的,先启动控制模块303,再启动代理模块302,即控制模块303先于代理模块302工作,如此,能够尽可能提升控制模块303的工作可靠性,使得控制模块303能够接收来自代理模块302的数据,并根据这些数据对页表的修改进行控制、管理。
可选的,代理模块302的合法性、ko模块、内核段等的合法性,由安全启动保障。如此,能够确保代理模块302、ko模块在硬盘上不被篡改或者替换。
可选的,内核代码段区域的完整性通过安全启动保障,内核加载完成后,该专利方案已经开始起保护作用。所以,认为内核代码段区域的命令为合法命令。
控制模块通常位于安全度很高的环境中,比如ARM的安全世界中,有硬件/固件来保障其安全性,几乎不会受到软件攻击的影响。
在一些实施例中,代理模块还可称为代理程序或其他名称,但这不构成对代理模块的功能的限制。类似的,控制模块还可以称为控制程序或其他名称,但这并不构成对控制模块的功能的限制。
图5仅是本申请实施例的电子设备的一种示例性软件架构。在另一些实施例中,电子设备还可以有更多或更少的模块,或具有其他模块布局方式,或将图5中的某些模块进行拆分,或将图5所示某些模块集成。本申请实施例对电子设备上运行的软件的具体形态、布局不做限制。
本申请的说明书以及附图中的术语“第一”和“第二”等是用于区别不同的对象,或者用于区别对同一对象的不同处理。“第一”、“第二”等字样可以对功能和 作用基本相同的相同项或相似项进行区分。例如,第一设备和第二设备仅仅是为了区分不同的设备,并不对其先后顺序进行限定。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
“至少一个”是指一个或者多个,
“多个”是指两个或两个以上。
“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
此外,本申请的描述中所提到的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括其他没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
本申请实施例中,在提及某个消息或指令用于xx时,指的是该消息或指令等可以用于实现某个功能(比如指示修改页表),但并不局限于专门用于实现该功能。
本申请描述的系统架构及业务场景是为了更加清楚的说明本申请的技术方案,并不构成对于本申请提供的技术方案的限定,本领域普通技术人员可知,随着系统架构的演变和新业务场景的出现,本申请提供的技术方案对于类似的技术问题,同样适用。
如下结合方法实施例来说明上述各软件、硬件模块的工作原理。
本申请实施例提供一种内核保护方法,适用于内核初始化流程。如图6示出了一种内核初始化的流程,该内核初始化流程包括如下步骤:
S101、代理模块确认控制模块是否正常运行。
本申请实施例中,控制模块运行在高于第一特权的第二特权下。控制模块用于判断相应页表修改命令是否合法,并在页表修改命令合法时,进行页表修改操作。因此,本申请实施例的技术方案能够正常实施的前提是确保控制模块正常工作。
作为一种可能的实现方式,S101可实现为:S101a、在内核初始化过程中,代理模块向控制模块发送第一消息;S101b、控制模块向代理模块发送第二消息。其中,第一消息用于确认控制模块是否正常运行。第二消息用于指示控制模块正常运行。
可以理解,若代理模块接收到来自控制模块的第二消息,则说明控制模块正常运行,那么,继续执行本申请实施例的后续流程,比如继续执行下述步骤S102,S103,在第一特权下进行页表映射。
反之,若代理模块没有接收到来自控制模块的第二消息,或第二消息错误(即S101b的执行出现问题),则意味着控制模块没有正常运行,那么,代理模块将退出工作,本申请实施例的后续步骤不再执行,内核按照现有技术的流程执行相应操作。
S102、代理模块开辟第一物理内存。
其中,第一物理内存用于存储用于映射重要内存的页表。用于映射重要内存的页表可称为重要页表。重要内存是保证内核正常运行的相关内存,这些重要内存对内核安全影响程度较大。内核运行的相关内存包括但不限于数据段所在内存,代码段所在内存。其中,代码段包括但不限于内核代码段和驱动代码段。在下述实施例中,将使用专用页表池的概念代替第一物理内存。
相应的,重要页表包括但不限于部分数据段的页表、内核代码段的页表、驱动代码段的页表,这些页表可称为第二页表。或者,第二页表是内核相关的页表。
在本申请实施例中,重要页表还可以包括用于映射专用页表池(rop-pool)的页表,该类页表可称为第一页表。第一页表存储有专用页表池的物理地址的基址,还存储有专用页表池对应的读、写、执行权限。
作为一种可能的实现方式,控制模块正常运行的情况下,在内核启动(即内核初始化)初期,代理模块开辟一段物理内存(即第一物理内存)作为专用页表池,专用页表池可以用来存储多个上述重要页表。
S103、代理模块创建重要页表,并将重要页表存入专用页表池。
示例性的,如图7A示例性的示出了代理模块创建的专用页表池。如图7A所示,在为专用页表池创建相关页表的过程中,代理模块将一些重要页表(比如部分数据段的页表、内核代码段的页表、驱动代码段的页表、专用页表池的页表)均存入该专用页表池中。其中,在专用页表池的页表中存储有整个专用页表池的物理地址的基址,以及存储有整个专用页表池的读、写、执行权限。
本申请实施例中,将上述专用页表池存储第一页表(即映射该专用页表池这段物理内存的页表)的机制,称为自身映射(self-mapping)机制。如此,能够实现页表映射该页表所在物理内存(即专用页表池)的功能,进而通过该页表控制专用页表池,以控制专用页表池中的全部重要页表。仍以图7A所示,将用于映射专用页表池的页表A存储在该专用页表池中,页表A是映射整个专用页表池这段物理内存的页表,如此,可以通过页表A所在的物理内存控制整块专用页表池的物理内存,即可以通过页表A统一控制专用页表池这段内存上存储的重要页表(包括但不限于代码段和数据段)的读、写、执行权限。如图7A所示的自身映射方案中,将页表A存储在专用页表池的物理内存中,能够实现页表A对自己的访问权限的控制。进而,只有通过更高的CPU权限才能去除页表A的写入权限,也就是通过更高的CPU权限(比如第二特权)才能去除专用页表池整段物理内存的写入权限,而第一特权无法恢复页表A的写入权限。
需要说明的是,在内核初始化的初期,由于存在向内核相关内存中加载数据、代码等操作,就需要内核相关内存有相应的写入、执行权限。示例性的,图7A示出了内核初始化的初期,重要页表中各页表的权限数据。其中,驱动代码段的页表B中的权限为读、写、执行,以保证在内核初始化初期,能够向驱动代码段所在内存中插 入并执行驱动代码。内核代码段的页表C中的权限为读、写、执行,能够保证在内核初始化初期,将内核代码加载到内核代码段所在内存,并执行该载入的内核代码。数据段的页表D中的权限为读、写,能够保证在内核初始化初期,向数据段所在内存写入相应数据。
图7A还示出了内核初始化的初期,重要页表中的第一页表,即页表A中的访问权限。可以看出,页表A的访问权限为可读写。
上述S102、S103,是内核初始化初期,第一特权对应的页表映射过程。在该页表映射过程中,在各个重要页表中写入相应的访问权限数据、地址映射数据。
S104、第二特权下的页表映射过程。
在一些实施例中,在内核初始化初期,第二特权下也有相应页表映射机制。可选的,由控制模块实现第二特权下的页表映射。可选的,第二特权下不存在自身映射,专用页表池的页表不再存储在专用页表池中。示例性的,图8A示出了第二特权下的页表映射机制,第二特权下,控制模块为专用页表池创建新的页表A1,该专用页表池的页表A1不再存储在专用页表池中。
值得注意的是,第二特权下,专用页表池的页表A1中的访问权限数据需要包括写入(W)权限,以便于后续控制模块能够在页表修改命令合法时,对专用页表池中的页表进行修改。
可选的,并不限制步骤S104的执行时机。比如S104可以在S101之后执行,或者在其他时机执行。
本申请实施例中,为了提升内核相关内存的安全性,可以在内核相关内存中相关数据、代码加载完成之后,专用页表池不再需要写入的访问权限时,对第一特权下专用页表池中的写入权限进行去除。
上文已提到,由于专用页表池对应的页表A中的访问权限为只读,因此,第一特权下无法对专用页表池进行写入操作,也就无法修改专用页表池中的各重要页表,即无法在第一特权下对重要页表中的写入或执行权限进行去除。作为一种可能的实现方式,为了对第一特权下专用页表池中的写入权限进行去除,在内核初始化后期,由运行在第二特权的控制模块对专用页表池的页表A进行修改,也就是,在第二权限下对页表A中的写入权限进行去除。其中,第二特权高于第一特权。后续,在内核运行阶段,即便攻击者获得第一特权,也无法在第一特权下篡改专用页表池中的数据(包括无法在第一特权下篡改页表AD中的访问权限数据)。下述步骤S105-S108为控制模块修改页表A的具体实现。
S105、代理模块向控制模块发送初始化信息。
可选的,初始化信息包括但不限于如下任一项或多项信息:内核代码段所在内存的地址(比如内核代码段的起止地址)、驱动代码段所在内存的地址(比如驱动代码段的起止地址)、数据段所在内存的地址、专用页表池所在内存的地址信息(比如专用页表池的起止地址)、内核相关的重要寄存器的地址。
可选的,专用页表池所在内存的地址信息包括:专用页表池中各页表所在内存的地址。
S106、控制模块存储初始化信息。
后续,在内核运行过程中,控制模块可以根据初始化信息,进行合法性判断和周期性检测。
其中,控制模块可以对专用页表池内的页表修改进行合法性判断。周期性检测,用于检测非页表控制的存储空间(比如寄存器)的安全性。合法性判断、周期性检测的具体实现方式可参见下述实施例。
作为一种可能的实现方式,控制模块可以计算寄存器的哈希(hash)值,并根据寄存器的哈希值判断寄存器的安全性。
可选的,控制模块还可以计算代码段的哈希值,并存储代码段的哈希值。
可选的,一个寄存器的通常就4/8字节,数据量不大。控制模块也可以直接存储寄存器的数值。
S107、代理模块向控制模块发送第三消息。
可选的,第三消息携带专用页表池的物理地址。
其中,第三消息用于通知或请求或指示控制模块去除专用页表池在第一特权下的写入权限。意味着,后续,在第一特权下,不允许对专用页表池进行写入操作,从而能够提升第一特权下的系统安全性。
S108、控制模块根据第三消息,去除专用页表池在第一特权下的写入权限。
示例性的,如图7B,在内核初始化完成后,比如内核初始化后期,控制模块将页表A的访问权限数据由权限WR修改为权限R,即去除页表A中的写入权限,页表A(第一页表的一个示例)不包括写入权限。意味着,后续在第一特权(比如内核特权)下,专用页表池的访问权限为只读,无法对专用页表池上的内容进行修改,进而无法在第一特权下对重要页表B-D中的访问权限数据进行修改。如此,内核运行过程中,阻止其后续被恢复。通过上述各步骤的操作,在内核态没有改写专用页表池的权限,即无法恢复专用页表池的写权限,从而保证了其中的内核页表数据无法被修改,能够提升系统内核的安全性。
可选的,本申请实施例中,如图7B,在内核初始化后期,还可以对其他重要页表的写入权限进行修改。比如,去除驱动代码段、内核代码段的写入权限,去除数据段的执行权限。
可选的,本申请实施例中,对于某一段物理内存,可以设置该段物理内存不同时具有写入、执行权限。
作为一种可能的实现方式,初始化子模块记录专用页表池中的访问权限数值,确保一块物理内存不同时具有X和W权限,即设置过X权限后,不再允许设置W权限。如此,能够阻止攻击者先设置RW权限,修改代码,再设置RX权限,从而实现攻击。
可选的,第二特权的页表映射机制与第一特权的页表映射机制相互独立。第一特权、第二特权有自己独立的页表,即独立权限。比如,对于映射同一物理地址的页表,可以存储在在不同区域。示例性的,如图8A所示,第二特权下,控制模块可以为专用页表池这块内存重新创建页表A1,并将该指向专用页表池的页表A1存储在专用页表池之外。也即,第二特权下,页表映射机制可以不存在自身映射。与之相比,第一特权下,用于映射专用页表池的页表为页表A,页表A存储在专用页表池 内。
作为一种可能的实现方式,如图8A所示,页表A1(第二特权下的页表)中的访问权限包括读、写。也就是,第二特权下,页表A1(第一页表的一个示例)包括写入权限。意味着,后续,可以对专用页表池这块内存进行写入操作,以便后续在检测到合法的页表修改命令的情况下,在第二特权下对专用页表池中的页表进行修改,以实现或修复系统的功能。
作为一种可能的实现方式,如图8A所示,第二特权下,专用页表池的页表A1的访问权限包括读权限。如此,在某些情况下,可以在第二特权下完成对专用页表池的修改。
可选的,为了降低系统风险,在内核初始化后期,控制模块可以将代码段的写入权限去除,得到如图8B所示的页表B1、页表C1。可选的,为了降低系统风险,在内核初始化后期,控制模块可以将数据段的执行权限去除,得到如图8B所示的页表D1。
本申请实施例还提供一种内核保护方法,适用于内核运行过程中。如下分场景对内核运行过程中的内核保护方法进行介绍。
场景一:修改页表场景
在内核运行过程中,内核可能检测到修改页表的操作,修改页表的操作可能来自攻击者或合法用户。比如,攻击者为了篡改内核代码而修改页表,或者,合法用户为了加载一些功能模块(比如KO驱动模块)而修改页表。为了避免攻击者通过修改页表攻击系统,本申请实施例提供一种内核保护方法,在检测到第一特权下的页表修改操作时,需要对页表修改操作是否合法进行判断,只有在确定页表修改操作合法时,才执行对相应页表的修改。具体的,如图9所示,该内核保护的方法包括如下步骤:
S201、代理模块检测到页表修改命令。
其中,代理模块运行在第一特权下。页表修改命令用于指示修改目标页表(或称待修改页表)。修改目标页表,包括但不限于修改目标页表中目标内存对应的访问权限数据。示例性的,如图8B所示,代理模块检测到修改页表B1的页表修改命令。该页表修改命令指示在页表B1中添加写入权限。
S202、代理模块判断目标内存对应的目标页表(待修改页表)是否属于专用页表池,若是,则执行下述步骤S203,若否,则执行下述步骤S204。
作为一种可能的实现方式,代理模块判断目标页表的存储地址,若目标页表的存储地址在专用页表池的地址范围内,则确定目标页表属于专用页表池,否则,确定目标页表不再专用页表池内。
S203、代理模块向控制模块发送页表修改命令。
可选的,页表修改命令携带待修改访问权限的物理内存的地址信息。
上文已指出,运行在第一特权(比如内核特权)下的代理模块无法直接修改重要页表,修改重要页表的操作交由运行在第二特权下的控制模块完成。具体的,作为一种可能的实现方式,内核运行过程中,发生页表修改时,代理模块会判断待修改的页表是否在专用页表池内。在一些情况下,若待修改页表属于专用页表池,则意味着待修改页表是重要页表(对内核安全的影响程度较大),那么,为了保障内核的安全性, 代理模块向运行在第二特权的控制模块下发页表修改命令,由具有更高特权的控制模块判断是否修改相应重要页表。
示例性的,如图8B所示,代理模块检测到对页表B1的页表修改命令,并确定页表B1存储在专用页表池内(属于重要页表)。那么,为了提升内核的安全性,代理模块向控制模块转发该页表修改命令,由控制模块判断该页表修改命令是否合法。
S204、代理模块修改目标页表。
在另一些情况下,内核运行过程中,代理模块检测到页表修改命令之后,若确定待修改页表不属于专用页表池,则意味着待修改页表不是重要页表,即便修改该待修改页表,通常也不会对系统造成损害,那么,代理模块可以按照现有技术的实现逻辑,直接对待修改页表进行修改。示例性的,代理模块修改目标页表中的访问权限数据。
S205、控制模块判断页表修改命令是否合法。若合法,则执行下述步骤S206,若非法,则执行下述步骤S207。
S206、控制模块根据页表修改命令修改目标页表。
在一些情况下,控制模块从代理模块接收页表修改命令之后,若确定页表修改命令是合法命令,则意味着该修改重要页表的命令通常来自合法用户的操作,通常不会对系统造成攻击风险,那么,控制模块根据页表修命令对目标页表进行修改,以实现系统的相应功能。
示例性的,在需要为内核加载热补丁,以修复系统功能的场景中,控制模块从代理模块接收页表修改命令之后,确定该命令是向内核代码中加载热补丁的合法命令(比如insn命令),则控制模块可以根据该命令,直接修改内核代码段所在物理地址中的内容,比如直接在内核代码段中修改热补丁函数钩子。
在合法性判断部分,考虑到insn只能内核调用,被恶意调用难度比较大,因此,赋予insn命令较高的权限,控制模块在确定检测到insn命令之后,可以直接修改相应物理内存中的内容,而无需先修改相应页表。
可选的,控制模块向代理模块回复修改目标页表的响应。
S207、控制模块拒绝修改目标页表。
在一些情况下,控制模块从代理模块接收页表修改命令之后,若确定该页表修改命令不是合法命令,则意味着该修改重要页表的命令通常来自非法用户的操作,那么,控制模块拒绝修改目标页表。
S208、控制模块向代理模块发送拒绝修改响应。
可选的,若确定拒绝修改相应重要页表,则控制模块可以向代理模块发送拒绝修改响应。
如下对控制模块判断页表修改命令是否合法的具体实现做介绍。
作为一种可能的实现方式,内核代码段的合法性可以由安全启动过程保障,这就意味着,内核代码段的合法性较高,相应的,来自内核代码段的命令被视为合法命令。可选的,控制模块中的所有子模块会判断代理模块下发的命令的地址,若命令不属于内核代码段,则拒绝该命令,以避免来自非内核代码段的命令的攻击。
也就是说,本申请实施例中,只要来自内核代码段的命令才被视为合法命令。其 他来自非内核代码段的命令,即便经过安全启动中的ko签名校验,也视为非法命令。
作为一种可能的实现方式,控制模块从代理模块接收页表修改命令之后,若待修改页表所映射的地址在内核代码段对应的地址范围内,则说明待修改页表是用于映射内核代码段的页表。此种情况下,为了防止非法用户通过篡改页表进而篡改内核代码,只有该页表修改命令是预设命令时,控制模块才确定该页表修改命令是合法命令。也就是说,内核代码段的访问权限只能通过预设命令进行修改。
可选的,预设命令包括但不限于insn。预设命令还可以包括用于修改内核代码段的页表属性的命令。其中,insn不修改专用页表池中内核代码段页表属性,可以直接通过第二权限修改内核代码段中的内容,此种情况修改的内核代码段内容较少,通常就是个别字节。
在一些示例中,insn命令用于加载热补丁。后续,可能有新的命令可用于修改内核代码段的页表,对此本申请实施例不做限制。
示例性的,控制模块从代理模块接收insn命令,该命令指示需要修改图8C所示的页表C1,为向地址C这块物理内存(内核代码段所在内存)添加写入权限。若该insn命令来自内核代码段,且是预设命令,则控制模块确定该insn命令合法,并可以直接修改内核代码段的内容,无需额外修改页表C1。
再示例性的,控制模块从代理模块接收页表修改命令,该命令指示需要修改图8B所示的页表C1,为地址C这块物理内存(内核代码段所在内存)添加写入权限。如果该页表修改命令是insn之外的其他命令,则控制模块将该页表修改命令视为非法命令,拒绝修改页表C1,以免因修改页表C1导致系统遭受攻击。
作为一种可能的实现方式,根据从代理模块接收的页表修改命令,若待修改页表所映射的内存地址是专用页表池本身,则控制程序确定页表修改命令是非法命令,相应的,不允许修改页表。示例性的,控制模块从代理模块接收页表修改命令,该命令指示需要修改图8A所示地址A对应物理内存的访问权限。由于地址A对应的物理内存为专用页表池所在物理内存。那么,控制模块将该页表修改命令视为非法命令,不予执行。
作为一种可能的实现方式,若根据页表修改命令,待修改页表所映射的地址在数据段地址范围内,则说明待修改页表是用于映射数据段的页表。那么,为了避免数据段注入执行以及其他类似攻击,控制模块不允许数据段同时具有写入权限和执行权限。即,一旦检测到能够致使数据段同时具有写入权限和执行权限的页表修改命令,控制模块将该页表修改命令视为非法命令。示例性的,在一些场景中,控制模块从代理模块接收页表修改命令,该命令指示控制模块在如图8D所示的页表D1中增加执行权限,即指示为地址D对应的物理内存(数据段所在内存)添加执行权限。控制模块拒绝在页表D1中的访问权限数据中增加执行权限,以避免数据段同时具有写入和执行权限,进而能够降低系统遭受数据段注入执行攻击的风险。
作为一种可能的实现方式,若根据页表修改命令,待修改页表所映射的物理地址属于驱动代码段地址范围,则控制模块判断当前是否开启监测功能。若控制模块当前开启了监测功能,则控制模块执行合法性判断,即需要判断页表修改命令是否能够致 使驱动代码段同时具有写入和执行权限。若页表修改命令能够致使驱动代码段同时具有写入和执行权限,则控制模块将该页表修改命令视为非法命令,且不响应该页表修改命令。若页表修改命令不会致使驱动代码段同时具有写入和执行权限,则控制模块将该页表修改命令视为合法命令。
示例性的,如图8E所示,控制模块从代理模块接收页表修改命令,且该命令指示为地址B这块内存(即驱动代码段所在内存)添加写入(W)权限,即需要在页表B2中添加写入权限。如果此时控制模块开启了监测功能,则控制模块会对该页表修改命令进行合法性判断,经判断,在页表B2中添加写入权限这一页表修改操作会导致驱动代码段同时具有写入和执行权限,增加注入执行攻击的风险,因此,控制模块拒绝在页表B2中的访问权限数据中增加写入权限。
反之,若控制模块当前没有开启监测功能,则控制模块不执行合法性判断,即不对页表修改命令是否合法进行判断,而是直接将来自代理模块的页表修改命令视为合法命令,并执行页表修改命令所指示的操作,修改目标页表。
示例性的,如图8F,控制模块从代理模块接收页表修改命令A,且该命令指示为地址B这块内存(即驱动代码段所在内存)添加写入(W)权限,即需要在页表B2中添加写入权限。如果此时控制模块未开启监测功能(监测功能关闭),则控制模块不对该页表修改命令A进行合法性判断,而是直接根据该页表修改命令A,在页表B2中添加写入权限。
在进行ko插入,或者热补丁加载时,代理模块的控制子模块会通知其开关子模块向控制模块的开关子模块下发关闭监测功能命令。在ko插入流程结束,代理模块的控制子模块会通知其开关子模块向控制模块的开关子模块下发开启监测功能命令。
控制模块的开关子模块可以判断代理模块的开关子模块下发的监测功能关闭命令所在地址是否属于内核代码段,进而判断是否需要关闭监测功能。如果监测功能关闭命令位于内核代码段区域,则意味着监测功能关闭命令是合法的,即是安全的,那么,控制模块可以暂时关闭监测功能。这样一来,可以在关闭监测功能之后,根据页表修改命令对相应页表进行修改,从而具有访问相应内存的相应访问权限,支持正常的系统功能(比如支持在驱动代码段中加载ko模块)。
示例性,如图8F所示,控制模块从代理模块接收页表修改命令A,该页表修改命令A存储在内核代码段中。控制模块根据该页表修改命令A的存储地址,确定开该页表修改命令A不是由恶意程序下发的,那么,控制模块中的开关子模块可以通知监测子模块关闭监测功能,以便能够修改页表B2,以支持系统的正常功能(比如通过修改页表B2加载ko模块)。
反之,如果关闭监测命令不属于内核代码段,则无法确保页表修改命令的合法性,此种情况下,不关闭监测功能,即继续维持监测功能。示例性的,如图8E所示,控制模块从代理模块接收页表修改命令A,该页表修改命令A存储在内核代码段之外的内存X中。由于该命令来自内核代码段之外,因此不能直接确保该命令是否安全,那么,控制模块保持开启监测功能,继续对页表修改命令A的合法性进行检测。示例性的,如图8E所示,对于欲在页表B2中添加写入权限的页表修改命令A,控制模块确定该页表修改命令A能够致使驱动代码段同时具有写入和执行权限, 则不响应该页表修改命令A,即拒绝修改页表B2,以降低系统遭受注入执行攻击的风险。
控制模块的开关子模块可以判断代理模块的开关子模块下发的开启监测命令(监测功能开启命令)所在地址是否属于内核代码段,进而判断是否需要开启监测功能。
S209、代理模块输出告警信息。
可选的,代理模块从控制模块接收拒绝修改响应之后,可以输出告警信息,以提示用户当前可能存在非法的内核入侵操作,用户可以据此告警信息对系统进行检测和排查。或者,若在一段时间内,代理模块没有从控制模块接收确认消息(用于确认对相应重要页表进行修改),则代理模块可以输出告警信息。
作为一种可能的实现方式,内核中有专用于记录告警信息的日志,代理模块将告警信息记录到该日志中。
S210、控制模块检测针对重要寄存器的相关操作。
可选的,重要寄存器包括但不限于:页表基址寄存器,系统控制寄存器等。
针对重要寄存器的相关操作,包括但不限于:对重要寄存器的异常变更操作。
作为一种可能的实现方式,初始化子模块在内核初始化阶段将寄存器的数值和内核代码段计算出来的hash值作为基准值进行存储,用于后续的度量比较。
S211、在检测到对重要寄存器的异常变更操作时,控制模块向代理模块发送告警信息。
可选的,内核运行过程中,对于页表机制的监测盲区,比如一些重要寄存器,控制模块可以进行周期性或响应于特定事件度量,在检测到异常变更重要寄存器时,控制模块向代理模块发送告警信息。代理模块可以通过显示驱动显示该告警信息,以提示用户当前系统可能存在风险。
可选的,度量周期的具体数值,可根据实际情况进行调整,或者,度量周期可以根据CPU的两种特权之间切换的频率确定。本申请实施例度量周期的具体设置方式以及具体数值,不做限制。
在另一些实施例中,控制模块还可以对专用页表池、内核代码段、驱动代码段、数据段、等进行周期性度量或响应于事件的度量,并进行相应的操作。
场景二:新建页表场景
内核运行过程中,系统有时会根据需求创建新的页表。在本申请实施例中,当检测到开辟大内存需要创建新页表时,会判断待创建的目标页表是否属于重要页表。如果待创建的目标页表属于重要页表,通常为高层级页表,则由控制模块创建该目标页表,并将目标页表加入专用页表池,以便后续对重要页表进行统一管理。反之,若待创建的目标页表不属于重要页表,则按照现有技术,在内核中创建目标页表。具体的,如图10所示,该方法可包括:
S301、代理模块检测到页表创建命令。
其中,页表创建命令用于创建目标页表。
S302、代理模块判断目标页表是否属于重要页表。若是,则执行如下步骤S303,若否,则执行步骤S304。
S303、代理模块向控制模块发送页表创建命令。
S304、代理模块创建目标页表。
S305、控制模块根据页表创建命令,创建目标页表,并将目标页表存储在专用页表池中。
场景三:重映射页表场景
如图11所示,该方法可包括:
S401、代理模块检测到页表重映射命令。
其中,页表重映射命令用于重映射目标页表。
S402、代理模块判断被映射的物理地址是否属于重要页表所映射的物理地址。若是,则执行如下步骤S403,若否,则执行步骤S404。
S403、代理模块的监控子模块拒绝执行重映射命令并输出告警。
S404、按开源逻辑执行重映射。
上文介绍了开关子模块的工作原理,如下结合举例来说明开关子模块、监测子模块之间配合,实现驱动代码段保护的流程。如图12所示,该方法包括:
S501、内核对ko模块进行签名校验,且校验通过。
其中,签名校验由安全启动完成,会触发代理模块的开关子模块执行S502。
示例性的,安全启动开启过程中会对ko模块进行签名校验,校验通过则继续加载ko,会触发开关子模块工作;如果校验不通过则终止ko加载流程,不会触发开关子模块工作。如果安全启动不开启,则不会对ko模块的签名进行校验,会直接加载ko,并触发开关子模块。所以,开关子模块功能的安全性由安全启动保障。
S502、代理模块的开关子模块向控制模块的开关子模块发送监测功能关闭命令。
S503、控制模块的开关子模块向监测子模块发送监测功能关闭命令,用于关闭检测功能。
S504、响应于监测功能关闭命令,控制模块的监测子模块关闭监测功能。
示例性的,开关子模块通知监测子模块关闭对驱动代码段区域的合法性判断。
S505、代理模块的监测子模块向控制模块的监测子模块发送页表修改命令。
可以理解,代理模块的开关子模块在确定ko模块的安全性之后,指示监测子模块向控制模块的监测子模块发送页表修改命令。
S506、控制模块的监测子模块修改目标页表。
作为一种可能的实现方式,控制模块的监测子模块从代理模块的监测子模块接收页表修改命令,且当前的监测功能关闭,则监测子模块不再对页表修改命令的合法性进行进一步判断,而是直接根据页表修改命令修改相应页表。
S507、控制模块的监测子模块向代理模块的开关子模块发送修改响应,用于指示目标页表已修改完成。
S508、代理模块的开关子模块插入ko模块。
S509、ko模块插入流程结束后,代理模块的开关子模块向控制模块的开关子模块发送监测功能恢复命令。
S510、控制模块的开关子模块向控制模块的监测子模块发送监测功能恢复命令,以便恢复监测功能。
S511、响应于监测功能恢复命令,控制模块的监测子模块恢复监测功能。
本申请实施例中,重要页表的定义可参考关键术语定义里的描述。重要页表的范围,在具体实现专利方案时,可灵活进行控制,如只监控内核代码段的篡改,或者数据段页表只监控高层级页表。
如图13所示为本专利在arm架构上一种实现例子。划分一段内存,将其设置为安全世界,内核都没法访问它。其访问必须是提权之后,即获得安全世界的访问权限后,才能访问。
代理程序运行在内核(kernel)中,内核运行在EL2层级的CPU权限上。
控制程序运行在负责切换安全世界和非安全世界的可信固件(arm trusted firmware,ATF)模块(BIOS固件(主板中固化的软件(但其实更接近硬件,有别于内核软件代码))的一部分)中,ATF运行在EL3层级的CPU权限上。
该结构方案适合在运行云化虚拟机(GuestOS)的主机(HostOS)上运行,虚拟机的运行不受影响。该专利方案可以通过保护主机内核内存的完整性,来防止攻击者通过虚拟机入侵主机内核,从而获取其他虚拟机中的重要数据。
如图14所示为本专利在arm架构(自上而下)上一种实现例子。
代理程序运行在虚拟机操作系统(GuestOS)的VM内核(kernel)中,VM内核运行在EL1层级的CPU权限上。
控制程序运行在主机操作系统(HostOS)的内核(kernel)中。
该结构方案适合部署在虚拟机中运行,通过主机内核来保障虚拟机VM内核的完整性。防止攻击者入侵VM内核,从而入侵主机,或者进行其他攻击活动。
如图15所示为本专利在x86_64架构上一种实现例子。
可将运行在x86_64架构下root mode下ring0特权的的主机(HostOS)kernel移到non-root mode下ring0特权运行。两个模式下分别有四种权限,root控制non-root。
代理程序运行在主机操作系统(HostOS)的内核kernel中,位于ring0的non-root mode。
控制程序运行在ring0的root mode中。
该结构方案部署在主机上运行,保障主机的内核kernel的完整性。该方案适合不运行虚拟机的场景。
该方案下仍然可以运行虚拟机,不过存在虚拟机嵌套,根据芯片具体实现不同,部分芯片可能会造成一些性能损耗。
本申请实施例的技术方案,内核特权下无法直接修改内核中关键内存权限,修改需要经过更高特权中的程序判断合法性后完成。基于本申请实施例的技术方案:可以开辟专用页表池rop-pool,并建立页表自身映射,然后往其中存入内核页表等,实现重要页表的统一管理。利用高权限来完成移除rop-pool中自身映射页表的写入权限,实现内核在页表存在映射环路的情况下,无法全部移除其写入权限的难题。
采用本申请实施例的技术方案,攻击者在获取root权限后,无法绕过现有的软件防护机制,即无法修改内核代码段映像中的内容,无法执行在数据段中注入的代码,修改系统寄存器会被检测到并产生告警。本专利方案可抵御ret2usr,ret2dir,KSMA和内核代码注入等大部分内核内存漏洞攻击。本专利方案无法阻止的攻击类型主要有 ROP/JOP类的攻击。本专利方案中可以通过周期性度量重要数据,如DMA页表映射数据等,来实现“开源页表权限技术无法防御非通过CPU侧入侵的攻击”的功能。本专利提出的是一种主动实时的防御方案,系统正常运行过程中,几乎不会陷入高权限进行页表权限修改等,所以本专利在系统运行时,可以通过控制重要页表范围,度量周期和度量内容,达到很少的性能损耗。
本申请另一些实施例提供了一种装置,该装置可以是上述电子设备(比如折叠屏手机)。该装置可以包括:存储器和一个或多个处理器。该存储器和处理器耦合。该存储器用于存储计算机程序代码,该计算机程序代码包括计算机指令。当处理器执行计算机指令时,电子设备可执行上述方法实施例中电子设备执行的各个功能或者步骤。该电子设备的结构可以参考图4所示的电子设备。
其中,该电子设备的核心结构可以表示为图16所示的结构,该核心结构可包括:处理单元1301、输入单元1302、存储单元1303、显示单元1304。
处理单元1301,可包括中央处理器(CPU)、应用处理器(Application Processor,AP)或通信处理器(Communication Processor,CP)中的至少一个。处理单元1301可执行与用户电子设备的其他元件中的至少一个的控制和/或通信相关的操作或数据处理。具体地,处理单元1301可用于根据一定的触发条件,控制主屏上显示的内容。或者根据预设规则确定屏幕上显示的内容。处理单元1301还用于将输入的指令或数据进行处理,并根据处理后的数据确定显示样式。
输入单元1302,用于获取用户输入的指令或数据,并将获取到的指令或数据传输到电子设备的其他模块。具体地说,输入单元1302的输入方式可以包括触摸、手势、接近屏幕等,也可以是语音输入。例如,输入单元可以是电子设备的屏幕,获取用户的输入操作并根据获取到的输入操作生成输入信号,将输入信号传输至处理单元1301。
存储单元1303,可包括易失性存储器和/或非易失性存储器。存储单元用于存储用户终端设备的其他模块中的至少一个相关的指令或数据,具体地说,存储单元可记录页表。
显示单元1304,可包括例如液晶显示器(LCD)、发光二极管(LED)显示器、有机发光二极管(OLED)显示器、微机电系统(MEMS)显示器或电子纸显示器。用于显示用户可观看的内容(例如,文本、图像、视频、图标、符号等)。
可选的,图16所示结构还可包括通信单元1305,用于支持电子设备与其他电子设备通信。例如,通信单元可经由无线通信或有线通信连接到网络,以与其他个人终端或网络服务器进行通信。无线通信可采用蜂窝通信协议中的至少一个,诸如,长期演进(LTE)、高级长期演进(LTE-A)、码分多址(CDMA)、宽带码分多址(WCDMA)、通用移动通信系统(UMTS)、无线宽带(WiBro)或全球移动通信系统(GSM)。无线通信可包括例如短距通信。短距通信可包括无线保真(Wi-Fi)、蓝牙、近场通信(NFC)、磁条传输(MST)或GNSS中的至少一个。
需要说明的是,本申请方法实施例中的各步骤的描述均可援引到装置对应的模块,这里不再赘述。
本申请实施例还提供一种芯片系统,如图17所示,该芯片系统包括至少一个处理器1401和至少一个接口电路1402。处理器1401和接口电路1402可通过线路互联。例如,接口电路1402可用于从其它装置(例如电子设备的存储器)接收信号。又例如,接口电路 1402可用于向其它装置(例如处理器1401)发送信号。示例性的,接口电路1402可读取存储器中存储的指令,并将该指令发送给处理器1401。当指令被处理器1401执行时,可使得电子设备执行上述实施例中的各个步骤。当然,该芯片系统还可以包含其他分立器件,本申请实施例对此不作具体限定。
本申请实施例还提供一种计算机存储介质,该计算机存储介质包括计算机指令,当计算机指令在上述电子设备上运行时,使得该电子设备执行上述方法实施例中电子设备执行的各个功能或者步骤。
本申请实施例还提供一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行上述方法实施例中电子设备执行的各个功能或者步骤。
通过以上实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (15)

  1. 一种内核保护方法,其特征在于,应用于电子设备,所述方法包括:
    工作在第一特权,并检测到页表修改命令;所述第一特权包括内核特权;所述页表修改命令用于修改目标页表中的访问权限数据;所述目标页表是内核相关的页表;所述第一特权是内核特权;
    由所述第一特权切换至第二特权,并在所述第二特权下,根据所述页表修改命令判断是否对所述目标页表进行修改;所述第二特权的权限高于所述第一特权;
    若确定对所述目标页表进行修改,则修改所述目标页表中的访问权限数据。
  2. 根据权利要求1所述的方法,其特征在于,所述内核相关的页表包括如下任一种或多种页表:用于映射内核代码段的页表,用于映射驱动代码段的页表,用于映射数据段的页表;
    根据所述页表修改命令判断是否对所述目标页表进行修改,包括:
    如果所述目标页表为用于映射内核代码段的页表,且所述页表修改命令为预设命令,则确定修改所述目标页表。
  3. 根据权利要求1或2所述的方法,其特征在于,所述方法还包括:在所述第一特权下,创建第一物理内存、第一页表以及第二页表;
    其中,所述第一页表和所述第二页表存储在所述第一物理内存中;第一页表为用于映射所述第一物理内存的页表,第二页表是内核相关的页表。
  4. 根据权利要求3所述的方法,其特征在于,所述第一特权下,所述第一物理内存的访问权限为只读。
  5. 根据权利要求3所述的方法,其特征在于,所述第一特权下,所述第一页表不包括写入权限,所述第二特权下,所述第一页表包括写入权限。
  6. 根据权利要求2所述的方法,其特征在于,所述预设命令包括insn命令。
  7. 一种内核保护装置,其特征在于,包括:
    处理单元,工作在第一特权,并检测到页表修改命令;所述第一特权包括第一特权;所述页表修改命令用于修改目标页表中的访问权限数据;所述目标页表是内核相关的页表;所述第一特权是内核特权;由所述第一特权切换至第二特权,并在所述第二特权下,根据所述页表修改命令判断是否对所述目标页表进行修改;所述第二特权的权限高于所述第一特权;若确定对所述目标页表进行修改,则修改所述目标页表中的访问权限数据。
  8. 根据权利要求7所述的装置,其特征在于,所述内核相关的页表包括如下任一种或多种页表:用于映射内核代码段的页表,用于映射驱动代码段的页表,用于映射数据段的页表;
    根据所述页表修改命令判断是否对所述目标页表进行修改,包括:
    如果所述目标页表为用于映射内核代码段的页表,且所述页表修改命令为预设命令,则确定修改所述目标页表。
  9. 根据权利要求7或8所述的装置,其特征在于,所述处理单元,还用于在所述第一特权下,创建第一物理内存、第一页表以及第二页表;
    其中,所述第一页表和所述第二页表存储在所述第一物理内存中;第一页表为用于映射所述第一物理内存的页表,第二页表是内核相关的页表。
  10. 根据权利要求9所述的装置,其特征在于,所述第一特权下,所述第一物理内存的访问权限为只读。
  11. 根据权利要求9所述的装置,其特征在于,所述第一特权下,所述第一页表不包括写入权限,所述第二特权下,所述第一页表包括写入权限。
  12. 根据权利要求8所述的装置,其特征在于,所述预设命令包括insn命令。
  13. 一种电子设备,其特征在于,包括:
    一个或多个处理器;
    存储器;
    以及一个或多个计算机程序,其中所述一个或多个计算机程序存储在所述存储器上,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行如权利要求1-6中任一项所述的方法。
  14. 一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括计算机程序或指令,当所述计算机程序或指令在计算机上运行的情况下,使得所述计算机执行如权利要求1-6中任一项所述的方法。
  15. 一种计算机程序产品,其特征在于,所述计算机程序产品包括:计算机程序或指令,当所述计算机程序或指令在计算机上运行的情况下,使得所述计算机执行如权利要求1-6中任一项所述的方法。
PCT/CN2022/135001 2021-11-30 2022-11-29 内核保护方法、装置及系统 WO2023098653A1 (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202111461175.9A CN116204884A (zh) 2021-11-30 2021-11-30 内核保护方法、装置及系统
CN202111461175.9 2021-11-30

Publications (1)

Publication Number Publication Date
WO2023098653A1 true WO2023098653A1 (zh) 2023-06-08

Family

ID=86517960

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2022/135001 WO2023098653A1 (zh) 2021-11-30 2022-11-29 内核保护方法、装置及系统

Country Status (2)

Country Link
CN (1) CN116204884A (zh)
WO (1) WO2023098653A1 (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103858129A (zh) * 2011-10-13 2014-06-11 迈克菲股份有限公司 用于在系统管理程序环境中进行内核rootkit保护的系统和方法
CN105354155A (zh) * 2015-12-03 2016-02-24 上海高性能集成电路设计中心 一种基于页表检查机制的存储器访问权限控制方法
CN108154032A (zh) * 2017-11-16 2018-06-12 中国科学院软件研究所 一种基于可信执行环境的具有内存完整性保障功能的计算机系统信任根构建方法
CN109002706A (zh) * 2018-06-08 2018-12-14 中国科学院计算技术研究所 一种基于用户级页表的进程内数据隔离保护方法和系统
CN113711182A (zh) * 2019-05-19 2021-11-26 国际商业机器公司 在操作系统内核的隔离地址空间中执行系统调用

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103858129A (zh) * 2011-10-13 2014-06-11 迈克菲股份有限公司 用于在系统管理程序环境中进行内核rootkit保护的系统和方法
CN105354155A (zh) * 2015-12-03 2016-02-24 上海高性能集成电路设计中心 一种基于页表检查机制的存储器访问权限控制方法
CN108154032A (zh) * 2017-11-16 2018-06-12 中国科学院软件研究所 一种基于可信执行环境的具有内存完整性保障功能的计算机系统信任根构建方法
CN109002706A (zh) * 2018-06-08 2018-12-14 中国科学院计算技术研究所 一种基于用户级页表的进程内数据隔离保护方法和系统
CN113711182A (zh) * 2019-05-19 2021-11-26 国际商业机器公司 在操作系统内核的隔离地址空间中执行系统调用

Also Published As

Publication number Publication date
CN116204884A (zh) 2023-06-02

Similar Documents

Publication Publication Date Title
US11514159B2 (en) Method and system for preventing and detecting security threats
EP3123311B1 (en) Malicious code protection for computer systems based on process modification
US9530001B2 (en) System and method for below-operating system trapping and securing loading of code into memory
Bugiel et al. Practical and lightweight domain isolation on android
US9117080B2 (en) Process evaluation for malware detection in virtual machines
US8689007B2 (en) Integrity protection in data processing systems
RU2390836C2 (ru) Отображение достоверности из высоконадежной среды на незащищенную среду
US9087199B2 (en) System and method for providing a secured operating system execution environment
WO2019192344A1 (zh) 基于信任区的操作系统和方法
Duflot et al. Using CPU system management mode to circumvent operating system security functions
JP4980464B2 (ja) 書込プロテクトされたメモリ管理ユニット・レジスタを備える論理デバイス
JP2014513348A (ja) 統合拡張ファームウェアインタフェース準拠計算装置内のシステムセキュリティデータベースおよびファームウェア格納部を変更する要求を処理するシステムおよび方法
US20160070906A1 (en) Generic privilege escalation prevention
US9195828B2 (en) System and method for prevention of malware attacks on data
US11403180B2 (en) Auxiliary storage device having independent recovery area, and device applied with same
WO2014021867A1 (en) Modify executable bits of system management memory page table
Ruan et al. Boot with integrity, or don’t boot
KR20200041639A (ko) 차량용 소프트웨어 업데이트 장치 및 그 제어 방법
WO2023098653A1 (zh) 内核保护方法、装置及系统
CN113448682A (zh) 一种虚拟机监控器加载方法、装置及电子设备
KR102443713B1 (ko) 차세대 융합 보안 시스템
WO2022100247A1 (zh) 一种切换执行环境的方法及其相关设备
KR102344966B1 (ko) 파일 기반 기만 기술을 이용한 공격 탐지 장치 및 방법
WO2024078159A1 (zh) 完整性度量方法及装置
CN115982699A (zh) 基于安全内存的恶意攻击防御方法、装置、设备及介质

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 22900457

Country of ref document: EP

Kind code of ref document: A1