{
    "dataType": "CVE_RECORD",
    "dataVersion": "5.2",
    "cveMetadata": {
        "cveId": "CVE-2024-45030",
        "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "state": "PUBLISHED",
        "assignerShortName": "Linux",
        "dateReserved": "2024-08-21T05:34:56.685Z",
        "datePublished": "2024-09-11T15:14:00.886Z",
        "dateUpdated": "2026-08-05T11:37:51.310Z"
    },
    "containers": {
        "cna": {
            "providerMetadata": {
                "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
                "shortName": "Linux",
                "dateUpdated": "2026-08-05T11:37:51.310Z"
            },
            "descriptions": [
                {
                    "lang": "en",
                    "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nigb: cope with large MAX_SKB_FRAGS\n\nSabrina reports that the igb driver does not cope well with large\nMAX_SKB_FRAG values: setting MAX_SKB_FRAG to 45 causes payload\ncorruption on TX.\n\nAn easy reproducer is to run ssh to connect to the machine.  With\nMAX_SKB_FRAGS=17 it works, with MAX_SKB_FRAGS=45 it fails.  This has\nbeen reported originally in\nhttps://bugzilla.redhat.com/show_bug.cgi?id=2265320\n\nThe root cause of the issue is that the driver does not take into\naccount properly the (possibly large) shared info size when selecting\nthe ring layout, and will try to fit two packets inside the same 4K\npage even when the 1st fraglist will trump over the 2nd head.\n\nAddress the issue by checking if 2K buffers are insufficient."
                }
            ],
            "metrics": [
                {
                    "cvssV3_1": {
                        "version": "3.1",
                        "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
                        "baseScore": 9.8,
                        "baseSeverity": "CRITICAL"
                    },
                    "scenarios": [
                        {
                            "lang": "en",
                            "value": "AV:N - The defect is triggered entirely within the igb RX path (`igb_clean_rx_irq()`/`igb_build_skb()`) by any received Ethernet frame larger than ~1086 bytes, before any socket demultiplexing or filtering. Such frames can be sent by any routed remote host across the internet, not just an on-link peer.\nAC:L - On an affected build the attacker needs only to send normal, full-size packets to the host; the overlap between the linear data area and `skb_shared_info` is deterministic and occurs on every sufficiently large frame, with no race, no memory-layout requirement and 100% reliability. The affected configurations are real deployments (BIG TCP kernels with CONFIG_MAX_SKB_FRAGS>=25, and default configs on 4K-page architectures with >=128-byte cache lines), not attacker-uncontrollable conditions.\nPR:N - The corruption occurs in the NAPI receive handler before any protocol demux, socket lookup or authentication, so no credentials or local account on the target are needed. Packets addressed to closed ports are sufficient.\nUI:N - No victim action is required; the flaw triggers automatically as soon as the interface receives large frames during normal operation.\nS:U - The corrupted memory (RX page, `skb_shared_info`, sk_buff invariants) and the impact all reside within the kernel's own security authority. No VM, IOMMU or sandbox boundary is crossed.\nC:H - Because `skb_shinfo()` aliases the packet's own linear data, kernel pointers written there afterwards (`frag_list` = kernel `sk_buff *`, `frags[].page` = `struct page *` written by GRO merging, hwtstamps, destructor_arg) become part of the payload copied to userspace via recvmsg, disclosing kernel heap addresses; this is memory corruption of kernel metadata directly leveragable for information disclosure and KASLR defeat.\nI:H - build_skb's shinfo memset plus every subsequent shinfo update overwrite received packet bytes at deterministic offsets, and igb still marks these frames CHECKSUM_UNNECESSARY, so silently corrupted data is delivered to applications as valid; conversely attacker-controlled network bytes occupy the `skb_shared_info` region (nr_frags/frag_list/frags[]/destructor_arg), corrupting kernel data structures.\nA:H - Every such skb violates the `skb->tail <= skb->end` invariant, so paths like `skb_copy()` (reached via `skb_unshare()` whenever the skb is cloned, e.g. with tcpdump/AF_PACKET or DSA) call `skb_put()` past `end` and hit `skb_over_panic()` -> `BUG()` in softirq context, i.e. kernel panic; even without a panic, all large frames are corrupted, destroying network connectivity on the interface."
                        }
                    ]
                }
            ],
            "affected": [
                {
                    "product": "Linux",
                    "vendor": "Linux",
                    "defaultStatus": "unaffected",
                    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                    "programFiles": [
                        "drivers/net/ethernet/intel/igb/igb_main.c"
                    ],
                    "versions": [
                        {
                            "version": "3948b05950fdd64002a5f182c65ba5cf2d53cf71",
                            "lessThan": "8ea80ff5d8298356d28077bc30913ed37df65109",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "3948b05950fdd64002a5f182c65ba5cf2d53cf71",
                            "lessThan": "b52bd8bcb9e8ff250c79b44f9af8b15cae8911ab",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "3948b05950fdd64002a5f182c65ba5cf2d53cf71",
                            "lessThan": "8aba27c4a5020abdf60149239198297f88338a8d",
                            "status": "affected",
                            "versionType": "git"
                        }
                    ]
                },
                {
                    "product": "Linux",
                    "vendor": "Linux",
                    "defaultStatus": "affected",
                    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                    "programFiles": [
                        "drivers/net/ethernet/intel/igb/igb_main.c"
                    ],
                    "versions": [
                        {
                            "version": "6.4",
                            "status": "affected"
                        },
                        {
                            "version": "0",
                            "lessThan": "6.4",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.6.48",
                            "lessThanOrEqual": "6.6.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.10.7",
                            "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": "6.4",
                                    "versionEndExcluding": "6.6.48"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "6.4",
                                    "versionEndExcluding": "6.10.7"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "6.4",
                                    "versionEndExcluding": "6.11"
                                }
                            ]
                        }
                    ]
                }
            ],
            "references": [
                {
                    "url": "https://git.kernel.org/stable/c/8ea80ff5d8298356d28077bc30913ed37df65109"
                },
                {
                    "url": "https://git.kernel.org/stable/c/b52bd8bcb9e8ff250c79b44f9af8b15cae8911ab"
                },
                {
                    "url": "https://git.kernel.org/stable/c/8aba27c4a5020abdf60149239198297f88338a8d"
                }
            ],
            "title": "igb: cope with large MAX_SKB_FRAGS",
            "x_generator": {
                "engine": "bippy-1.2.0"
            }
        },
        "adp": [
            {
                "metrics": [
                    {
                        "other": {
                            "type": "ssvc",
                            "content": {
                                "timestamp": "2024-09-29T15:45:35.285052Z",
                                "id": "CVE-2024-45030",
                                "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-29T15:45:49.478Z"
                }
            }
        ]
    }
}