GCVE Workshop - 22 September 2026 (14:00-18:00), Luxembourg Before The Vulnopticon Conference - Registration

CVE-2025-71080 (GCVE-0-2025-71080)

Vulnerability from cvelistv5 – Published: 2026-01-13 15:34 – Updated: 2026-08-05 12:11
VLAI
Title
ipv6: fix a BUG in rt6_get_pcpu_route() under PREEMPT_RT
Summary
In the Linux kernel, the following vulnerability has been resolved: ipv6: fix a BUG in rt6_get_pcpu_route() under PREEMPT_RT On PREEMPT_RT kernels, after rt6_get_pcpu_route() returns NULL, the current task can be preempted. Another task running on the same CPU may then execute rt6_make_pcpu_route() and successfully install a pcpu_rt entry. When the first task resumes execution, its cmpxchg() in rt6_make_pcpu_route() will fail because rt6i_pcpu is no longer NULL, triggering the BUG_ON(prev). It's easy to reproduce it by adding mdelay() after rt6_get_pcpu_route(). Using preempt_disable/enable is not appropriate here because ip6_rt_pcpu_alloc() may sleep. Fix this by handling the cmpxchg() failure gracefully on PREEMPT_RT: free our allocation and return the existing pcpu_rt installed by another task. The BUG_ON is replaced by WARN_ON_ONCE for non-PREEMPT_RT kernels where such races should not occur.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: d2d6422f8bd17c6bb205133e290625a564194496 , < 1dc33ad0867325f8d2c6d7b2a6f542d4f3121f66 (git)
Affected: d2d6422f8bd17c6bb205133e290625a564194496 , < 787515ccb2292f82eb0876993129154629a49651 (git)
Affected: d2d6422f8bd17c6bb205133e290625a564194496 , < 1adaea51c61b52e24e7ab38f7d3eba023b2d050d (git)
guessed Create a notification for this product.
Linux Linux Affected: 6.12
Unaffected: 0 , < 6.12 (semver)
Unaffected: 6.12.64 , ≤ 6.12.* (semver)
Unaffected: 6.18.4 , ≤ 6.18.* (semver)
Unaffected: 6.19 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "net/ipv6/route.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "1dc33ad0867325f8d2c6d7b2a6f542d4f3121f66",
              "status": "affected",
              "version": "d2d6422f8bd17c6bb205133e290625a564194496",
              "versionType": "git"
            },
            {
              "lessThan": "787515ccb2292f82eb0876993129154629a49651",
              "status": "affected",
              "version": "d2d6422f8bd17c6bb205133e290625a564194496",
              "versionType": "git"
            },
            {
              "lessThan": "1adaea51c61b52e24e7ab38f7d3eba023b2d050d",
              "status": "affected",
              "version": "d2d6422f8bd17c6bb205133e290625a564194496",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "net/ipv6/route.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.12"
            },
            {
              "lessThan": "6.12",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.64",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.4",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.19",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.64",
                  "versionStartIncluding": "6.12",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.4",
                  "versionStartIncluding": "6.12",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.19",
                  "versionStartIncluding": "6.12",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nipv6: fix a BUG in rt6_get_pcpu_route() under PREEMPT_RT\n\nOn PREEMPT_RT kernels, after rt6_get_pcpu_route() returns NULL, the\ncurrent task can be preempted. Another task running on the same CPU\nmay then execute rt6_make_pcpu_route() and successfully install a\npcpu_rt entry. When the first task resumes execution, its cmpxchg()\nin rt6_make_pcpu_route() will fail because rt6i_pcpu is no longer\nNULL, triggering the BUG_ON(prev). It\u0027s easy to reproduce it by adding\nmdelay() after rt6_get_pcpu_route().\n\nUsing preempt_disable/enable is not appropriate here because\nip6_rt_pcpu_alloc() may sleep.\n\nFix this by handling the cmpxchg() failure gracefully on PREEMPT_RT:\nfree our allocation and return the existing pcpu_rt installed by\nanother task. The BUG_ON is replaced by WARN_ON_ONCE for non-PREEMPT_RT\nkernels where such races should not occur."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.5,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:N - Unauthenticated IPv6 packets reach ip6_route_input() and ip6_pol_route() before transport delivery or authentication, exposing the vulnerable per-CPU route creation path to a remote peer.\nAC:L - In a reasonable multi-queue or threaded-network PREEMPT_RT deployment, concurrent attacker-driven packet streams can exercise both sides of the short empty-slot race repeatedly. No memory-layout guess or inherently uncontrollable condition is required.\nPR:N - The inbound IPv6 routing path performs no capability or authentication check before reaching the vulnerable code.\nUI:N - No victim action is required; processing attacker-generated IPv6 traffic triggers route lookup automatically.\nS:U - The resulting kernel failure affects the same host and security authority in which packet processing occurs, without crossing a virtualization or sandbox boundary.\nC:N - The failed cmpxchg only detects an already-installed valid route and immediately reaches BUG_ON; it provides no memory disclosure or read primitive.\nI:N - The atomic installation fails without overwriting the existing pointer, and there is no use-after-free, out-of-bounds write, or other attacker-controlled modification.\nA:H - BUG_ON executes while bottom halves are disabled and raises a fatal invalid-opcode oops, which can directly produce a kernel panic and complete system outage."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T12:11:55.485Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/1dc33ad0867325f8d2c6d7b2a6f542d4f3121f66"
        },
        {
          "url": "https://git.kernel.org/stable/c/787515ccb2292f82eb0876993129154629a49651"
        },
        {
          "url": "https://git.kernel.org/stable/c/1adaea51c61b52e24e7ab38f7d3eba023b2d050d"
        }
      ],
      "title": "ipv6: fix a BUG in rt6_get_pcpu_route() under PREEMPT_RT",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2025-71080",
    "datePublished": "2026-01-13T15:34:44.832Z",
    "dateReserved": "2026-01-13T15:30:19.648Z",
    "dateUpdated": "2026-08-05T12:11:55.485Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2025-71080",
      "date": "2026-09-17",
      "epss": "0.00298",
      "percentile": "0.225"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2025-71080\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2026-01-13T16:16:07.550\",\"lastModified\":\"2026-07-30T06:24:49.263\",\"vulnStatus\":\"Modified\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nipv6: fix a BUG in rt6_get_pcpu_route() under PREEMPT_RT\\n\\nOn PREEMPT_RT kernels, after rt6_get_pcpu_route() returns NULL, the\\ncurrent task can be preempted. Another task running on the same CPU\\nmay then execute rt6_make_pcpu_route() and successfully install a\\npcpu_rt entry. When the first task resumes execution, its cmpxchg()\\nin rt6_make_pcpu_route() will fail because rt6i_pcpu is no longer\\nNULL, triggering the BUG_ON(prev). It\u0027s easy to reproduce it by adding\\nmdelay() after rt6_get_pcpu_route().\\n\\nUsing preempt_disable/enable is not appropriate here because\\nip6_rt_pcpu_alloc() may sleep.\\n\\nFix this by handling the cmpxchg() failure gracefully on PREEMPT_RT:\\nfree our allocation and return the existing pcpu_rt installed by\\nanother task. The BUG_ON is replaced by WARN_ON_ONCE for non-PREEMPT_RT\\nkernels where such races should not occur.\"},{\"lang\":\"es\",\"value\":\"En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta:\\n\\nipv6: corregir un BUG en rt6_get_pcpu_route() bajo PREEMPT_RT\\n\\nEn kernels PREEMPT_RT, despu\u00e9s de que rt6_get_pcpu_route() devuelve NULL, la tarea actual puede ser desalojada. Otra tarea ejecut\u00e1ndose en la misma CPU puede entonces ejecutar rt6_make_pcpu_route() e instalar exitosamente una entrada pcpu_rt. Cuando la primera tarea reanuda la ejecuci\u00f3n, su cmpxchg() en rt6_make_pcpu_route() fallar\u00e1 porque rt6i_pcpu ya no es NULL, lo que activa el BUG_ON(prev). Es f\u00e1cil reproducirlo a\u00f1adiendo mdelay() despu\u00e9s de rt6_get_pcpu_route().\\n\\nUsar preempt_disable/enable no es apropiado aqu\u00ed porque ip6_rt_pcpu_alloc() puede dormir.\\n\\nSolucionar esto manejando el fallo de cmpxchg() de forma elegante en PREEMPT_RT: liberar nuestra asignaci\u00f3n y devolver el pcpu_rt existente instalado por otra tarea. El BUG_ON es reemplazado por WARN_ON_ONCE para kernels que no son PREEMPT_RT donde tales condiciones de carrera no deber\u00edan ocurrir.\"}],\"affected\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"affectedData\":[{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"unaffected\",\"programFiles\":[\"net/ipv6/route.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"d2d6422f8bd17c6bb205133e290625a564194496\",\"lessThan\":\"1dc33ad0867325f8d2c6d7b2a6f542d4f3121f66\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"d2d6422f8bd17c6bb205133e290625a564194496\",\"lessThan\":\"787515ccb2292f82eb0876993129154629a49651\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"d2d6422f8bd17c6bb205133e290625a564194496\",\"lessThan\":\"1adaea51c61b52e24e7ab38f7d3eba023b2d050d\",\"versionType\":\"git\",\"status\":\"affected\"}]},{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"affected\",\"programFiles\":[\"net/ipv6/route.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"6.12\",\"status\":\"affected\"},{\"version\":\"0\",\"lessThan\":\"6.12\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.12.64\",\"lessThanOrEqual\":\"6.12.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.18.4\",\"lessThanOrEqual\":\"6.18.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.19\",\"lessThanOrEqual\":\"*\",\"versionType\":\"original_commit_for_fix\",\"status\":\"unaffected\"}]}]}],\"metrics\":{\"cvssMetricV31\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"type\":\"Secondary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H\",\"baseScore\":7.5,\"baseSeverity\":\"HIGH\",\"attackVector\":\"NETWORK\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"NONE\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"NONE\",\"integrityImpact\":\"NONE\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":3.9,\"impactScore\":3.6},{\"source\":\"nvd@nist.gov\",\"type\":\"Primary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H\",\"baseScore\":5.5,\"baseSeverity\":\"MEDIUM\",\"attackVector\":\"LOCAL\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"LOW\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"NONE\",\"integrityImpact\":\"NONE\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":1.8,\"impactScore\":3.6}]},\"weaknesses\":[{\"source\":\"nvd@nist.gov\",\"type\":\"Primary\",\"description\":[{\"lang\":\"en\",\"value\":\"CWE-617\"}]}],\"configurations\":[{\"nodes\":[{\"operator\":\"OR\",\"negate\":false,\"cpeMatch\":[{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"6.12.1\",\"versionEndExcluding\":\"6.12.64\",\"matchCriteriaId\":\"087ADCE7-533D-4BFC-9FB3-A1872B77A2AA\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"6.13\",\"versionEndExcluding\":\"6.18.4\",\"matchCriteriaId\":\"DC988EA0-0E32-457A-BF95-89BEB31A227B\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.12:-:*:*:*:*:*:*\",\"matchCriteriaId\":\"0E698080-7669-4132-8817-4C674EEBCE54\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.19:rc1:*:*:*:*:*:*\",\"matchCriteriaId\":\"17B67AA7-40D6-4AFA-8459-F200F3D7CFD1\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.19:rc2:*:*:*:*:*:*\",\"matchCriteriaId\":\"C47E4CC9-C826-4FA9-B014-7FE3D9B318B2\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.19:rc3:*:*:*:*:*:*\",\"matchCriteriaId\":\"F71D92C0-C023-48BD-B3B6-70B638EEE298\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.19:rc4:*:*:*:*:*:*\",\"matchCriteriaId\":\"13580667-0A98-40CC-B29F-D12790B91BDB\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.19:rc5:*:*:*:*:*:*\",\"matchCriteriaId\":\"CAD1FED7-CF48-47BF-AC7D-7B6FA3C065FC\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.19:rc6:*:*:*:*:*:*\",\"matchCriteriaId\":\"3EF854A1-ABB1-4E93-BE9A-44569EC76C0D\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.19:rc7:*:*:*:*:*:*\",\"matchCriteriaId\":\"F5DC0CA6-F0AF-4DDF-A882-3DADB9A886A7\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.19:rc8:*:*:*:*:*:*\",\"matchCriteriaId\":\"EB5B7DFC-C36B-45D8-922C-877569FDDF43\"}]}]}],\"references\":[{\"url\":\"https://git.kernel.org/stable/c/1adaea51c61b52e24e7ab38f7d3eba023b2d050d\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/1dc33ad0867325f8d2c6d7b2a6f542d4f3121f66\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/787515ccb2292f82eb0876993129154629a49651\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]}]}}",
    "redhat_vex": {
      "aggregate_severity": "Moderate",
      "current_release_date": "2026-08-21T20:05:21+00:00",
      "cve": "CVE-2025-71080",
      "id": "CVE-2025-71080",
      "initial_release_date": "2025-01-01T00:00:00+00:00",
      "product_status:known_affected": "90",
      "product_status:known_not_affected": "184",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: ipv6: fix a BUG in rt6_get_pcpu_route() under PREEMPT_RT",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2025/cve-2025-71080.json",
      "version": "3"
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…

Related by attack behaviour

Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.


Loading…