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

Goal: 1000 CNY · Raised: 1000 CNY

100.0%

CVE-2024-27415— netfilter: bridge: confirm multicast packets before passing them up the stack

EPSS 0.00% · P0
Get alerts for future matching vulnerabilitiesLog in to subscribe

I. Basic Information for CVE-2024-27415

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
netfilter: bridge: confirm multicast packets before passing them up the stack
Source: NVD (National Vulnerability Database)
Vulnerability Description
In the Linux kernel, the following vulnerability has been resolved: netfilter: bridge: confirm multicast packets before passing them up the stack conntrack nf_confirm logic cannot handle cloned skbs referencing the same nf_conn entry, which will happen for multicast (broadcast) frames on bridges. Example: macvlan0 | br0 / \ ethX ethY ethX (or Y) receives a L2 multicast or broadcast packet containing an IP packet, flow is not yet in conntrack table. 1. skb passes through bridge and fake-ip (br_netfilter)Prerouting. -> skb->_nfct now references a unconfirmed entry 2. skb is broad/mcast packet. bridge now passes clones out on each bridge interface. 3. skb gets passed up the stack. 4. In macvlan case, macvlan driver retains clone(s) of the mcast skb and schedules a work queue to send them out on the lower devices. The clone skb->_nfct is not a copy, it is the same entry as the original skb. The macvlan rx handler then returns RX_HANDLER_PASS. 5. Normal conntrack hooks (in NF_INET_LOCAL_IN) confirm the orig skb. The Macvlan broadcast worker and normal confirm path will race. This race will not happen if step 2 already confirmed a clone. In that case later steps perform skb_clone() with skb->_nfct already confirmed (in hash table). This works fine. But such confirmation won't happen when eb/ip/nftables rules dropped the packets before they reached the nf_confirm step in postrouting. Pablo points out that nf_conntrack_bridge doesn't allow use of stateful nat, so we can safely discard the nf_conn entry and let inet call conntrack again. This doesn't work for bridge netfilter: skb could have a nat transformation. Also bridge nf prevents re-invocation of inet prerouting via 'sabotage_in' hook. Work around this problem by explicit confirmation of the entry at LOCAL_IN time, before upper layer has a chance to clone the unconfirmed entry. The downside is that this disables NAT and conntrack helpers. Alternative fix would be to add locking to all code parts that deal with unconfirmed packets, but even if that could be done in a sane way this opens up other problems, for example: -m physdev --physdev-out eth0 -j SNAT --snat-to 1.2.3.4 -m physdev --physdev-out eth1 -j SNAT --snat-to 1.2.3.5 For multicast case, only one of such conflicting mappings will be created, conntrack only handles 1:1 NAT mappings. Users should set create a setup that explicitly marks such traffic NOTRACK (conntrack bypass) to avoid this, but we cannot auto-bypass them, ruleset might have accept rules for untracked traffic already, so user-visible behaviour would change.
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存在安全漏洞,该漏洞源于conntrack nf_confirm 逻辑无法处理引用相同 nf_conn 条目的克隆 skb,这将发生在网桥上的多播(广播)帧上。
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 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 ~ 7c3f28599652acf431a2211168de4a583f30b6d5 -
LinuxLinux 2.6.12 -

II. Public POCs for CVE-2024-27415

#POC DescriptionSource LinkShenlong Link
AI-Generated POCPremium

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2024-27415

登录查看更多情报信息。

Same Patch Batch · Linux · 2024-05-17 · 135 CVEs total

CVE-2024-35834xsk: recycle buffer in case Rx queue was full
CVE-2023-52686powerpc/powernv: Add a null pointer check in opal_event_init()
CVE-2023-52684firmware: qcom: qseecom: fix memory leaks in error paths
CVE-2023-52683ACPI: LPIT: Avoid u32 multiplication overflow
CVE-2023-52682f2fs: fix to wait on block writeback for post_read case
CVE-2023-52681efivarfs: Free s_fs_info on unmount
CVE-2023-52680ALSA: scarlett2: Add missing error checks to *_ctl_get()
CVE-2023-52679of: Fix double free in of_parse_phandle_with_args_map
CVE-2023-52678drm/amdkfd: Confirm list is non-empty before utilizing list_first_entry in kfd_topology.c
CVE-2023-52677riscv: Check if the code to patch lies in the exit section
CVE-2023-52676bpf: Guard stack limits against 32bit overflow
CVE-2023-52675powerpc/imc-pmu: Add a null pointer check in update_events_in_group()
CVE-2023-52674ALSA: scarlett2: Add clamp() in scarlett2_mixer_ctl_put()
CVE-2024-35838wifi: mac80211: fix potential sta-link leak
CVE-2024-35837net: mvpp2: clear BM pool before initialization
CVE-2024-35836dpll: fix pin dump crash for rebound module
CVE-2024-35835net/mlx5e: fix a double-free in arfs_create_groups
CVE-2023-52664net: atlantic: eliminate double free in error handling logic
CVE-2024-35830media: tc358743: register v4l2 async device only after successful setup
CVE-2024-35831io_uring: Fix release of pinned pages when __io_uaddr_map fails

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

IV. Related Vulnerabilities

V. Comments for CVE-2024-27415

No comments yet


Leave a comment