验证驱动的调用者

有很多驱动程序加载后,会在驱动程序入口函数DriverEntry中创建驱动设备,并创建符号链接,同时还会指定派遣例程。这样一来,所有用户态程序都可以通过DeviceIoControl函数,调用该驱动的派遣例程。即存在Ring3恶意调用Ring0驱动派遣例程的问题,对于这种调用Ring0程序应进行验证和过滤。

作为不够健壮的第三方驱动程序,更容易因为这种恶意调用被干扰,发生逻辑错误,甚至触发可能存在的内核漏洞。因此需要考虑驱动程序的通信对象和调用来源,在派遣例程中对此进行必要的安全验证和过滤。

验证和过滤的方法有很多,例如检查调用者进程的PEPROCESS,进程文件的MD5,等等。除此之外,还可以考虑用户态程序和驱动程序的通信加密,对于解密失败或非法通信数据的情况可以不予处理。

本文节选自《0day安全:软件漏洞分析技术(第2版)》一书。

图书详细信息:http://blog.csdn.net/broadview2006/article/details/6596921

编写安全的驱动程序之验证驱动的调用者相关推荐

  1. Android驱动(1)---Ubuntu中为Android系统上编写Linux内核驱动程序实现方法

    Ubuntu中为Android系统上编写Linux内核驱动程序实现方法 本文主要介绍在Ubuntu 上为Android系统编写Linux内核驱动程序, 这里对编写驱动程序做了详细的说明,对研究Andr ...

  2. 嵌入式Linux设备驱动程序:编写内核设备驱动程序

    嵌入式Linux设备驱动程序:编写内核设备驱动程序 Embedded Linux device drivers: Writing a kernel device driver 编写内核设备驱动程序 最 ...

  3. 怎么编写PCIe设备驱动程序

    怎么编写PCIe设备驱动程序 文章目录 怎么编写PCIe设备驱动程序 参考内核文件: 一. PCI总线设备驱动模型 二. 获得PCIe设备的资源 2.1 获得内存/IO空间 2.2 获得中断号 2.2 ...

  4. 如何编写Linux 下的 USB 键盘驱动

     如何编写Linux 下的 USB 键盘驱动 1. 指定 USB 键盘驱动所需的头文件: #include <linux/kernel.h>/*内核头文件,含有内核一些常用函数的原型定 ...

  5. 编写USB鼠标驱动程序

    编写USB鼠标驱动程序 文章目录 编写USB鼠标驱动程序 参考资料: 1. 目标 2. 编程 2.1 驱动框架 2.2 实现usb_driver 2.2.1 id_table 2.2.2 probe函 ...

  6. html编写程序常用的,html编写简洁页面表单验证程序.doc

    html编写简洁页面表单验证程序.doc html编写简洁页面表单验证程序 "-//W3C//DTD XHTML 1.0 Transitional//EN" "1/DTD ...

  7. java编写邮箱地址、邮箱验证

    一.java编写邮箱地址.邮箱验证 例如: 编写一个邮箱地址是否合法,如果合法则打印出用户名部分和该邮箱所属的网站域名,如果邮箱地址不合法则显示不合法的原因 温馨提示:邮箱地址不合法的因素: (1)邮 ...

  8. tl-wn821n linux驱动程序,tl wn821n驱动下载

    适用于TL-WN821N V4.0版本网卡的驱动程序,本驱动适用于TL-WN821N V1.0和v2.0无线网卡,增加了PSP XLink功能. 支持32位windows2k/xp/win7,也支持6 ...

  9. 编写最简单的字符设备驱动

    编写最简单的字符设备驱动 1 编写驱动代码 2 编写makefile 3 编译和加载驱动 4 编写应用程序测试驱动 参考文章: linux驱动开发第1讲:带你编写一个最简单的字符设备驱动 linux驱 ...

  10. Linux 驱动程序之字符驱动

    Linux 驱动程序之字符驱动 系统调用.内核.驱动程序的关系 主要驱动类型: -> 字符设备 ( c) -> 块设备 (b) -> 网络设备 (ifconfig) 字符设备和块设备 ...

最新文章

  1. Apache搭建多个站点方法详解
  2. error: C3861: “pcap_open”: 找不到标识符
  3. echarts x和数据对应_echarts 折线图动态x轴及数据
  4. Oracle查看死锁 .
  5. 报错:Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
  6. mediastream2使用指南(转载)
  7. java清理语句,java – 如何在不使用准备语句的情况下对SQL进行清理
  8. UI组件-UITabbarController
  9. 麒麟810处理器_何刚口中第二颗7nm处理器麒麟810曝光:将搭载自研NPU
  10. 苹果官宣!iOS 16正式定档了 刘海屏MacBook Air或亮相
  11. php自带解压缩,PHP自带ZIP压缩、解压缩类ZipArchiv使用指南_PHP教程
  12. vc 6.0添加c文件 fatal error C1010解决办法
  13. 关于keystore 文件生成PK8+PEM文件
  14. 目标检测之FPN网络详解
  15. 大数据使用的5种主要数据挖掘技术
  16. 机器学习之SMOTE算法
  17. 安卓Android问卷调查系统app
  18. TOMCAT假死分析
  19. the OCD JTAG adapter was detected ,but there is...
  20. 跟着小哈一起读AHT20温湿度传感器驱动源码

热门文章

  1. 20172316 2018-2019-1 《程序设计与数据结构》实验二报告
  2. vue slot的使用介绍
  3. 高阶函数 / abs方法
  4. 安装10gR2的硬件要求
  5. The prefix mvc for element mvc:annotation-driven is not bound 的解决方法
  6. Java反射机制demo(三)—获取类中的构造函数
  7. 人工智能与深度学习实战(4)——口罩佩戴识别(CNN)
  8. C++编程语言类对象的赋值与复制介绍(二)
  9. Injection with CDI (Part I)
  10. Linux shell (一)