freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Linux内核攻击面研究
2023-03-13 10:46:15
所属地 广东省

Linux内核攻击面研究

收集整理了自2022年1月1日以来,至2023年2月18日的所有Linux内核漏洞,数据来自NVD,总计漏洞数量314个,从CWE类型、漏洞所在子系统分析Linux内核攻击面。

CWE统计

按照CVE公开信息,总计314个漏洞按CWE名称可分为31种漏洞类型。统计如下:1678675168_640e8ce0cf422abe939e6.png!small

可以从上图看到Use After Free数量非常多,数量是第二名Null Pointer Dereference的两倍有余。

另外为了方便统计图的绘制,有许多单个的CWE统计在Other类型中,总计18个漏洞类型,排名不分先后:

  1. Missing Authorization

  2. Use of a Broken or Risky Cryptographic Algorithm

  3. Improper Privilege Management

  4. Use of Insufficiently Random Values

  5. Improper Control of Dynamically-Managed Code Resources

  6. Release of Invalid Pointer or Reference

  7. Improper Handling of Exceptional Conditions

  8. Time-of-check Time-of-use (TOCTOU) Race Condition

  9. Insecure Default Initialization of Resource

  10. Non-exit on Failed Initialization

  11. Unchecked Return Value

  12. Deadlock

  13. Access of Uninitialized Pointer

  14. Loop with Unreachable Exit Condition ('Infinite Loop')

  15. Divide By Zero

  16. Incorrect Authorization

  17. Incorrect Type Conversion or Cast

  18. Improper Validation of Array Index

漏洞数量 Top 10 统计如下:

1678675189_640e8cf501c85cad962f1.png!small

Top 10 总计235个漏洞,占总漏洞数量的74.84%。Top 10 各类型占比如下:

1678675198_640e8cfe370bf13231188.png!small

子系统漏洞统计

分析314个CVE信息,排除CVE描述信息不全无法定位位置的CVE,剩余297个漏洞。为了方便统计图的绘制,统计了267个漏洞所属子系统:​1678675209_640e8d0925b315722a995.png!small​​

另外30个漏洞在单独的子系统或内核模块中,排名不分先后:

  1. HID

  2. KPTI

  3. SYSCTL Subsystem

  4. USB Subsystem

  5. Power Supply

  6. Driver-Misc

  7. Monitor

  8. Driver-ATM

  9. Driver-Isdn

  10. Mgmt-Tester

  11. Virtual Devices

  12. Driver-Firmware

  13. MMU and TLB

  14. Events Subsystem

  15. Driver-lightnvm

  16. Scheduler

  17. IPC

  18. Driver-VFIO MEDIATED

  19. Memory deduplication mechanism

  20. X86 ARCHITECTURE

  21. Driver-Virt

  22. LINUX FOR POWERPC

  23. Driver-Vhost

  24. DMA

  25. Block Subsystem

  26. Driver-Bluetooth

  27. Workqueue

  28. BPF JIT for S390

  29. Networking-Bluetooth

  30. Driver-SONY MEMORYSTICK

内核子系统漏洞数量 Top 10 统计如下,Driver-Video与Driver-Char并列第十:

上图可知 NetWorking 和 Filesystem Subsystem 存在大量漏洞,攻击面较大。其余漏洞占比如下,多数也是属于内核驱动程序:

典型攻击面案例

在分析CVE信息过程中,总结了一些比较有代表性的漏洞以及攻击面,大多数漏洞可以很容易发现和利用。如下列表:

  1. 结构体成员未初始化值,导致后续操作产生漏洞。例如CVE-2022-29968、CVE-2022-0847

  2. 缺少宏定义,或缺少权限标志,导致内存权限错误或信息泄露。例如CVE-2022-1353、CVE-2022-0500、CVE-2022-0494

  3. 调用卸载类的函数后,再次使用释放类的函数,导致重复释放。例如CVE-2022-29156、CVE-2022-28390

  4. 未判断返回指针是否为空,或返回值是否失败。例如CVE-2022-28356

  5. 无符号和有符号的类型混淆导致的整数溢出。例如CVE-2022-0998

  6. 有效生命周期后缺少释放。例如CVE-2022-27950

  7. 未加锁导致的条件竞争。例如CVE-2021-4149

  8. 写入超出分配的缓冲区大小,导致堆溢出。例如CVE-2022-27666

  9. 未验证的数组索引。例如CVE-2022-27223

  10. 使用结构体前,缺少对结构体的验证。例如CVE-2022-0516

  11. 缺少对数值的验证,未验证是否为0。例如CVE-2021-3743

  12. 使用后未对内存清零,导致内核信息泄露。例如CVE-2022-0382

  13. 释放顺序不正确导致的Use After Free,例如CVE-2022-0487

  14. 前序函数可返回空值,但后序函数未检查返回值是否为空,导致空指针引用。例如CVE-2022-0286

总结

通过以上分析,可得知内核的攻击面:

  1. 主要的漏洞类型为UAF、空指针引用、OOB Write、OOB Read、条件竞争、有效生命周期后缺少释放。

  2. 漏洞产出较多的子系统为网络子系统、文件子系统、BPF、KVM、以及各种内核驱动程序。

  3. 整体看来,Linux内核对于安全性非常重视,虽然某些漏洞无法被用于提权攻击,但能达到拒绝服务,也被分配了CVE编号。但由于项目庞大、开发者水平参差,产生了许多低级的安全性漏洞,因此可以从这些方面入手对Linux内核进行漏洞挖掘。

# web安全 # USB流量嗅探
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者