CVE-2023-54114

Source
https://cve.org/CVERecord?id=CVE-2023-54114
Import Source
https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2023-54114.json
JSON Data
https://api.test.osv.dev/v1/vulns/CVE-2023-54114
Downstream
Related
Published
2025-12-24T13:06:36.214Z
Modified
2026-03-20T12:33:27.126032Z
Summary
net: nsh: Use correct mac_offset to unwind gso skb in nsh_gso_segment()
Details

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

net: nsh: Use correct macoffset to unwind gso skb in nshgso_segment()

As the call trace shows, skbpanic was caused by wrong skb->macheader in nshgsosegment():

invalid opcode: 0000 [#1] PREEMPT SMP KASAN PTI CPU: 3 PID: 2737 Comm: syz Not tainted 6.3.0-next-20230505 #1 RIP: 0010:skbpanic+0xda/0xe0 call Trace: skbpush+0x91/0xa0 nshgsosegment+0x4f3/0x570 skbmacgso_segment+0x19e/0x270 __skbgsosegment+0x1e8/0x3c0 validatexmitskb+0x452/0x890 validatexmitskblist+0x99/0xd0 schdirect_xmit+0x294/0x7c0 __devqueuexmit+0x16f0/0x1d70 packetxmit+0x185/0x210 packetsnd+0xc15/0x1170 packetsendmsg+0x7b/0xa0 socksendmsg+0x14f/0x160

The root cause is: nshgsosegment() use skb->networkheader - nhoff to reset macheader in skbgsoerrorunwind() if inner-layer protocol gso fails. However, skb->networkheader may be reset by inner-layer protocol gso function e.g. mplsgsosegment. skb->macheader reset by the inaccurate networkheader will be larger than skb headroom.

nshgsosegment nhoff = skb->networkheader - skb->macheader; _skbpull(skb,nshlen) skbmacgsosegment mplsgsosegment skbresetnetworkheader(skb);//skb->networkheader+=nshlen return -EINVAL; skbgsoerrorunwind skbpush(skb, nshlen); skb->macheader = skb->networkheader - nhoff; // skb->macheader > skb->headroom, cause skbpush panic

Use correct macoffset to restore macheader and get rid of nhoff.

Database specific
{
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2023/54xxx/CVE-2023-54114.json",
    "cna_assigner": "Linux"
}
References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
c411ed854584a71b0e86ac3019b60e4789d88086
Fixed
2f88c8d38ecf5ed0273f99a067246899ba499eb2
Fixed
d2309e0cb27b6871b273fbc1725e93be62570d86
Fixed
435855b0831b351cb72cb38369ee33122ce9574c
Fixed
02b20e0bc0c2628539e9e518dc342787c3332de2
Fixed
cdd8160dcda1fed2028a5f96575a84afc23aff7d
Fixed
6fbedf987b6b8ed54a50e2205d998eb2c8be72f9
Fixed
cb38e62922aa3991793344b5a5870e7291c74a44
Fixed
c83b49383b595be50647f0c764a48c78b5f3c4f8

Database specific

source
"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2023-54114.json"

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
4.14.0
Fixed
4.14.316
Type
ECOSYSTEM
Events
Introduced
4.15.0
Fixed
4.19.284
Type
ECOSYSTEM
Events
Introduced
4.20.0
Fixed
5.4.244
Type
ECOSYSTEM
Events
Introduced
5.5.0
Fixed
5.10.181
Type
ECOSYSTEM
Events
Introduced
5.11.0
Fixed
5.15.113
Type
ECOSYSTEM
Events
Introduced
5.16.0
Fixed
6.1.30
Type
ECOSYSTEM
Events
Introduced
6.2.0
Fixed
6.3.4

Database specific

source
"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2023-54114.json"