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

Goal: 1000 CNY · Raised: 1000 CNY

100.0%

CVE-2021-46980— usb: typec: ucsi: Retrieve all the PDOs instead of just the first 4

EPSS 0.04% · P12
Get alerts for future matching vulnerabilitiesLog in to subscribe

I. Basic Information for CVE-2021-46980

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
usb: typec: ucsi: Retrieve all the PDOs instead of just the first 4
Source: NVD (National Vulnerability Database)
Vulnerability Description
In the Linux kernel, the following vulnerability has been resolved: usb: typec: ucsi: Retrieve all the PDOs instead of just the first 4 commit 4dbc6a4ef06d ("usb: typec: ucsi: save power data objects in PD mode") introduced retrieval of the PDOs when connected to a PD-capable source. But only the first 4 PDOs are received since that is the maximum number that can be fetched at a time given the MESSAGE_IN length limitation (16 bytes). However, as per the PD spec a connected source may advertise up to a maximum of 7 PDOs. If such a source is connected it's possible the PPM could have negotiated a power contract with one of the PDOs at index greater than 4, and would be reflected in the request data object's (RDO) object position field. This would result in an out-of-bounds access when the rdo_index() is used to index into the src_pdos array in ucsi_psy_get_voltage_now(). With the help of the UBSAN -fsanitize=array-bounds checker enabled this exact issue is revealed when connecting to a PD source adapter that advertise 5 PDOs and the PPM enters a contract having selected the 5th one. [ 151.545106][ T70] Unexpected kernel BRK exception at EL1 [ 151.545112][ T70] Internal error: BRK handler: f2005512 [#1] PREEMPT SMP ... [ 151.545499][ T70] pc : ucsi_psy_get_prop+0x208/0x20c [ 151.545507][ T70] lr : power_supply_show_property+0xc0/0x328 ... [ 151.545542][ T70] Call trace: [ 151.545544][ T70] ucsi_psy_get_prop+0x208/0x20c [ 151.545546][ T70] power_supply_uevent+0x1a4/0x2f0 [ 151.545550][ T70] dev_uevent+0x200/0x384 [ 151.545555][ T70] kobject_uevent_env+0x1d4/0x7e8 [ 151.545557][ T70] power_supply_changed_work+0x174/0x31c [ 151.545562][ T70] process_one_work+0x244/0x6f0 [ 151.545564][ T70] worker_thread+0x3e0/0xa64 We can resolve this by instead retrieving and storing up to the maximum of 7 PDOs in the con->src_pdos array. This would involve two calls to the GET_PDOS command.
Source: NVD (National Vulnerability Database)
CVSS Information
N/A
Source: NVD (National Vulnerability Database)
Vulnerability Type
N/A
Source: NVD (National Vulnerability Database)
Vulnerability Title
Linux kernel 安全漏洞
Source: CNNVD (China National Vulnerability Database)
Vulnerability Description
Linux kernel是美国Linux基金会的开源操作系统Linux所使用的内核。 Linux kernel 存在安全漏洞。目前尚无此漏洞的相关信息,请随时关注CNNVD或厂商公告。
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 4dbc6a4ef06d6a79ff91be6fc2e90f8660031ce0 ~ e5366bea0277425e1868ba20eeb27c879d5a6e2d -
LinuxLinux 5.8 -

II. Public POCs for CVE-2021-46980

#POC DescriptionSource LinkShenlong Link
AI-Generated POCPremium

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2021-46980

登录查看更多情报信息。

Same Patch Batch · Linux · 2024-02-28 · 86 CVEs total

CVE-2021-46997arm64: entry: always set GIC_PRIO_PSR_I_SET during entry
CVE-2021-47001xprtrdma: Fix cwnd update ordering
CVE-2021-46998ethernet:enic: Fix a use after free bug in enic_hard_start_xmit
CVE-2021-47000ceph: fix inode leak on getattr error in __fh_to_dentry
CVE-2021-47003dmaengine: idxd: Fix potential null dereference on pointer status
CVE-2021-47005PCI: endpoint: Fix NULL pointer dereference for ->get_features()
CVE-2021-47007f2fs: fix panic during f2fs_resize_fs()
CVE-2021-47006ARM: 9064/1: hw_breakpoint: Do not directly check the event's overflow_handler hook
CVE-2021-47009KEYS: trusted: Fix memory leak on object td
CVE-2021-47004f2fs: fix to avoid touching checkpointed data in get_victim()
CVE-2021-46999sctp: do asoc update earlier in sctp_sf_do_dupcook_a
CVE-2021-46995can: mcp251xfd: mcp251xfd_probe(): fix an error pointer dereference in probe
CVE-2021-46996netfilter: nftables: Fix a memleak from userdata error path in new objects
CVE-2021-46994can: mcp251x: fix resume from sleep before interface was brought up
CVE-2021-46992netfilter: nftables: avoid overflows in nft_hash_buckets()
CVE-2021-46993sched: Fix out-of-bound access in uclamp
CVE-2021-46990powerpc/64s: Fix crashes when toggling entry flush barrier
CVE-2021-46991i40e: Fix use-after-free in i40e_client_subtask()
CVE-2021-46989hfsplus: prevent corruption in shrinking truncate
CVE-2021-46987btrfs: fix deadlock when cloning inline extents and using qgroups

Showing top 20 of 86 CVEs. View all on vendor page → →

IV. Related Vulnerabilities

V. Comments for CVE-2021-46980

No comments yet


Leave a comment