Linux内核越界写入漏洞CVE-2022-49592技术分析

本文详细分析Linux内核5.18.14及之前版本中存在的越界写入漏洞CVE-2022-49592,该漏洞位于stmmac网络驱动中,当队列数大于4时会发生左移溢出,影响系统机密性,需要升级到修复版本。

CVE-2022-49592 Linux内核越界漏洞分析

漏洞概述

在Linux内核5.18.14及之前版本中发现了一个被归类为有问题的漏洞。该漏洞影响某些未知处理过程,操作导致越界访问。

此漏洞被标记为CVE-2022-49592。目前尚无可用漏洞利用。

受影响组件应进行升级。

技术细节

在Linux内核5.18.14及之前版本中发现了一个漏洞,被评为有问题级别。该问题影响未知部分。使用未知输入进行操作会导致越界漏洞。使用CWE声明问题归为CWE-125。产品读取数据超过缓冲区末尾或起始位置之前。受影响的是机密性。

CVE摘要如下:

在Linux内核中,已解决以下漏洞:

net: stmmac: 修复DMA队列左移溢出问题

当队列数大于4时,由于32位整数变量,左移操作会溢出。MTL_RXQ_DMA_MAP1的掩码计算错误。

如果启用了CONFIG_UBSAN,内核会输出以下警告:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
[   10.363842] ==================================================================
[   10.363882] UBSAN: shift-out-of-bounds in /build/linux-intel-iotg-5.15-8e6Tf4/
linux-intel-iotg-5.15-5.15.0/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c:224:12
[   10.363929] shift exponent 40 is too large for 32-bit type 'unsigned int'
[   10.363953] CPU: 1 PID: 599 Comm: NetworkManager Not tainted 5.15.0-1003-intel-iotg
[   10.363956] Hardware name: ADLINK Technology Inc. LEC-EL/LEC-EL, BIOS 0.15.11 12/22/2021
[   10.363958] Call Trace:
[   10.363960]  
[   10.363963]  dump_stack_lvl+0x4a/0x5f
[   10.363971]  dump_stack+0x10/0x12
[   10.363974]  ubsan_epilogue+0x9/0x45
[   10.363976]  __ubsan_handle_shift_out_of_bounds.cold+0x61/0x10e
[   10.363979]  ? wake_up_klogd+0x4a/0x50
[   10.363983]  ? vprintk_emit+0x8f/0x240
[   10.363986]  dwmac4_map_mtl_dma.cold+0x42/0x91 [stmmac]
[   10.364001]  stmmac_mtl_configuration+0x1ce/0x7a0 [stmmac]
[   10.364009]  ? dwmac410_dma_init_channel+0x70/0x70 [stmmac]
[   10.364020]  stmmac_hw_setup.cold+0xf/0xb14 [stmmac]
[   10.364030]  ? page_pool_alloc_pages+0x4d/0x70
[   10.364034]  ? stmmac_clear_tx_descriptors+0x6e/0xe0 [stmmac]
[   10.364042]  stmmac_open+0x39e/0x920 [stmmac]
[   10.364050]  __dev_open+0xf0/0x1a0
[   10.364054]  __dev_change_flags+0x188/0x1f0
[   10.364057]  dev_change_flags+0x26/0x60
[   10.364059]  do_setlink+0x908/0xc40
[   10.364062]  ? do_setlink+0xb10/0xc40
[   10.364064]  ? __nla_validate_parse+0x4c/0x1a0
[   10.364068]  __rtnl_newlink+0x597/0xa10
[   10.364072]  ? __nla_reserve+0x41/0x50
[   10.364074]  ? __kmalloc_node_track_caller+0x1d0/0x4d0
[   10.364079]  ? pskb_expand_head+0x75/0x310
[   10.364082]  ? nla_reserve_64bit+0x21/0x40
[   10.364086]  ? skb_free_head+0x65/0x80
[   10.364089]  ? security_sock_rcv_skb+0x2c/0x50
[   10.364094]  ? __cond_resched+0x19/0x30
[   10.364097]  ? kmem_cache_alloc_trace+0x15a/0x420
[   10.364100]  rtnl_newlink+0x49/0x70

此更改修复了MTL_RXQ_DMA_MAP1掩码问题和通道/队列映射警告。

错误链接:https://bugzilla.kernel.org/show_bug.cgi?id=216195

该公告在git.kernel.org共享。此漏洞自2025年2月26日起被识别为CVE-2022-49592。已知利用难度较大。既无技术细节也无公开可用的漏洞利用。漏洞扫描器Nessus提供了一个插件,ID为240793(SUSE SLES12安全更新:kernel(SUSE-SU-2025:01983-1)),有助于确定目标环境中是否存在此缺陷。

升级到版本4.14.290、4.19.254、5.4.208、5.10.134、5.15.58或5.18.15可消除此漏洞。应用补丁ad2febdfbd01e1d092a08bfdba92ede79ea05ff3/508d86ead36cbd8dfb60773a33276790d668c473/573768dede0e2b7de38ecbc11cb3ee47643902dc/a3ac79f38d354b10925824899cdbd2caadce55ba/7c687a893f5cae5ca40d189635602e93af9bab73/e846bde09677fa3b203057846620b7ed96540f5f/613b065ca32e90209024ec4a6bb5ca887ee70980能够消除此问题。错误修复可在git.kernel.org下载。建议的最佳缓解措施是升级到最新版本。该漏洞还在Tenable(240793)和EUVD(EUVD-2022-54640)的数据库中记录。类似条目可在VDB-307070、VDB-307071、VDB-307200和VDB-307227中找到。

产品信息

类型:操作系统 供应商:Linux 名称:Kernel 版本:4.14.289至5.18.14之间的多个版本 许可证:开源

漏洞评分

CVSS v3信息

  • VulDB元基础分数:5.2
  • VulDB元临时分数:5.1
  • VulDB基础分数:2.6
  • VulDB临时分数:2.5
  • NVD基础分数:7.8

利用信息

类别:越界 CWE:CWE-125 / CWE-119 物理访问:部分 本地访问:是 远程访问:部分 Nessus ID:240793 Nessus名称:SUSE SLES12安全更新:kernel(SUSE-SU-2025:01983-1)

应对措施

建议:升级 升级版本:Kernel 4.14.290/4.19.254/5.4.208/5.10.134/5.15.58/5.18.15 补丁:多个修复补丁可用

时间线

  • 2025年2月26日:公告披露
  • 2025年2月26日:CVE保留
  • 2025年2月26日:VulDB条目创建
  • 2025年10月23日:VulDB条目最后更新

来源

供应商:kernel.org 公告:git.kernel.org 状态:已确认 CVE:CVE-2022-49592

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计