Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1359 CNY

100%

CVE-2022-48744— net/mlx5e: Avoid field-overflowing memcpy()

Quick assessment

Affected
Linux Linux
Exploitation
No confirmed in-the-wild exploitation; assess based on exposure
Recommended action
Check the vendor advisory and references for a fixed version. If immediate upgrade is impossible, restrict exposure and increase monitoring.

Linux kernel是美国Linux基金会的开源操作系统Linux所使用的内核。 Linux kernel 存在安全漏洞,该漏洞源于 net/mlx5e 模块存在缓冲区溢出问题。

CVSS 7.5 · High EPSS 0.60% · P48

Possible ATT&CK Techniques 1 AI

T1190 · Exploit Public-Facing Application

Affected Version Matrix 8

VendorProduct Version RangeStatus
Linux Linux b5503b994ed5ed8dbfe821317e7b5b38acb065c5< 49bcbe531f79fc35bb10020f7695f9f01e4f0ca8 affected
b5503b994ed5ed8dbfe821317e7b5b38acb065c5< 8fbdf8c8b8ab82beab882175157650452c46493e affected
b5503b994ed5ed8dbfe821317e7b5b38acb065c5< ad5185735f7dab342fdd0dd41044da4c9ccfef67 affected
4.9 affected
< 4.9 unaffected
5.10.248≤ 5.10.* unaffected
5.16.6≤ 5.16.* unaffected
5.17≤ * unaffected
Get alerts for future matching vulnerabilities Log in to subscribe

I. Basic Information for CVE-2022-48744

Vulnerability Information

Have questions about the vulnerability? See if Shenlong's analysis helps!
View Shenlong Deep Dive ↗

Although we use advanced large model technology, its output may still contain inaccurate or outdated information.Shenlong tries to ensure data accuracy, but please verify and judge based on the actual situation.

Vulnerability Title
net/mlx5e: Avoid field-overflowing memcpy()
Source: CVE Program / CVE List V5
Vulnerability Description
In the Linux kernel, the following vulnerability has been resolved: net/mlx5e: Avoid field-overflowing memcpy() In preparation for FORTIFY_SOURCE performing compile-time and run-time field bounds checking for memcpy(), memmove(), and memset(), avoid intentionally writing across neighboring fields. Use flexible arrays instead of zero-element arrays (which look like they are always overflowing) and split the cross-field memcpy() into two halves that can be appropriately bounds-checked by the compiler. We were doing: #define ETH_HLEN 14 #define VLAN_HLEN 4 ... #define MLX5E_XDP_MIN_INLINE (ETH_HLEN + VLAN_HLEN) ... struct mlx5e_tx_wqe *wqe = mlx5_wq_cyc_get_wqe(wq, pi); ... struct mlx5_wqe_eth_seg *eseg = &wqe->eth; struct mlx5_wqe_data_seg *dseg = wqe->data; ... memcpy(eseg->inline_hdr.start, xdptxd->data, MLX5E_XDP_MIN_INLINE); target is wqe->eth.inline_hdr.start (which the compiler sees as being 2 bytes in size), but copying 18, intending to write across start (really vlan_tci, 2 bytes). The remaining 16 bytes get written into wqe->data[0], covering byte_count (4 bytes), lkey (4 bytes), and addr (8 bytes). struct mlx5e_tx_wqe { struct mlx5_wqe_ctrl_seg ctrl; /* 0 16 */ struct mlx5_wqe_eth_seg eth; /* 16 16 */ struct mlx5_wqe_data_seg data[]; /* 32 0 */ /* size: 32, cachelines: 1, members: 3 */ /* last cacheline: 32 bytes */ }; struct mlx5_wqe_eth_seg { u8 swp_outer_l4_offset; /* 0 1 */ u8 swp_outer_l3_offset; /* 1 1 */ u8 swp_inner_l4_offset; /* 2 1 */ u8 swp_inner_l3_offset; /* 3 1 */ u8 cs_flags; /* 4 1 */ u8 swp_flags; /* 5 1 */ __be16 mss; /* 6 2 */ __be32 flow_table_metadata; /* 8 4 */ union { struct { __be16 sz; /* 12 2 */ u8 start[2]; /* 14 2 */ } inline_hdr; /* 12 4 */ struct { __be16 type; /* 12 2 */ __be16 vlan_tci; /* 14 2 */ } insert; /* 12 4 */ __be32 trailer; /* 12 4 */ }; /* 12 4 */ /* size: 16, cachelines: 1, members: 9 */ /* last cacheline: 16 bytes */ }; struct mlx5_wqe_data_seg { __be32 byte_count; /* 0 4 */ __be32 lkey; /* 4 4 */ __be64 addr; /* 8 8 */ /* size: 16, cachelines: 1, members: 3 */ /* last cacheline: 16 bytes */ }; So, split the memcpy() so the compiler can reason about the buffer sizes. "pahole" shows no size nor member offset changes to struct mlx5e_tx_wqe nor struct mlx5e_umr_wqe. "objdump -d" shows no meaningful object code changes (i.e. only source line number induced differences and optimizations).
Source: CVE Program / CVE List V5
CVSS Information
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Source: CVE Program / CVE List V5
Vulnerability Type
N/A
Source: CVE Program / CVE List V5
Vulnerability Title
Linux kernel 安全漏洞
Source: CNNVD (China National Vulnerability Database)
Vulnerability Description
Linux kernel是美国Linux基金会的开源操作系统Linux所使用的内核。 Linux kernel 存在安全漏洞,该漏洞源于 net/mlx5e 模块存在缓冲区溢出问题。
Source: CNNVD (China National Vulnerability Database)
CVSS Information
N/A
Source: CNNVD (China National Vulnerability Database)
Vulnerability Type
N/A
Source: CNNVD (China National Vulnerability Database)

Affected Products

Vendor Product Affected Versions CPE Subscribe
Linux Linux b5503b994ed5ed8dbfe821317e7b5b38acb065c5 ~ 49bcbe531f79fc35bb10020f7695f9f01e4f0ca8 -
Linux Linux 4.9 -

II. Public POCs for CVE-2022-48744

# POC Description Source Link Shenlong Link
AI-Generated POC Premium

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2022-48744

请登录查看更多情报信息。

Other References for CVE-2022-48744 (2)

Same Patch Batch · Linux · 2024-06-20 · 67 CVEs total

CVE-2022-48711 9.8 CRITICAL tipc: improve size validations for received domain records
CVE-2024-38620 8.8 HIGH Bluetooth: HCI: Remove HCI_AMP support
CVE-2021-47620 8.1 HIGH Bluetooth: refactor malicious adv data check
CVE-2022-48743 8.1 HIGH net: amd-xgbe: Fix skb data length underflow
CVE-2022-48733 7.8 HIGH btrfs: fix use-after-free after failure to create a snapshot
CVE-2022-48771 7.8 HIGH drm/vmwgfx: Fix stale file descriptors on failed usercopy
CVE-2022-48759 7.8 HIGH rpmsg: char: Fix race between the release of rpmsg_ctrldev and cdev
CVE-2022-48751 7.8 HIGH net/smc: Transitional solution for clcsock race issue
CVE-2022-48729 7.8 HIGH IB/hfi1: Fix panic with larger ipoib send_queue_size
CVE-2022-48716 7.8 HIGH ASoC: codecs: wcd938x: fix incorrect used of portid
CVE-2022-48742 7.8 HIGH rtnetlink: make sure to refresh master_dev/m_ops in __rtnl_newlink()
CVE-2022-48726 7.8 HIGH RDMA/ucma: Protect mc during concurrent multicast leaves
CVE-2022-48754 7.8 HIGH phylib: fix potential use-after-free
CVE-2022-48720 7.8 HIGH net: macsec: Fix offload support for NETDEV_UNREGISTER event
CVE-2022-48721 7.8 HIGH net/smc: Forward wakeup to smc socket waitqueue after fallback
CVE-2022-48762 7.8 HIGH arm64: extable: fix load_unaligned_zeropad() reg indices
CVE-2022-48735 7.8 HIGH ALSA: hda: Fix UAF of leds class devs at unbinding
CVE-2022-48727 7.3 HIGH KVM: arm64: Avoid consuming a stale esr value when SError occur
CVE-2022-48717 7.1 HIGH ASoC: max9759: fix underflow in speaker_gain_control_put()
CVE-2022-48739 7.1 HIGH ASoC: hdmi-codec: Fix OOB memory accesses

Showing top 20 of 67 CVEs. View all on vendor page &rarr; →

IV. Related Vulnerabilities

V. Comments for CVE-2022-48744

No comments yet


Leave a comment