内核数据保护KDP:防止数据损坏的一种新平台安全技术

本文主要是介绍内核数据保护KDP:防止数据损坏的一种新平台安全技术,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

0x00 前言

对于攻击者来说,随着像代码完整性(CI)、控制流防护(CFG)这样防止内存损坏的安全技术不断出现,他们开始将目光转向数据损坏这一方面。攻击者利用数据破坏技术,可以修改系统安全策略、提升特权、篡改安全证明、修改“一次初始化”数据结构等。

内核数据保护(Kernel Data Protection,KDP)是一项新技术,可以通过基于虚拟化的安全性(VBS)保护部分Windows内核和驱动程序。KDP是一组API,可以将某些内核内存标记为只读,从而防止攻击者修改受保护的内存。例如,我们已经发现有攻击者使用经过签名但易受攻击的驱动程序来攻击策略数据结构,并安装未经签名的恶意驱动程序。KDP可以通过保证策略数据结构不会被篡改的方式来缓解此类攻击。

这种保护内核内存为只读状态的概念,在Windows内核、收件箱组件、奇热安全产品甚至第三方驱动程序(例如:反作弊和数字版权管理DRM软件)之中都有重要的应用。除了该技术在安全性的重要性以及应用程序防篡改保护之外,其他优点还在于:

1、性能改进:KDP减轻了证明组件(attestation component)的负担,不再需要定期验证已经设置写保护的数据变量;

2、可靠性改进:借助KDP,可以更轻松地诊断出内核损坏问题,而这些问题不一定属于安全性漏洞。

3、可以促进驱动程序开发人员和厂商改善虚拟化安全方案的兼容性,并在生态系统中提高这些技术的采用率。

KDP使用安全核心计算机上默认支持的技术,这些技术实现了一组特定的设备要求,而这些要求将隔离最佳实践、对Windows操作系统的信任最小化等安全性应用到这些技术之中。KDP可以为敏感的系统配置数据增加另一层保护,从而增强由安全核心PC(Secured-core PC)功能提供的安全性。

在这篇文章中,我们将分享有关内核数据保护的工作原理,以及如何在Windows 10上实现的技术细节,希望能促进驱动程序开发人员和厂商充分利用这项旨在防范数据损坏攻击的安全技术。

0x01 内核数据保护:概述

在VBS环境中,常规NT内核在称为VTL0的虚拟化环境中运行,而安全内核在称为VTL1的环境中运行,后者是一个更加安全的隔离环境。有关VBS和安全内核的更多详细信息,请参考这里(https://channel9.msdn.com/Blogs/Seth-Juarez/Isolated-User-Mode-in-Windows-10-with-Dave-Probert)和这里(https://channel9.msdn.com/Blogs/Seth-Juarez/Windows-10-Virtual-Secure-Mode-with-David-Hepkin)。KDP的目标是保护Windows内核中运行的驱动程序和软件(即操作系统代码本身)不会受到数据方面的攻击。KDP分为两个部分来实现:

1、静态KDP能使内核模式下运行的软件能够静态保护其自身映像的一部分,以避免被VTL0中的任何其他实体篡改。

2、动态KDP帮助内核模式软件从“安全池”分配和释放只读内存。从池中返回的内存只能初始化一次。

由KDP管理的内存始终由安全内核(VTL1)验证,并由虚拟机管理程序(hypervisor)使用二级地址转换(SLAT)表进行保护。最终,在NT内核(VTL0)中运行的任何软件都将无法修改受保护内存的内容。

在最新版本的Windows 10 Insider Build中已经提供了动态KDP和静态KDP,并且可以使用任何类型的内存(可执行页面除外)。虚拟机管理程序保护的代码完整性(HVCI)已经为可执行页面提供了保护

这篇关于内核数据保护KDP:防止数据损坏的一种新平台安全技术的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/778973

相关文章

Redis的数据过期策略和数据淘汰策略

《Redis的数据过期策略和数据淘汰策略》本文主要介绍了Redis的数据过期策略和数据淘汰策略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录一、数据过期策略1、惰性删除2、定期删除二、数据淘汰策略1、数据淘汰策略概念2、8种数据淘汰策略

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

Python给Excel写入数据的四种方法小结

《Python给Excel写入数据的四种方法小结》本文主要介绍了Python给Excel写入数据的四种方法小结,包含openpyxl库、xlsxwriter库、pandas库和win32com库,具有... 目录1. 使用 openpyxl 库2. 使用 xlsxwriter 库3. 使用 pandas 库

SpringBoot定制JSON响应数据的实现

《SpringBoot定制JSON响应数据的实现》本文主要介绍了SpringBoot定制JSON响应数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录前言一、如何使用@jsonView这个注解?二、应用场景三、实战案例注解方式编程方式总结 前言

使用Python在Excel中创建和取消数据分组

《使用Python在Excel中创建和取消数据分组》Excel中的分组是一种通过添加层级结构将相邻行或列组织在一起的功能,当分组完成后,用户可以通过折叠或展开数据组来简化数据视图,这篇博客将介绍如何使... 目录引言使用工具python在Excel中创建行和列分组Python在Excel中创建嵌套分组Pyt

在Rust中要用Struct和Enum组织数据的原因解析

《在Rust中要用Struct和Enum组织数据的原因解析》在Rust中,Struct和Enum是组织数据的核心工具,Struct用于将相关字段封装为单一实体,便于管理和扩展,Enum用于明确定义所有... 目录为什么在Rust中要用Struct和Enum组织数据?一、使用struct组织数据:将相关字段绑

在Mysql环境下对数据进行增删改查的操作方法

《在Mysql环境下对数据进行增删改查的操作方法》本文介绍了在MySQL环境下对数据进行增删改查的基本操作,包括插入数据、修改数据、删除数据、数据查询(基本查询、连接查询、聚合函数查询、子查询)等,并... 目录一、插入数据:二、修改数据:三、删除数据:1、delete from 表名;2、truncate

redis防止短信恶意调用的实现

《redis防止短信恶意调用的实现》本文主要介绍了在场景登录或注册接口中使用短信验证码时遇到的恶意调用问题,并通过使用Redis分布式锁来解决,具有一定的参考价值,感兴趣的可以了解一下... 目录1.场景2.排查3.解决方案3.1 Redis锁实现3.2 方法调用1.场景登录或注册接口中,使用短信验证码场

Java实现Elasticsearch查询当前索引全部数据的完整代码

《Java实现Elasticsearch查询当前索引全部数据的完整代码》:本文主要介绍如何在Java中实现查询Elasticsearch索引中指定条件下的全部数据,通过设置滚动查询参数(scrol... 目录需求背景通常情况Java 实现查询 Elasticsearch 全部数据写在最后需求背景通常情况下

Java中注解与元数据示例详解

《Java中注解与元数据示例详解》Java注解和元数据是编程中重要的概念,用于描述程序元素的属性和用途,:本文主要介绍Java中注解与元数据的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参... 目录一、引言二、元数据的概念2.1 定义2.2 作用三、Java 注解的基础3.1 注解的定义3.2 内