内核数据保护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

相关文章

在Android平台上实现消息推送功能

《在Android平台上实现消息推送功能》随着移动互联网应用的飞速发展,消息推送已成为移动应用中不可或缺的功能,在Android平台上,实现消息推送涉及到服务端的消息发送、客户端的消息接收、通知渠道(... 目录一、项目概述二、相关知识介绍2.1 消息推送的基本原理2.2 Firebase Cloud Me

Python从零打造高安全密码管理器

《Python从零打造高安全密码管理器》在数字化时代,每人平均需要管理近百个账号密码,本文将带大家深入剖析一个基于Python的高安全性密码管理器实现方案,感兴趣的小伙伴可以参考一下... 目录一、前言:为什么我们需要专属密码管理器二、系统架构设计2.1 安全加密体系2.2 密码强度策略三、核心功能实现详解

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

MySQL大表数据的分区与分库分表的实现

《MySQL大表数据的分区与分库分表的实现》数据库的分区和分库分表是两种常用的技术方案,本文主要介绍了MySQL大表数据的分区与分库分表的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录1. mysql大表数据的分区1.1 什么是分区?1.2 分区的类型1.3 分区的优点1.4 分

Mysql删除几亿条数据表中的部分数据的方法实现

《Mysql删除几亿条数据表中的部分数据的方法实现》在MySQL中删除一个大表中的数据时,需要特别注意操作的性能和对系统的影响,本文主要介绍了Mysql删除几亿条数据表中的部分数据的方法实现,具有一定... 目录1、需求2、方案1. 使用 DELETE 语句分批删除2. 使用 INPLACE ALTER T

新特性抢先看! Ubuntu 25.04 Beta 发布:Linux 6.14 内核

《新特性抢先看!Ubuntu25.04Beta发布:Linux6.14内核》Canonical公司近日发布了Ubuntu25.04Beta版,这一版本被赋予了一个活泼的代号——“Plu... Canonical 昨日(3 月 27 日)放出了 Beta 版 Ubuntu 25.04 系统镜像,代号“Pluc

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1