« Volver al listado

CVE-2023-54114

Estado: AplazadaSin puntuar—

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

net: nsh: Use correct mac_offset to unwind gso skb in nsh_gso_segment()

As the call trace shows, skb_panic was caused by wrong skb->mac_header in nsh_gso_segment():

The root cause is: nsh_gso_segment() use skb->network_header - nhoff to reset mac_header in skb_gso_error_unwind() if inner-layer protocol gso fails. However, skb->network_header may be reset by inner-layer protocol gso function e.g. mpls_gso_segment. skb->mac_header reset by the inaccurate network_header will be larger than skb headroom.

Use correct mac_offset to restore mac_header and get rid of nhoff.

Detalles técnicos trazas, registros y código del informe original
invalid opcode: 0000 [#1] PREEMPT SMP KASAN PTI
CPU: 3 PID: 2737 Comm: syz Not tainted 6.3.0-next-20230505 #1
RIP: 0010:skb_panic+0xda/0xe0
call Trace:
 skb_push+0x91/0xa0
 nsh_gso_segment+0x4f3/0x570
 skb_mac_gso_segment+0x19e/0x270
 __skb_gso_segment+0x1e8/0x3c0
 validate_xmit_skb+0x452/0x890
 validate_xmit_skb_list+0x99/0xd0
 sch_direct_xmit+0x294/0x7c0
 __dev_queue_xmit+0x16f0/0x1d70
 packet_xmit+0x185/0x210
 packet_snd+0xc15/0x1170
 packet_sendmsg+0x7b/0xa0
 sock_sendmsg+0x14f/0x160

nsh_gso_segment
    nhoff = skb->network_header - skb->mac_header;
    __skb_pull(skb,nsh_len)
    skb_mac_gso_segment
        mpls_gso_segment
            skb_reset_network_header(skb);//skb->network_header+=nsh_len
            return -EINVAL;
    skb_gso_error_unwind
        skb_push(skb, nsh_len);
        skb->mac_header = skb->network_header - nhoff;
        // skb->mac_header > skb->headroom, cause skb_push panic

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-2023-54114",
  "cveTags": [],
  "metrics": {},
  "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": "c411ed854584a71b0e86ac3019b60e4789d88086",
              "lessThan": "2f88c8d38ecf5ed0273f99a067246899ba499eb2",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "c411ed854584a71b0e86ac3019b60e4789d88086",
              "lessThan": "d2309e0cb27b6871b273fbc1725e93be62570d86",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "c411ed854584a71b0e86ac3019b60e4789d88086",
              "lessThan": "435855b0831b351cb72cb38369ee33122ce9574c",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "c411ed854584a71b0e86ac3019b60e4789d88086",
              "lessThan": "02b20e0bc0c2628539e9e518dc342787c3332de2",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "c411ed854584a71b0e86ac3019b60e4789d88086",
              "lessThan": "cdd8160dcda1fed2028a5f96575a84afc23aff7d",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "c411ed854584a71b0e86ac3019b60e4789d88086",
              "lessThan": "6fbedf987b6b8ed54a50e2205d998eb2c8be72f9",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "c411ed854584a71b0e86ac3019b60e4789d88086",
              "lessThan": "cb38e62922aa3991793344b5a5870e7291c74a44",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "c411ed854584a71b0e86ac3019b60e4789d88086",
              "lessThan": "c83b49383b595be50647f0c764a48c78b5f3c4f8",
              "versionType": "git"
            }
          ],
          "programFiles": [
            "net/nsh/nsh.c"
          ],
          "defaultStatus": "unaffected"
        },
        {
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "product": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "4.14"
            },
            {
              "status": "unaffected",
              "version": "0",
              "lessThan": "4.14",
              "versionType": "semver"
            },
            {
              "status": "unaffected",
              "version": "4.14.316",
              "versionType": "semver",
              "lessThanOrEqual": "4.14.*"
            },
            {
              "status": "unaffected",
              "version": "4.19.284",
              "versionType": "semver",
              "lessThanOrEqual": "4.19.*"
            },
            {
              "status": "unaffected",
              "version": "5.4.244",
              "versionType": "semver",
              "lessThanOrEqual": "5.4.*"
            },
            {
              "status": "unaffected",
              "version": "5.10.181",
              "versionType": "semver",
              "lessThanOrEqual": "5.10.*"
            },
            {
              "status": "unaffected",
              "version": "5.15.113",
              "versionType": "semver",
              "lessThanOrEqual": "5.15.*"
            },
            {
              "status": "unaffected",
              "version": "6.1.30",
              "versionType": "semver",
              "lessThanOrEqual": "6.1.*"
            },
            {
              "status": "unaffected",
              "version": "6.3.4",
              "versionType": "semver",
              "lessThanOrEqual": "6.3.*"
            },
            {
              "status": "unaffected",
              "version": "6.4",
              "versionType": "original_commit_for_fix",
              "lessThanOrEqual": "*"
            }
          ],
          "programFiles": [
            "net/nsh/nsh.c"
          ],
          "defaultStatus": "affected"
        }
      ]
    }
  ],
  "published": "2025-12-24T13:16:13.323",
  "references": [
    {
      "url": "https://git.kernel.org/stable/c/02b20e0bc0c2628539e9e518dc342787c3332de2",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/2f88c8d38ecf5ed0273f99a067246899ba499eb2",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/435855b0831b351cb72cb38369ee33122ce9574c",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/6fbedf987b6b8ed54a50e2205d998eb2c8be72f9",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/c83b49383b595be50647f0c764a48c78b5f3c4f8",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/cb38e62922aa3991793344b5a5870e7291c74a44",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/cdd8160dcda1fed2028a5f96575a84afc23aff7d",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/d2309e0cb27b6871b273fbc1725e93be62570d86",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    }
  ],
  "vulnStatus": "Deferred",
  "descriptions": [
    {
      "lang": "en",
      "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnet: nsh: Use correct mac_offset to unwind gso skb in nsh_gso_segment()\n\nAs the call trace shows, skb_panic was caused by wrong skb->mac_header\nin nsh_gso_segment():\n\ninvalid opcode: 0000 [#1] PREEMPT SMP KASAN PTI\nCPU: 3 PID: 2737 Comm: syz Not tainted 6.3.0-next-20230505 #1\nRIP: 0010:skb_panic+0xda/0xe0\ncall Trace:\n skb_push+0x91/0xa0\n nsh_gso_segment+0x4f3/0x570\n skb_mac_gso_segment+0x19e/0x270\n __skb_gso_segment+0x1e8/0x3c0\n validate_xmit_skb+0x452/0x890\n validate_xmit_skb_list+0x99/0xd0\n sch_direct_xmit+0x294/0x7c0\n __dev_queue_xmit+0x16f0/0x1d70\n packet_xmit+0x185/0x210\n packet_snd+0xc15/0x1170\n packet_sendmsg+0x7b/0xa0\n sock_sendmsg+0x14f/0x160\n\nThe root cause is:\nnsh_gso_segment() use skb->network_header - nhoff to reset mac_header\nin skb_gso_error_unwind() if inner-layer protocol gso fails.\nHowever, skb->network_header may be reset by inner-layer protocol\ngso function e.g. mpls_gso_segment. skb->mac_header reset by the\ninaccurate network_header will be larger than skb headroom.\n\nnsh_gso_segment\n    nhoff = skb->network_header - skb->mac_header;\n    __skb_pull(skb,nsh_len)\n    skb_mac_gso_segment\n        mpls_gso_segment\n            skb_reset_network_header(skb);//skb->network_header+=nsh_len\n            return -EINVAL;\n    skb_gso_error_unwind\n        skb_push(skb, nsh_len);\n        skb->mac_header = skb->network_header - nhoff;\n        // skb->mac_header > skb->headroom, cause skb_push panic\n\nUse correct mac_offset to restore mac_header and get rid of nhoff."
    }
  ],
  "lastModified": "2026-06-17T06:46:49.610",
  "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}