内核数据保护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和数据库数据一致性问题上的解决方案,主要比较了先更新Redis缓存再更新数据库和先更新数据库再更新Redis缓存两种方案,文章指出,删除R... 目录一、Redis 数据库数据一致性的解决方案1.1、更新Redis缓存、删除Redis缓存的区别二

Redis事务与数据持久化方式

《Redis事务与数据持久化方式》该文档主要介绍了Redis事务和持久化机制,事务通过将多个命令打包执行,而持久化则通过快照(RDB)和追加式文件(AOF)两种方式将内存数据保存到磁盘,以防止数据丢失... 目录一、Redis 事务1.1 事务本质1.2 数据库事务与redis事务1.2.1 数据库事务1.

Linux内核之内核裁剪详解

《Linux内核之内核裁剪详解》Linux内核裁剪是通过移除不必要的功能和模块,调整配置参数来优化内核,以满足特定需求,裁剪的方法包括使用配置选项、模块化设计和优化配置参数,图形裁剪工具如makeme... 目录简介一、 裁剪的原因二、裁剪的方法三、图形裁剪工具四、操作说明五、make menuconfig

Oracle Expdp按条件导出指定表数据的方法实例

《OracleExpdp按条件导出指定表数据的方法实例》:本文主要介绍Oracle的expdp数据泵方式导出特定机构和时间范围的数据,并通过parfile文件进行条件限制和配置,文中通过代码介绍... 目录1.场景描述 2.方案分析3.实验验证 3.1 parfile文件3.2 expdp命令导出4.总结

更改docker默认数据目录的方法步骤

《更改docker默认数据目录的方法步骤》本文主要介绍了更改docker默认数据目录的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1.查看docker是否存在并停止该服务2.挂载镜像并安装rsync便于备份3.取消挂载备份和迁

不删数据还能合并磁盘? 让电脑C盘D盘合并并保留数据的技巧

《不删数据还能合并磁盘?让电脑C盘D盘合并并保留数据的技巧》在Windows操作系统中,合并C盘和D盘是一个相对复杂的任务,尤其是当你不希望删除其中的数据时,幸运的是,有几种方法可以实现这一目标且在... 在电脑生产时,制造商常为C盘分配较小的磁盘空间,以确保软件在运行过程中不会出现磁盘空间不足的问题。但在

如何安装HWE内核? Ubuntu安装hwe内核解决硬件太新的问题

《如何安装HWE内核?Ubuntu安装hwe内核解决硬件太新的问题》今天的主角就是hwe内核(hardwareenablementkernel),一般安装的Ubuntu都是初始内核,不能很好地支... 对于追求系统稳定性,又想充分利用最新硬件特性的 Ubuntu 用户来说,HWEXBQgUbdlna(Har

Java如何接收并解析HL7协议数据

《Java如何接收并解析HL7协议数据》文章主要介绍了HL7协议及其在医疗行业中的应用,详细描述了如何配置环境、接收和解析数据,以及与前端进行交互的实现方法,文章还分享了使用7Edit工具进行调试的经... 目录一、前言二、正文1、环境配置2、数据接收:HL7Monitor3、数据解析:HL7Busines

Mybatis拦截器如何实现数据权限过滤

《Mybatis拦截器如何实现数据权限过滤》本文介绍了MyBatis拦截器的使用,通过实现Interceptor接口对SQL进行处理,实现数据权限过滤功能,通过在本地线程变量中存储数据权限相关信息,并... 目录背景基础知识MyBATis 拦截器介绍代码实战总结背景现在的项目负责人去年年底离职,导致前期规

Redis KEYS查询大批量数据替代方案

《RedisKEYS查询大批量数据替代方案》在使用Redis时,KEYS命令虽然简单直接,但其全表扫描的特性在处理大规模数据时会导致性能问题,甚至可能阻塞Redis服务,本文将介绍SCAN命令、有序... 目录前言KEYS命令问题背景替代方案1.使用 SCAN 命令2. 使用有序集合(Sorted Set)