« Volver al listado

CVE-2025-68813

Estado: AplazadaSin puntuar—

In the Linux kernel, the following vulnerability has been resolved:

ipvs: fix ipv4 null-ptr-deref in route error path

The IPv4 code path in __ip_vs_get_out_rt() calls dst_link_failure() without ensuring skb->dev is set, leading to a NULL pointer dereference in fib_compute_spec_dst() when ipv4_link_failure() attempts to send ICMP destination unreachable messages.

The issue emerged after commit ed0de45a1008 ("ipv4: recompile ip options in ipv4_link_failure") started calling __ip_options_compile() from ipv4_link_failure().

Leer descripción completaMostrar menos

This code path eventually calls fib_compute_spec_dst() which dereferences skb->dev. An attempt was made to fix the NULL skb->dev dereference in commit 0113d9c9d1cc ("ipv4: fix null-deref in ipv4_link_failure"), but it only addressed the immediate dev_net(skb->dev) dereference by using a fallback device. The fix was incomplete because fib_compute_spec_dst() later in the call chain still accesses skb->dev directly, which remains NULL when IPVS calls dst_link_failure().

The crash occurs when: 1. IPVS processes a packet in NAT mode with a misconfigured destination 2. Route lookup fails in __ip_vs_get_out_rt() before establishing a route 3. The error path calls dst_link_failure(skb) with skb->dev == NULL 4. ipv4_link_failure() → ipv4_send_dest_unreach() → __ip_options_compile() → fib_compute_spec_dst() 5. fib_compute_spec_dst() dereferences NULL skb->dev

Apply the same fix used for IPv6 in commit 326bf17ea5d4 ("ipvs: fix ipv6 route unreach panic"): set skb->dev from skb_dst(skb)->dev before calling dst_link_failure().

Detalles técnicos trazas, registros y código del informe original
KASAN: null-ptr-deref in range [0x0000000000000328-0x000000000000032f]
CPU: 1 PID: 12732 Comm: syz.1.3469 Not tainted 6.6.114 #2
RIP: 0010:__in_dev_get_rcu include/linux/inetdevice.h:233
RIP: 0010:fib_compute_spec_dst+0x17a/0x9f0 net/ipv4/fib_frontend.c:285
Call Trace:
  <TASK>
  spec_dst_fill net/ipv4/ip_options.c:232
  spec_dst_fill net/ipv4/ip_options.c:229
  __ip_options_compile+0x13a1/0x17d0 net/ipv4/ip_options.c:330
  ipv4_send_dest_unreach net/ipv4/route.c:1252
  ipv4_link_failure+0x702/0xb80 net/ipv4/route.c:1265
  dst_link_failure include/net/dst.h:437
  __ip_vs_get_out_rt+0x15fd/0x19e0 net/netfilter/ipvs/ip_vs_xmit.c:412
  ip_vs_nat_xmit+0x1d8/0xc80 net/netfilter/ipvs/ip_vs_xmit.c:764

CVSS

NVD no ha asignado puntuación CVSS a esta CVE (habitual desde el cambio de política de abril de 2026).

Probabilidad de explotación (EPSS)

EPSS (Exploit Prediction Scoring System, de FIRST) estima la probabilidad de que una vulnerabilidad sea explotada en 30 días. Complementa a CVSS (impacto) y a CISA KEV (explotación confirmada).

Tecnologías afectadas (1)

⚠ Inferidas por IA a partir de la descripción — NVD aún no ha analizado esta CVE; no son CPE verificados.

Referencias

JSON original (NVD)

Mostrar
{
  "id": "CVE-2025-68813",
  "cveTags": [],
  "metrics": {
    "ssvcV203": [
      {
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "ssvcData": {
          "id": "CVE-2025-68813",
          "role": "CISA Coordinator",
          "options": [
            {
              "exploitation": "none"
            },
            {
              "automatable": "yes"
            },
            {
              "technicalImpact": "partial"
            }
          ],
          "version": "2.0.3",
          "timestamp": "2026-06-16T19:15:40.029608Z"
        }
      }
    ]
  },
  "affected": [
    {
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "affectedData": [
        {
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "product": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "ed0de45a1008991fdaa27a0152befcb74d126a8b",
              "lessThan": "dd72a93c80408f06327dd2d956eb1a656d0b5903",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "ed0de45a1008991fdaa27a0152befcb74d126a8b",
              "lessThan": "312d7cd88882fc6cadcc08b02287497aaaf94bcd",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "ed0de45a1008991fdaa27a0152befcb74d126a8b",
              "lessThan": "cdeff10851c37a002d87a035818ebd60fdb74447",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "ed0de45a1008991fdaa27a0152befcb74d126a8b",
              "lessThan": "4729ff0581fbb7ad098b6153b76b6f5aac94618a",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "ed0de45a1008991fdaa27a0152befcb74d126a8b",
              "lessThan": "25ab24df31f7af843c96a38e0781b9165216e1a8",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "ed0de45a1008991fdaa27a0152befcb74d126a8b",
              "lessThan": "689a627d14788ad772e0fa24c2e57a23dbc7ce90",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "ed0de45a1008991fdaa27a0152befcb74d126a8b",
              "lessThan": "ad891bb3d079a46a821bf2b8867854645191bab0",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "6c2fa855d8178699706b1192db2f1f8102b0ba1e",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "fbf569d2beee2a4a7a0bc8b619c26101d1211a88",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "ff71f99d5fb2daf54340e8b290d0bc4e6b4c1d38",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "3d988fcddbe7b8673a231958bd2fba61b5a7ced9",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "8a430e56a6485267a1b2d3747209d26c54d1a34b",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "6bd1ee0a993fc9574ae43c1994c54a60cb23a380",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "3.18.139",
              "lessThan": "3.19",
              "versionType": "semver"
            },
            {
              "status": "affected",
              "version": "4.4.179",
              "lessThan": "4.5",
              "versionType": "semver"
            },
            {
              "status": "affected",
              "version": "4.9.171",
              "lessThan": "4.10",
              "versionType": "semver"
            },
            {
              "status": "affected",
              "version": "4.14.114",
              "lessThan": "4.15",
              "versionType": "semver"
            },
            {
              "status": "affected",
              "version": "4.19.37",
              "lessThan": "4.20",
              "versionType": "semver"
            },
            {
              "status": "affected",
              "version": "5.0.10",
              "lessThan": "5.1",
              "versionType": "semver"
            }
          ],
          "programFiles": [
            "net/netfilter/ipvs/ip_vs_xmit.c"
          ],
          "defaultStatus": "unaffected"
        },
        {
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "product": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "5.1"
            },
            {
              "status": "unaffected",
              "version": "0",
              "lessThan": "5.1",
              "versionType": "semver"
            },
            {
              "status": "unaffected",
              "version": "5.10.248",
              "versionType": "semver",
              "lessThanOrEqual": "5.10.*"
            },
            {
              "status": "unaffected",
              "version": "5.15.198",
              "versionType": "semver",
              "lessThanOrEqual": "5.15.*"
            },
            {
              "status": "unaffected",
              "version": "6.1.160",
              "versionType": "semver",
              "lessThanOrEqual": "6.1.*"
            },
            {
              "status": "unaffected",
              "version": "6.6.120",
              "versionType": "semver",
              "lessThanOrEqual": "6.6.*"
            },
            {
              "status": "unaffected",
              "version": "6.12.64",
              "versionType": "semver",
              "lessThanOrEqual": "6.12.*"
            },
            {
              "status": "unaffected",
              "version": "6.18.3",
              "versionType": "semver",
              "lessThanOrEqual": "6.18.*"
            },
            {
              "status": "unaffected",
              "version": "6.19",
              "versionType": "original_commit_for_fix",
              "lessThanOrEqual": "*"
            }
          ],
          "programFiles": [
            "net/netfilter/ipvs/ip_vs_xmit.c"
          ],
          "defaultStatus": "affected"
        }
      ]
    }
  ],
  "published": "2026-01-13T16:16:03.523",
  "references": [
    {
      "url": "https://git.kernel.org/stable/c/25ab24df31f7af843c96a38e0781b9165216e1a8",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/312d7cd88882fc6cadcc08b02287497aaaf94bcd",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/4729ff0581fbb7ad098b6153b76b6f5aac94618a",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/689a627d14788ad772e0fa24c2e57a23dbc7ce90",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/ad891bb3d079a46a821bf2b8867854645191bab0",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/cdeff10851c37a002d87a035818ebd60fdb74447",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/dd72a93c80408f06327dd2d956eb1a656d0b5903",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    }
  ],
  "vulnStatus": "Deferred",
  "descriptions": [
    {
      "lang": "en",
      "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nipvs: fix ipv4 null-ptr-deref in route error path\n\nThe IPv4 code path in __ip_vs_get_out_rt() calls dst_link_failure()\nwithout ensuring skb->dev is set, leading to a NULL pointer dereference\nin fib_compute_spec_dst() when ipv4_link_failure() attempts to send\nICMP destination unreachable messages.\n\nThe issue emerged after commit ed0de45a1008 (\"ipv4: recompile ip options\nin ipv4_link_failure\") started calling __ip_options_compile() from\nipv4_link_failure(). This code path eventually calls fib_compute_spec_dst()\nwhich dereferences skb->dev. An attempt was made to fix the NULL skb->dev\ndereference in commit 0113d9c9d1cc (\"ipv4: fix null-deref in\nipv4_link_failure\"), but it only addressed the immediate dev_net(skb->dev)\ndereference by using a fallback device. The fix was incomplete because\nfib_compute_spec_dst() later in the call chain still accesses skb->dev\ndirectly, which remains NULL when IPVS calls dst_link_failure().\n\nThe crash occurs when:\n1. IPVS processes a packet in NAT mode with a misconfigured destination\n2. Route lookup fails in __ip_vs_get_out_rt() before establishing a route\n3. The error path calls dst_link_failure(skb) with skb->dev == NULL\n4. ipv4_link_failure() → ipv4_send_dest_unreach() →\n   __ip_options_compile() → fib_compute_spec_dst()\n5. fib_compute_spec_dst() dereferences NULL skb->dev\n\nApply the same fix used for IPv6 in commit 326bf17ea5d4 (\"ipvs: fix\nipv6 route unreach panic\"): set skb->dev from skb_dst(skb)->dev before\ncalling dst_link_failure().\n\nKASAN: null-ptr-deref in range [0x0000000000000328-0x000000000000032f]\nCPU: 1 PID: 12732 Comm: syz.1.3469 Not tainted 6.6.114 #2\nRIP: 0010:__in_dev_get_rcu include/linux/inetdevice.h:233\nRIP: 0010:fib_compute_spec_dst+0x17a/0x9f0 net/ipv4/fib_frontend.c:285\nCall Trace:\n  <TASK>\n  spec_dst_fill net/ipv4/ip_options.c:232\n  spec_dst_fill net/ipv4/ip_options.c:229\n  __ip_options_compile+0x13a1/0x17d0 net/ipv4/ip_options.c:330\n  ipv4_send_dest_unreach net/ipv4/route.c:1252\n  ipv4_link_failure+0x702/0xb80 net/ipv4/route.c:1265\n  dst_link_failure include/net/dst.h:437\n  __ip_vs_get_out_rt+0x15fd/0x19e0 net/netfilter/ipvs/ip_vs_xmit.c:412\n  ip_vs_nat_xmit+0x1d8/0xc80 net/netfilter/ipvs/ip_vs_xmit.c:764"
    },
    {
      "lang": "es",
      "value": "En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta:\n\nipvs: corrección de desreferencia de puntero nulo ipv4 en la ruta de error de enrutamiento\n\nLa ruta de código IPv4 en __ip_vs_get_out_rt() llama a dst_link_failure() sin asegurar que skb-&gt;dev esté configurado, lo que lleva a una desreferencia de puntero NULO en fib_compute_spec_dst() cuando ipv4_link_failure() intenta enviar mensajes ICMP de destino inalcanzable.\n\nEl problema surgió después de que el commit ed0de45a1008 ('ipv4: recompilar opciones ip en ipv4_link_failure') comenzó a llamar a __ip_options_compile() desde ipv4_link_failure(). Esta ruta de código finalmente llama a fib_compute_spec_dst() que desreferencia skb-&gt;dev. Se intentó corregir la desreferencia de skb-&gt;dev NULO en el commit 0113d9c9d1cc ('ipv4: corregir desreferencia nula en ipv4_link_failure'), pero solo abordó la desreferencia inmediata de dev_net(skb-&gt;dev) mediante el uso de un dispositivo de respaldo. La corrección fue incompleta porque fib_compute_spec_dst() más adelante en la cadena de llamadas todavía accede a skb-&gt;dev directamente, que permanece NULO cuando IPVS llama a dst_link_failure().\n\nEl fallo ocurre cuando:\n1. IPVS procesa un paquete en modo NAT con un destino mal configurado\n2. La búsqueda de ruta falla en __ip_vs_get_out_rt() antes de establecer una ruta\n3. La ruta de error llama a dst_link_failure(skb) con skb-&gt;dev == NULO\n4. ipv4_link_failure() ? ipv4_send_dest_unreach() ? __ip_options_compile() ? fib_compute_spec_dst()\n5. fib_compute_spec_dst() desreferencia skb-&gt;dev NULO\n\nAplicar la misma corrección utilizada para IPv6 en el commit 326bf17ea5d4 ('ipvs: corregir pánico por ruta inalcanzable ipv6'): establecer skb-&gt;dev desde skb_dst(skb)-&gt;dev antes de llamar a dst_link_failure().\n\nKASAN: desreferencia de puntero nulo en el rango [0x0000000000000328-0x000000000000032f]\nCPU: 1 PID: 12732 Comm: syz.1.3469 No contaminado 6.6.114 #2\nRIP: 0010:__in_dev_get_rcu include/linux/inetdevice.h:233\nRIP: 0010:fib_compute_spec_dst+0x17a/0x9f0 net/ipv4/fib_frontend.c:285\nRastro de Llamada:\n  \n  spec_dst_fill net/ipv4/ip_options.c:232\n  spec_dst_fill net/ipv4/ip_options.c:229\n  __ip_options_compile+0x13a1/0x17d0 net/ipv4/ip_options.c:330\n  ipv4_send_dest_unreach net/ipv4/route.c:1252\n  ipv4_link_failure+0x702/0xb80 net/ipv4/route.c:1265\n  dst_link_failure include/net/dst.h:437\n  __ip_vs_get_out_rt+0x15fd/0x19e0 net/netfilter/ipvs/ip_vs_xmit.c:412\n  ip_vs_nat_xmit+0x1d8/0xc80 net/netfilter/ipvs/ip_vs_xmit.c:764"
    }
  ],
  "lastModified": "2026-06-17T09:59:39.577",
  "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}