In the Linux kernel, the following vulnerability has been resolved:
net: sched: use RCU read-side critical section in taprio_dump()
Fix possible use-after-free in 'taprio_dump()' by adding RCU read-side critical section there. Never seen on x86 but found on a KASAN-enabled arm64 system when investigating https://syzkaller.appspot.com/bug?extid=b65e0af58423fc8a73aa:
[T15862] BUG: KASAN: slab-use-after-free in tapriodump+0xa0c/0xbb0 [T15862] Read of size 4 at addr ffff0000d4bb88f8 by task repro/15862 [T15862] [T15862] CPU: 0 UID: 0 PID: 15862 Comm: repro Not tainted 6.11.0-rc1-00293-gdefaf1a2113a-dirty #2 [T15862] Hardware name: QEMU QEMU Virtual Machine, BIOS edk2-20240524-5.fc40 05/24/2024 [T15862] Call trace: [T15862] dumpbacktrace+0x20c/0x220 [T15862] showstack+0x2c/0x40 [T15862] dumpstacklvl+0xf8/0x174 [T15862] printreport+0x170/0x4d8 [T15862] kasan_report+0xb8/0x1d4 [T15862] __asanreportload4noabort+0x20/0x2c [T15862] tapriodump+0xa0c/0xbb0 [T15862] tcfillqdisc+0x540/0x1020 [T15862] qdiscnotify.isra.0+0x330/0x3a0 [T15862] tcmodifyqdisc+0x7b8/0x1838 [T15862] rtnetlinkrcvmsg+0x3c8/0xc20 [T15862] netlinkrcvskb+0x1f8/0x3d4 [T15862] rtnetlinkrcv+0x28/0x40 [T15862] netlinkunicast+0x51c/0x790 [T15862] netlinksendmsg+0x79c/0xc20 [T15862] __sock_sendmsg+0xe0/0x1a0 [T15862] ____sys_sendmsg+0x6c0/0x840 [T15862] ___sys_sendmsg+0x1ac/0x1f0 [T15862] __sys_sendmsg+0x110/0x1d0 [T15862] __arm64syssendmsg+0x74/0xb0 [T15862] invokesyscall+0x88/0x2e0 [T15862] el0svccommon.constprop.0+0xe4/0x2a0 [T15862] doel0svc+0x44/0x60 [T15862] el0svc+0x50/0x184 [T15862] el0t64synchandler+0x120/0x12c [T15862] el0t64sync+0x190/0x194 [T15862] [T15862] Allocated by task 15857: [T15862] kasansavestack+0x3c/0x70 [T15862] kasansavetrack+0x20/0x3c [T15862] kasansaveallocinfo+0x40/0x60 [T15862] __kasan_kmalloc+0xd4/0xe0 [T15862] __kmalloccachenoprof+0x194/0x334 [T15862] tapriochange+0x45c/0x2fe0 [T15862] tcmodifyqdisc+0x6a8/0x1838 [T15862] rtnetlinkrcvmsg+0x3c8/0xc20 [T15862] netlinkrcvskb+0x1f8/0x3d4 [T15862] rtnetlinkrcv+0x28/0x40 [T15862] netlinkunicast+0x51c/0x790 [T15862] netlinksendmsg+0x79c/0xc20 [T15862] __sock_sendmsg+0xe0/0x1a0 [T15862] ____sys_sendmsg+0x6c0/0x840 [T15862] ___sys_sendmsg+0x1ac/0x1f0 [T15862] __sys_sendmsg+0x110/0x1d0 [T15862] __arm64syssendmsg+0x74/0xb0 [T15862] invokesyscall+0x88/0x2e0 [T15862] el0svccommon.constprop.0+0xe4/0x2a0 [T15862] doel0svc+0x44/0x60 [T15862] el0svc+0x50/0x184 [T15862] el0t64synchandler+0x120/0x12c [T15862] el0t64sync+0x190/0x194 [T15862] [T15862] Freed by task 6192: [T15862] kasansavestack+0x3c/0x70 [T15862] kasansavetrack+0x20/0x3c [T15862] kasansavefreeinfo+0x4c/0x80 [T15862] poisonslabobject+0x110/0x160 [T15862] __kasanslabfree+0x3c/0x74 [T15862] kfree+0x134/0x3c0 [T15862] tapriofreeschedcb+0x18c/0x220 [T15862] rcucore+0x920/0x1b7c [T15862] rcucoresi+0x10/0x1c [T15862] handle_softirqs+0x2e8/0xd64 [T15862] _dosoftirq+0x14/0x20
{
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2024/50xxx/CVE-2024-50126.json",
"cna_assigner": "Linux"
}"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2024-50126.json"
[
{
"id": "CVE-2024-50126-a03890ae",
"digest": {
"function_hash": "23293337662880426794306928371977373390",
"length": 1299.0
},
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@e4369cb6acf6b895ac2453cc1cdf2f4326122c6d",
"deprecated": false,
"signature_version": "v1",
"target": {
"file": "net/sched/sch_taprio.c",
"function": "taprio_dump"
}
},
{
"id": "CVE-2024-50126-f28f42f4",
"digest": {
"line_hashes": [
"130673065435051893488341964825131935176",
"227007484873498148461304514911136797597",
"207729010712878885081543749689086992212",
"184096547284181448687838559002239397611",
"144210037715876902782732553416929378507",
"269086909826611109514513395361872149473",
"123546937621481721769344463216562122012",
"171147312246796230591061876509068023854",
"164519548749978293443828317752649686560",
"45325090761361706297613072384767511393",
"202387843329605780565571531715703167806",
"138202865397434070771065067795365882115",
"126084402494936681422611453378316071811",
"157419336169728697379551264366126635070",
"152139439692839041446290550893361117257",
"158054593609033850613532632565517258300",
"243544811127318372437819490568689843218",
"90724927990581850056336081865627859930",
"106160022796913053648538303392555357440",
"234732866515587464606726990735688550694",
"9766792789917247600779225732832409376",
"278293919400421875063587114493104371770",
"259045786665107093318761597749343141767",
"41045397347739858095474629261490501905"
],
"threshold": 0.9
},
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@e4369cb6acf6b895ac2453cc1cdf2f4326122c6d",
"deprecated": false,
"signature_version": "v1",
"target": {
"file": "net/sched/sch_taprio.c"
}
}
]