In the Linux kernel, the following vulnerability has been resolved:
veth: Ensure eth header is in skb's linear part
After feeding a decapsulated packet to a veth device with actmirred, skbheadlen() may be 0. But vethxmit() calls _devforwardskb(), which expects at least ETHHLEN byte of linear data (as _devforwardskb2() calls ethtypetrans(), which pulls ETH_HLEN bytes unconditionally).
Use pskbmaypull() to ensure veth_xmit() respects this constraint.
kernel BUG at include/linux/skbuff.h:2328! RIP: 0010:ethtypetrans+0xcf/0x140 Call Trace: <IRQ> _devforwardskb2+0xe3/0x160 vethxmit+0x6e/0x250 [veth] devhardstartxmit+0xc7/0x200 _devqueuexmit+0x47f/0x520 ? skbensurewritable+0x85/0xa0 ? skbmplspop+0x98/0x1c0 tcfmirredact+0x442/0x47e [actmirred] tcfactionexec+0x86/0x140 flclassify+0x1d8/0x1e0 [clsflower] ? dmapteclearlevel+0x129/0x1a0 ? dmapteclearlevel+0x129/0x1a0 ? prbfillcurrblock+0x2f/0xc0 ? skbcopybits+0x11a/0x220 _tcfclassify+0x58/0x110 tcfclassifyingress+0x6b/0x140 _netifreceiveskbcore.constprop.0+0x47d/0xfd0 ? _iommudmaunmapswiotlb+0x44/0x90 _netifreceiveskbonecore+0x3d/0xa0 netifreceiveskb+0x116/0x170 beprocessrx+0x22f/0x330 [be2net] bepoll+0x13c/0x370 [be2net] _napipoll+0x2a/0x170 netrxaction+0x22f/0x2f0 _dosoftirq+0xca/0x2a8 _irqexitrcu+0xc1/0xe0 commoninterrupt+0x83/0xa0
[
{
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@d417a859221f127e8edf09c14b76ab50f825e171",
"deprecated": false,
"id": "CVE-2022-49066-276d8180",
"target": {
"function": "veth_xmit",
"file": "drivers/net/veth.c"
},
"digest": {
"length": 545.0,
"function_hash": "175331828305605326291714963488209030198"
},
"signature_type": "Function"
},
{
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@1ef0088e43af1de4e3b365218c4d3179d9a37eec",
"deprecated": false,
"id": "CVE-2022-49066-329e6414",
"target": {
"function": "veth_xmit",
"file": "drivers/net/veth.c"
},
"digest": {
"length": 809.0,
"function_hash": "43448364720973667461068366712345171460"
},
"signature_type": "Function"
},
{
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@d67c900f1947d64ba8a64f693504bcaab8d9000c",
"deprecated": false,
"id": "CVE-2022-49066-356485a1",
"target": {
"function": "veth_xmit",
"file": "drivers/net/veth.c"
},
"digest": {
"length": 723.0,
"function_hash": "274535864860428603969552033760671890462"
},
"signature_type": "Function"
},
{
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@46bc359fec0c6d87b70d7a008bcd9a5e30dd6f27",
"deprecated": false,
"id": "CVE-2022-49066-3950b753",
"target": {
"file": "drivers/net/veth.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"79662877608102665756148280232505895316",
"313962842344714072518139124671232959314",
"98309065968774872277059424299015227712",
"140578509403792550206329176334175866286"
]
},
"signature_type": "Line"
},
{
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@93940fc4cb81840dc0fa202de48cccb949a0261d",
"deprecated": false,
"id": "CVE-2022-49066-3ac45488",
"target": {
"function": "veth_xmit",
"file": "drivers/net/veth.c"
},
"digest": {
"length": 755.0,
"function_hash": "265363244127898514453222543328491631557"
},
"signature_type": "Function"
},
{
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@d67c900f1947d64ba8a64f693504bcaab8d9000c",
"deprecated": false,
"id": "CVE-2022-49066-685f9251",
"target": {
"file": "drivers/net/veth.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"79662877608102665756148280232505895316",
"313962842344714072518139124671232959314",
"98309065968774872277059424299015227712",
"140578509403792550206329176334175866286"
]
},
"signature_type": "Line"
},
{
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@d417a859221f127e8edf09c14b76ab50f825e171",
"deprecated": false,
"id": "CVE-2022-49066-8f2e35f5",
"target": {
"file": "drivers/net/veth.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"267056737877783929297375170976324243818",
"313962842344714072518139124671232959314",
"98309065968774872277059424299015227712",
"140578509403792550206329176334175866286"
]
},
"signature_type": "Line"
},
{
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@726e2c5929de841fdcef4e2bf995680688ae1b87",
"deprecated": false,
"id": "CVE-2022-49066-909c1491",
"target": {
"file": "drivers/net/veth.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"79662877608102665756148280232505895316",
"313962842344714072518139124671232959314",
"98309065968774872277059424299015227712",
"140578509403792550206329176334175866286"
]
},
"signature_type": "Line"
},
{
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@93940fc4cb81840dc0fa202de48cccb949a0261d",
"deprecated": false,
"id": "CVE-2022-49066-950dc05b",
"target": {
"file": "drivers/net/veth.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"79662877608102665756148280232505895316",
"313962842344714072518139124671232959314",
"98309065968774872277059424299015227712",
"140578509403792550206329176334175866286"
]
},
"signature_type": "Line"
},
{
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@2fd90b86dff413fbf8128780c04ea9c6849c16e2",
"deprecated": false,
"id": "CVE-2022-49066-a89a1122",
"target": {
"file": "drivers/net/veth.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"79662877608102665756148280232505895316",
"313962842344714072518139124671232959314",
"98309065968774872277059424299015227712",
"140578509403792550206329176334175866286"
]
},
"signature_type": "Line"
},
{
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3de2a02b60a4ef0ab76263216f08c7d095fc7c42",
"deprecated": false,
"id": "CVE-2022-49066-b4e16eff",
"target": {
"function": "veth_xmit",
"file": "drivers/net/veth.c"
},
"digest": {
"length": 545.0,
"function_hash": "175331828305605326291714963488209030198"
},
"signature_type": "Function"
},
{
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3de2a02b60a4ef0ab76263216f08c7d095fc7c42",
"deprecated": false,
"id": "CVE-2022-49066-d6afcd14",
"target": {
"file": "drivers/net/veth.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"267056737877783929297375170976324243818",
"313962842344714072518139124671232959314",
"98309065968774872277059424299015227712",
"140578509403792550206329176334175866286"
]
},
"signature_type": "Line"
},
{
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@1ef0088e43af1de4e3b365218c4d3179d9a37eec",
"deprecated": false,
"id": "CVE-2022-49066-d6b7d54b",
"target": {
"file": "drivers/net/veth.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"79662877608102665756148280232505895316",
"313962842344714072518139124671232959314",
"98309065968774872277059424299015227712",
"140578509403792550206329176334175866286"
]
},
"signature_type": "Line"
},
{
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@726e2c5929de841fdcef4e2bf995680688ae1b87",
"deprecated": false,
"id": "CVE-2022-49066-d8d41a51",
"target": {
"function": "veth_xmit",
"file": "drivers/net/veth.c"
},
"digest": {
"length": 755.0,
"function_hash": "265363244127898514453222543328491631557"
},
"signature_type": "Function"
},
{
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@2fd90b86dff413fbf8128780c04ea9c6849c16e2",
"deprecated": false,
"id": "CVE-2022-49066-ea9932db",
"target": {
"function": "veth_xmit",
"file": "drivers/net/veth.c"
},
"digest": {
"length": 847.0,
"function_hash": "296542535482033853404350525520670507880"
},
"signature_type": "Function"
},
{
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@46bc359fec0c6d87b70d7a008bcd9a5e30dd6f27",
"deprecated": false,
"id": "CVE-2022-49066-efbe90b5",
"target": {
"function": "veth_xmit",
"file": "drivers/net/veth.c"
},
"digest": {
"length": 755.0,
"function_hash": "265363244127898514453222543328491631557"
},
"signature_type": "Function"
}
]