{
    "dataType": "CVE_RECORD",
    "dataVersion": "5.2",
    "cveMetadata": {
        "cveId": "CVE-2024-46834",
        "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "state": "PUBLISHED",
        "assignerShortName": "Linux",
        "dateReserved": "2024-09-11T15:12:18.287Z",
        "datePublished": "2024-09-27T12:39:31.110Z",
        "dateUpdated": "2026-08-05T11:38:54.577Z"
    },
    "containers": {
        "cna": {
            "providerMetadata": {
                "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
                "shortName": "Linux",
                "dateUpdated": "2026-08-05T11:38:54.577Z"
            },
            "descriptions": [
                {
                    "lang": "en",
                    "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nethtool: fail closed if we can't get max channel used in indirection tables\n\nCommit 0d1b7d6c9274 (\"bnxt: fix crashes when reducing ring count with\nactive RSS contexts\") proves that allowing indirection table to contain\nchannels with out of bounds IDs may lead to crashes. Currently the\nmax channel check in the core gets skipped if driver can't fetch\nthe indirection table or when we can't allocate memory.\n\nBoth of those conditions should be extremely rare but if they do\nhappen we should try to be safe and fail the channel change."
                }
            ],
            "metrics": [
                {
                    "cvssV3_1": {
                        "version": "3.1",
                        "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
                        "baseScore": 7.8,
                        "baseSeverity": "HIGH"
                    },
                    "scenarios": [
                        {
                            "lang": "en",
                            "value": "AV:L - The flaw is reached only through the ethtool ioctl (`SIOCETHTOOL`/`ETHTOOL_SCHANNELS`) or the ethtool generic-netlink socket (`ETHTOOL_MSG_CHANNELS_SET`), both of which require a local process on the machine. No remote peer input reaches this code.\nAC:L - The attacker fully controls the indirection table contents and the channel-reduction request, and the only uncontrolled element — the helper returning an error — is attacker-influenceable via heap exhaustion against the `GFP_USER`/`GFP_KERNEL` allocations or by racing a device reset, and the operation can be retried in a tight loop until it lands.\nPR:L - Both entry points gate on `ns_capable(net->user_ns, CAP_NET_ADMIN)`, a namespaced check, so an unprivileged user holding CAP_NET_ADMIN over a network namespace containing an RSS-capable netdev (the standard SR-IOV VF-in-container deployment) qualifies. No real root in the initial namespace is needed.\nUI:N - The attacker performs every step — setting the RSS indirection table and issuing the channel change — with no action by any other user or administrator.\nS:U - The out-of-bounds access occurs in kernel heap memory within the same kernel security authority; no hypervisor, IOMMU, or sandbox boundary is crossed.\nC:H - The stale indirection entries drive an out-of-bounds read of an array of large per-ring structures at an attacker-chosen index (`bp->rx_ring[j]` in `bnxt_fill_hw_rss_tbl_p5()`), reaching far beyond the allocation rather than a few bounded bytes, and the leaked values are pushed into the NIC's hardware RSS configuration.\nI:H - Out-of-bounds heap data is programmed as firmware ring identifiers into the device's RSS indirection table, causing the NIC to DMA received packets into rings that no longer exist or are no longer owned by that context — device-side memory corruption leveraged from an attacker-controlled index.\nA:H - The referenced bnxt commit documents outright crashes (\"fix crashes when reducing ring count with active RSS contexts\") with a KASAN slab-out-of-bounds splat during `__bnxt_open_nic()`, and misprogramming the hardware RSS table also breaks receive processing on the interface."
                        }
                    ]
                }
            ],
            "affected": [
                {
                    "product": "Linux",
                    "vendor": "Linux",
                    "defaultStatus": "unaffected",
                    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                    "programFiles": [
                        "net/ethtool/channels.c",
                        "net/ethtool/common.c",
                        "net/ethtool/common.h",
                        "net/ethtool/ioctl.c"
                    ],
                    "versions": [
                        {
                            "version": "d4ab4286276fcd6c155bafdf4422b712068d2516",
                            "lessThan": "101737d8b88dbd4be6010bac398fe810f1950036",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "d4ab4286276fcd6c155bafdf4422b712068d2516",
                            "lessThan": "2899d58462ba868287d6ff3acad3675e7adf934f",
                            "status": "affected",
                            "versionType": "git"
                        }
                    ]
                },
                {
                    "product": "Linux",
                    "vendor": "Linux",
                    "defaultStatus": "affected",
                    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                    "programFiles": [
                        "net/ethtool/channels.c",
                        "net/ethtool/common.c",
                        "net/ethtool/common.h",
                        "net/ethtool/ioctl.c"
                    ],
                    "versions": [
                        {
                            "version": "4.6",
                            "status": "affected"
                        },
                        {
                            "version": "0",
                            "lessThan": "4.6",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.10.10",
                            "lessThanOrEqual": "6.10.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.11",
                            "lessThanOrEqual": "*",
                            "status": "unaffected",
                            "versionType": "original_commit_for_fix"
                        }
                    ]
                }
            ],
            "cpeApplicability": [
                {
                    "nodes": [
                        {
                            "operator": "OR",
                            "negate": false,
                            "cpeMatch": [
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "4.6",
                                    "versionEndExcluding": "6.10.10"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "4.6",
                                    "versionEndExcluding": "6.11"
                                }
                            ]
                        }
                    ]
                }
            ],
            "references": [
                {
                    "url": "https://git.kernel.org/stable/c/101737d8b88dbd4be6010bac398fe810f1950036"
                },
                {
                    "url": "https://git.kernel.org/stable/c/2899d58462ba868287d6ff3acad3675e7adf934f"
                }
            ],
            "title": "ethtool: fail closed if we can't get max channel used in indirection tables",
            "x_generator": {
                "engine": "bippy-1.2.0"
            }
        },
        "adp": [
            {
                "metrics": [
                    {
                        "other": {
                            "type": "ssvc",
                            "content": {
                                "timestamp": "2024-09-29T14:03:28.433366Z",
                                "id": "CVE-2024-46834",
                                "options": [
                                    {
                                        "Exploitation": "none"
                                    },
                                    {
                                        "Automatable": "no"
                                    },
                                    {
                                        "Technical Impact": "partial"
                                    }
                                ],
                                "role": "CISA Coordinator",
                                "version": "2.0.3"
                            }
                        }
                    }
                ],
                "title": "CISA ADP Vulnrichment",
                "providerMetadata": {
                    "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
                    "shortName": "CISA-ADP",
                    "dateUpdated": "2024-09-29T14:03:33.146Z"
                }
            }
        ]
    }
}