In the Linux kernel, the following vulnerability has been resolved:
net: clear the dst when changing skb protocol
A not-so-careful NAT46 BPF program can crash the kernel if it indiscriminately flips ingress packets from v4 to v6:
BUG: kernel NULL pointer dereference, address: 0000000000000000 ip6rcvcore (net/ipv6/ip6input.c:190:20) ipv6rcv (net/ipv6/ip6input.c:306:8) processbacklog (net/core/dev.c:6186:4) napipoll (net/core/dev.c:6906:9) netrxaction (net/core/dev.c:7028:13) dosoftirq (kernel/softirq.c:462:3) netifrx (net/core/dev.c:5326:3) devloopbackxmit (net/core/dev.c:4015:2) ipmcfinishoutput (net/ipv4/ipoutput.c:363:8) NFHOOK (./include/linux/netfilter.h:314:9) ipmcoutput (net/ipv4/ipoutput.c:400:5) dstoutput (./include/net/dst.h:459:9) iplocalout (net/ipv4/ipoutput.c:130:9) ipsendskb (net/ipv4/ipoutput.c:1496:8) udpsendskb (net/ipv4/udp.c:1040:8) udp_sendmsg (net/ipv4/udp.c:1328:10)
The output interface has a 4->6 program attached at ingress. We try to loop the multicast skb back to the sending socket. Ingress BPF runs as part of netifrx(), pushes a valid v6 hdr and changes skb->protocol to v6. We enter ip6rcvcore which tries to use skbdst(). But the dst is still an IPv4 one left after IPv4 mcast output.
Clear the dst in all BPF helpers which change the protocol. Try to preserve metadata dsts, those may carry non-routing metadata.
[
{
"id": "CVE-2025-38192-03b1ace6",
"target": {
"function": "bpf_skb_proto_4_to_6",
"file": "net/core/filter.c"
},
"signature_version": "v1",
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@bfa4d86e130a09f67607482e988313430e38f6c4",
"deprecated": false,
"digest": {
"length": 555.0,
"function_hash": "212626836208767870413244062789325028127"
}
},
{
"id": "CVE-2025-38192-161ed7de",
"target": {
"function": "bpf_skb_net_shrink",
"file": "net/core/filter.c"
},
"signature_version": "v1",
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@2a3ad42a57b43145839f2f233fb562247658a6d9",
"deprecated": false,
"digest": {
"length": 1061.0,
"function_hash": "94968405305873938957410315970756558323"
}
},
{
"id": "CVE-2025-38192-22eaf321",
"target": {
"function": "bpf_skb_proto_6_to_4",
"file": "net/core/filter.c"
},
"signature_version": "v1",
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@ba9db6f907ac02215e30128770f85fbd7db2fcf9",
"deprecated": false,
"digest": {
"length": 560.0,
"function_hash": "51596698405208170851505174576284397662"
}
},
{
"id": "CVE-2025-38192-2340a7a8",
"target": {
"file": "net/core/filter.c"
},
"signature_version": "v1",
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@e9994e7b9f7bbb882d13c8191731649249150d21",
"deprecated": false,
"digest": {
"line_hashes": [
"151227409949348015497111607543239790683",
"179653021964275647131094557277174538543",
"80962891668886291911542706293463846536",
"132466103297208795001513842343084530595",
"100803380579963947161089002690719715735",
"238356158854747893648891649572896944012",
"275868319158420349450413509348443878819",
"110704373558183654679538199556851004165",
"205180961949284611510714765779935137690",
"104792216199373630073085358562272819186",
"270527806552054387693537863596911678857",
"140890972147457068044547917129213882778",
"33662474641843531982418171065739004716",
"99347725451389774539562369842826342688",
"171721012275104732786415676817432211924",
"340277079799865085552924136190832079696",
"219639841289148243072183810566420148358",
"159654554588377842398583373400822936863",
"244063709994081637941835582245916770437",
"123569170028912233093901806922302339218",
"201459801466974986511998933381729561634",
"231082490198692318031639708442328163916",
"223627278528872089889399593935427212315",
"40969797861013247115913838796491728242",
"73655896179369490931345059078105048291"
],
"threshold": 0.9
}
},
{
"id": "CVE-2025-38192-2d09c9bc",
"target": {
"function": "bpf_skb_net_shrink",
"file": "net/core/filter.c"
},
"signature_version": "v1",
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@e9994e7b9f7bbb882d13c8191731649249150d21",
"deprecated": false,
"digest": {
"length": 1061.0,
"function_hash": "94968405305873938957410315970756558323"
}
},
{
"id": "CVE-2025-38192-3ec228e8",
"target": {
"function": "bpf_skb_net_grow",
"file": "net/core/filter.c"
},
"signature_version": "v1",
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@2a3ad42a57b43145839f2f233fb562247658a6d9",
"deprecated": false,
"digest": {
"length": 2567.0,
"function_hash": "79413983160307129433350148530076213157"
}
},
{
"id": "CVE-2025-38192-482d12b1",
"target": {
"function": "bpf_skb_proto_4_to_6",
"file": "net/core/filter.c"
},
"signature_version": "v1",
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@e9994e7b9f7bbb882d13c8191731649249150d21",
"deprecated": false,
"digest": {
"length": 555.0,
"function_hash": "212626836208767870413244062789325028127"
}
},
{
"id": "CVE-2025-38192-4c01a586",
"target": {
"function": "bpf_skb_proto_4_to_6",
"file": "net/core/filter.c"
},
"signature_version": "v1",
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@ba9db6f907ac02215e30128770f85fbd7db2fcf9",
"deprecated": false,
"digest": {
"length": 555.0,
"function_hash": "212626836208767870413244062789325028127"
}
},
{
"id": "CVE-2025-38192-55b15e7d",
"target": {
"function": "bpf_skb_net_grow",
"file": "net/core/filter.c"
},
"signature_version": "v1",
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@ba9db6f907ac02215e30128770f85fbd7db2fcf9",
"deprecated": false,
"digest": {
"length": 2567.0,
"function_hash": "79413983160307129433350148530076213157"
}
},
{
"id": "CVE-2025-38192-5bed2e0e",
"target": {
"function": "bpf_skb_proto_4_to_6",
"file": "net/core/filter.c"
},
"signature_version": "v1",
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@2a3ad42a57b43145839f2f233fb562247658a6d9",
"deprecated": false,
"digest": {
"length": 555.0,
"function_hash": "212626836208767870413244062789325028127"
}
},
{
"id": "CVE-2025-38192-6006c83e",
"target": {
"function": "bpf_skb_net_grow",
"file": "net/core/filter.c"
},
"signature_version": "v1",
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@bfa4d86e130a09f67607482e988313430e38f6c4",
"deprecated": false,
"digest": {
"length": 2567.0,
"function_hash": "79413983160307129433350148530076213157"
}
},
{
"id": "CVE-2025-38192-62679dee",
"target": {
"function": "bpf_skb_net_shrink",
"file": "net/core/filter.c"
},
"signature_version": "v1",
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@bfa4d86e130a09f67607482e988313430e38f6c4",
"deprecated": false,
"digest": {
"length": 1061.0,
"function_hash": "94968405305873938957410315970756558323"
}
},
{
"id": "CVE-2025-38192-62e049c7",
"target": {
"file": "net/core/filter.c"
},
"signature_version": "v1",
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@ba9db6f907ac02215e30128770f85fbd7db2fcf9",
"deprecated": false,
"digest": {
"line_hashes": [
"151227409949348015497111607543239790683",
"179653021964275647131094557277174538543",
"80962891668886291911542706293463846536",
"132466103297208795001513842343084530595",
"100803380579963947161089002690719715735",
"238356158854747893648891649572896944012",
"275868319158420349450413509348443878819",
"110704373558183654679538199556851004165",
"205180961949284611510714765779935137690",
"104792216199373630073085358562272819186",
"270527806552054387693537863596911678857",
"140890972147457068044547917129213882778",
"33662474641843531982418171065739004716",
"99347725451389774539562369842826342688",
"171721012275104732786415676817432211924",
"340277079799865085552924136190832079696",
"219639841289148243072183810566420148358",
"159654554588377842398583373400822936863",
"244063709994081637941835582245916770437",
"123569170028912233093901806922302339218",
"201459801466974986511998933381729561634",
"231082490198692318031639708442328163916",
"223627278528872089889399593935427212315",
"40969797861013247115913838796491728242",
"73655896179369490931345059078105048291"
],
"threshold": 0.9
}
},
{
"id": "CVE-2025-38192-769cc972",
"target": {
"file": "net/core/filter.c"
},
"signature_version": "v1",
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@bfa4d86e130a09f67607482e988313430e38f6c4",
"deprecated": false,
"digest": {
"line_hashes": [
"151227409949348015497111607543239790683",
"179653021964275647131094557277174538543",
"80962891668886291911542706293463846536",
"132466103297208795001513842343084530595",
"100803380579963947161089002690719715735",
"238356158854747893648891649572896944012",
"275868319158420349450413509348443878819",
"110704373558183654679538199556851004165",
"205180961949284611510714765779935137690",
"104792216199373630073085358562272819186",
"270527806552054387693537863596911678857",
"140890972147457068044547917129213882778",
"33662474641843531982418171065739004716",
"99347725451389774539562369842826342688",
"171721012275104732786415676817432211924",
"340277079799865085552924136190832079696",
"219639841289148243072183810566420148358",
"159654554588377842398583373400822936863",
"244063709994081637941835582245916770437",
"123569170028912233093901806922302339218",
"201459801466974986511998933381729561634",
"231082490198692318031639708442328163916",
"223627278528872089889399593935427212315",
"40969797861013247115913838796491728242",
"73655896179369490931345059078105048291"
],
"threshold": 0.9
}
},
{
"id": "CVE-2025-38192-8d37f409",
"target": {
"function": "bpf_skb_net_shrink",
"file": "net/core/filter.c"
},
"signature_version": "v1",
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@ba9db6f907ac02215e30128770f85fbd7db2fcf9",
"deprecated": false,
"digest": {
"length": 1061.0,
"function_hash": "94968405305873938957410315970756558323"
}
},
{
"id": "CVE-2025-38192-904e6bf5",
"target": {
"function": "bpf_skb_net_grow",
"file": "net/core/filter.c"
},
"signature_version": "v1",
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@e9994e7b9f7bbb882d13c8191731649249150d21",
"deprecated": false,
"digest": {
"length": 2567.0,
"function_hash": "79413983160307129433350148530076213157"
}
},
{
"id": "CVE-2025-38192-9261eb80",
"target": {
"function": "bpf_skb_proto_6_to_4",
"file": "net/core/filter.c"
},
"signature_version": "v1",
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@e9994e7b9f7bbb882d13c8191731649249150d21",
"deprecated": false,
"digest": {
"length": 560.0,
"function_hash": "51596698405208170851505174576284397662"
}
},
{
"id": "CVE-2025-38192-bef365ed",
"target": {
"function": "bpf_skb_proto_6_to_4",
"file": "net/core/filter.c"
},
"signature_version": "v1",
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@2a3ad42a57b43145839f2f233fb562247658a6d9",
"deprecated": false,
"digest": {
"length": 560.0,
"function_hash": "51596698405208170851505174576284397662"
}
},
{
"id": "CVE-2025-38192-e9ff04bf",
"target": {
"file": "net/core/filter.c"
},
"signature_version": "v1",
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@2a3ad42a57b43145839f2f233fb562247658a6d9",
"deprecated": false,
"digest": {
"line_hashes": [
"151227409949348015497111607543239790683",
"179653021964275647131094557277174538543",
"80962891668886291911542706293463846536",
"132466103297208795001513842343084530595",
"100803380579963947161089002690719715735",
"238356158854747893648891649572896944012",
"275868319158420349450413509348443878819",
"110704373558183654679538199556851004165",
"205180961949284611510714765779935137690",
"104792216199373630073085358562272819186",
"270527806552054387693537863596911678857",
"140890972147457068044547917129213882778",
"33662474641843531982418171065739004716",
"99347725451389774539562369842826342688",
"171721012275104732786415676817432211924",
"340277079799865085552924136190832079696",
"219639841289148243072183810566420148358",
"159654554588377842398583373400822936863",
"244063709994081637941835582245916770437",
"123569170028912233093901806922302339218",
"201459801466974986511998933381729561634",
"231082490198692318031639708442328163916",
"223627278528872089889399593935427212315",
"40969797861013247115913838796491728242",
"73655896179369490931345059078105048291"
],
"threshold": 0.9
}
},
{
"id": "CVE-2025-38192-f0b5ce11",
"target": {
"function": "bpf_skb_proto_6_to_4",
"file": "net/core/filter.c"
},
"signature_version": "v1",
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@bfa4d86e130a09f67607482e988313430e38f6c4",
"deprecated": false,
"digest": {
"length": 560.0,
"function_hash": "51596698405208170851505174576284397662"
}
}
]