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

Goal: 1000 CNY · Raised: 1336 CNY

100%

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

CVSS 7.5 · High EPSS 0.61% · P46

Possible ATT&CK Techniques 1AI

T1190 · Exploit Public-Facing Application

Affected Version Matrix 8

VendorProductVersion RangeStatus
LinuxLinuxb5503b994ed5ed8dbfe821317e7b5b38acb065c5< 49bcbe531f79fc35bb10020f7695f9f01e4f0ca8affected
b5503b994ed5ed8dbfe821317e7b5b38acb065c5< 8fbdf8c8b8ab82beab882175157650452c46493eaffected
b5503b994ed5ed8dbfe821317e7b5b38acb065c5< ad5185735f7dab342fdd0dd41044da4c9ccfef67affected
4.9affected
< 4.9unaffected
5.10.248≤ 5.10.*unaffected
5.16.6≤ 5.16.*unaffected
5.17≤ *unaffected
Get alerts for future matching vulnerabilitiesLog 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

VendorProductAffected VersionsCPESubscribe
LinuxLinux b5503b994ed5ed8dbfe821317e7b5b38acb065c5 ~ 49bcbe531f79fc35bb10020f7695f9f01e4f0ca8 -
LinuxLinux 4.9 -

II. Public POCs for CVE-2022-48744

#POC DescriptionSource LinkShenlong Link
AI-Generated POCPremium

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-487119.8 CRITICALtipc: improve size validations for received domain records
CVE-2024-386208.8 HIGHBluetooth: HCI: Remove HCI_AMP support
CVE-2021-476208.1 HIGHBluetooth: refactor malicious adv data check
CVE-2022-487438.1 HIGHnet: amd-xgbe: Fix skb data length underflow
CVE-2022-487337.8 HIGHbtrfs: fix use-after-free after failure to create a snapshot
CVE-2022-487717.8 HIGHdrm/vmwgfx: Fix stale file descriptors on failed usercopy
CVE-2022-487597.8 HIGHrpmsg: char: Fix race between the release of rpmsg_ctrldev and cdev
CVE-2022-487517.8 HIGHnet/smc: Transitional solution for clcsock race issue
CVE-2022-487297.8 HIGHIB/hfi1: Fix panic with larger ipoib send_queue_size
CVE-2022-487167.8 HIGHASoC: codecs: wcd938x: fix incorrect used of portid
CVE-2022-487427.8 HIGHrtnetlink: make sure to refresh master_dev/m_ops in __rtnl_newlink()
CVE-2022-487267.8 HIGHRDMA/ucma: Protect mc during concurrent multicast leaves
CVE-2022-487547.8 HIGHphylib: fix potential use-after-free
CVE-2022-487207.8 HIGHnet: macsec: Fix offload support for NETDEV_UNREGISTER event
CVE-2022-487217.8 HIGHnet/smc: Forward wakeup to smc socket waitqueue after fallback
CVE-2022-487627.8 HIGHarm64: extable: fix load_unaligned_zeropad() reg indices
CVE-2022-487357.8 HIGHALSA: hda: Fix UAF of leds class devs at unbinding
CVE-2022-487277.3 HIGHKVM: arm64: Avoid consuming a stale esr value when SError occur
CVE-2022-487177.1 HIGHASoC: max9759: fix underflow in speaker_gain_control_put()
CVE-2022-487397.1 HIGHASoC: 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