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

Goal: 1000 CNY · Raised: 1359 CNY

100%

CVE-2022-50650— bpf: Fix reference state management for synchronous callbacks

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存在安全漏洞,该漏洞源于BPF同步回调的引用状态管理不当,可能导致资源释放问题。

CVSS 7.8 · High EPSS 0.16% · P5

Affected Version Matrix 10

VendorProduct Version RangeStatus
Linux Linux 69c087ba6225b574afb6e505b72cb75242a3d844< 4ed5155043c97ac8912bcf67331df87c833fb067 affected
69c087ba6225b574afb6e505b72cb75242a3d844< caa176c0953cdfd5ce500fb517ce1ea924a8bc4c affected
69c087ba6225b574afb6e505b72cb75242a3d844< aed931fd3b6e28f19cc140ff90aa5046ee2aa4e1 affected
69c087ba6225b574afb6e505b72cb75242a3d844< 9d9d00ac29d0ef7ce426964de46fa6b380357d0a affected
5.13 affected
< 5.13 unaffected
5.15.75≤ 5.15.* unaffected
5.19.17≤ 5.19.* unaffected
… +2 more rows
Get alerts for future matching vulnerabilities Log in to subscribe

I. Basic Information for CVE-2022-50650

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
bpf: Fix reference state management for synchronous callbacks
Source: CVE Program / CVE List V5
Vulnerability Description
In the Linux kernel, the following vulnerability has been resolved: bpf: Fix reference state management for synchronous callbacks Currently, verifier verifies callback functions (sync and async) as if they will be executed once, (i.e. it explores execution state as if the function was being called once). The next insn to explore is set to start of subprog and the exit from nested frame is handled using curframe > 0 and prepare_func_exit. In case of async callback it uses a customized variant of push_stack simulating a kind of branch to set up custom state and execution context for the async callback. While this approach is simple and works when callback really will be executed only once, it is unsafe for all of our current helpers which are for_each style, i.e. they execute the callback multiple times. A callback releasing acquired references of the caller may do so multiple times, but currently verifier sees it as one call inside the frame, which then returns to caller. Hence, it thinks it released some reference that the cb e.g. got access through callback_ctx (register filled inside cb from spilled typed register on stack). Similarly, it may see that an acquire call is unpaired inside the callback, so the caller will copy the reference state of callback and then will have to release the register with new ref_obj_ids. But again, the callback may execute multiple times, but the verifier will only account for acquired references for a single symbolic execution of the callback, which will cause leaks. Note that for async callback case, things are different. While currently we have bpf_timer_set_callback which only executes it once, even for multiple executions it would be safe, as reference state is NULL and check_reference_leak would force program to release state before BPF_EXIT. The state is also unaffected by analysis for the caller frame. Hence async callback is safe. Since we want the reference state to be accessible, e.g. for pointers loaded from stack through callback_ctx's PTR_TO_STACK, we still have to copy caller's reference_state to callback's bpf_func_state, but we enforce that whatever references it adds to that reference_state has been released before it hits BPF_EXIT. This requires introducing a new callback_ref member in the reference state to distinguish between caller vs callee references. Hence, check_reference_leak now errors out if it sees we are in callback_fn and we have not released callback_ref refs. Since there can be multiple nested callbacks, like frame 0 -> cb1 -> cb2 etc. we need to also distinguish between whether this particular ref belongs to this callback frame or parent, and only error for our own, so we store state->frameno (which is always non-zero for callbacks). In short, callbacks can read parent reference_state, but cannot mutate it, to be able to use pointers acquired by the caller. They must only undo their changes (by releasing their own acquired_refs before BPF_EXIT) on top of caller reference_state before returning (at which point the caller and callback state will match anyway, so no need to copy it back to caller).
Source: CVE Program / CVE List V5
CVSS Information
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/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存在安全漏洞,该漏洞源于BPF同步回调的引用状态管理不当,可能导致资源释放问题。
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 69c087ba6225b574afb6e505b72cb75242a3d844 ~ 4ed5155043c97ac8912bcf67331df87c833fb067 -
Linux Linux 5.13 -

II. Public POCs for CVE-2022-50650

# 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-50650

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

Same Patch Batch · Linux · 2025-12-09 · 152 CVEs total

CVE-2025-40343 9.8 CRITICAL nvmet-fc: avoid scheduling association deletion twice
CVE-2022-50666 9.8 CRITICAL RDMA/siw: Fix QP destroy to wait for all references dropped.
CVE-2023-53794 9.8 CRITICAL cifs: fix session state check in reconnect to avoid use-after-free issue
CVE-2025-40342 8.8 HIGH nvme-fc: use lock accessing port_state and rport state
CVE-2023-53785 8.8 HIGH mt76: mt7921: don't assume adequate headroom for SDIO headers
CVE-2023-53822 8.8 HIGH wifi: ath11k: Ignore frags from uninitialized peer in dp.
CVE-2025-40336 8.8 HIGH drm/gpusvm: fix hmm_pfn_to_map_order() usage
CVE-2023-53827 8.8 HIGH Bluetooth: L2CAP: Fix use-after-free in l2cap_disconnect_{req,rsp}
CVE-2025-40328 8.8 HIGH smb: client: fix potential UAF in smb2_close_cached_fid()
CVE-2023-53851 8.4 HIGH drm/msm/dp: Drop aux devices together with DP controller
CVE-2025-40337 8.2 HIGH net: stmmac: Correctly handle Rx checksum offload errors
CVE-2022-50656 8.1 HIGH nfc: pn533: Clear nfc_target before being used
CVE-2023-53803 8.1 HIGH scsi: ses: Fix slab-out-of-bounds in ses_enclosure_data_process()
CVE-2023-53800 7.8 HIGH ubi: Fix use-after-free when volume resizing failed
CVE-2023-53828 7.8 HIGH Bluetooth: hci_sync: Avoid use-after-free in dbg for hci_add_adv_monitor()
CVE-2023-53829 7.8 HIGH f2fs: flush inode if atomic file is aborted
CVE-2023-53790 7.8 HIGH bpf: Zeroing allocated object from slab in bpf memory allocator
CVE-2023-53836 7.8 HIGH bpf, sockmap: Fix skb refcnt race after locking changes
CVE-2023-53844 7.8 HIGH drm/ttm: Don't leak a resource on swapout move error
CVE-2023-53846 7.8 HIGH f2fs: fix to do sanity check on direct node in truncate_dnode()

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

IV. Related Vulnerabilities

V. Comments for CVE-2022-50650

No comments yet


Leave a comment