In the Linux kernel, the following vulnerability has been resolved:
icmp: prevent possible NULL dereferences from icmpbuildprobe()
First problem is a double call to _indevgetrcu(), because the second one could return NULL.
if (_indevgetrcu(dev) && _indevgetrcu(dev)->ifa_list)
Second problem is a read from dev->ip6_ptr with no NULL check:
if (!listempty(&rcudereference(dev->ip6ptr)->addrlist))
Use the correct RCU API to fix these.
v2: add missing include <net/addrconf.h>
[
{
"signature_type": "Function",
"digest": {
"length": 2809.0,
"function_hash": "274013828402486407647078683580571902902"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3e2979bf080c40da4f7c93aff8575ab8bc62b767",
"target": {
"function": "icmp_build_probe",
"file": "net/ipv4/icmp.c"
},
"id": "CVE-2024-35857-14fd2c43",
"signature_version": "v1",
"deprecated": false
},
{
"signature_type": "Function",
"digest": {
"length": 2809.0,
"function_hash": "274013828402486407647078683580571902902"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@599c9ad5e1d43f5c12d869f5fd406ba5d8c55270",
"target": {
"function": "icmp_build_probe",
"file": "net/ipv4/icmp.c"
},
"id": "CVE-2024-35857-5e3d0dde",
"signature_version": "v1",
"deprecated": false
},
{
"signature_type": "Line",
"digest": {
"line_hashes": [
"206864365935735411528299446256979394417",
"222528829099330708423056611594274423827",
"332538805069167502848262978750289005802",
"166779297676292963699297801552380229241",
"40748323848218976614607399678864001815",
"308834167096694428249683636470243781151",
"68098467321227323123454220173533475740",
"97798283980022071780105321137287442719",
"254549678081339351277393012392430831489",
"307292736563912001836939456073667249583",
"40711649914487277722230784271763303936",
"233640763238537566304462746906388746260",
"309300920319110371865145028407954402208",
"30605414801235617933824456126912180629",
"151866193433746513243550904975120401387"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3e2979bf080c40da4f7c93aff8575ab8bc62b767",
"target": {
"file": "net/ipv4/icmp.c"
},
"id": "CVE-2024-35857-7aa1b59b",
"signature_version": "v1",
"deprecated": false
},
{
"signature_type": "Line",
"digest": {
"line_hashes": [
"206864365935735411528299446256979394417",
"222528829099330708423056611594274423827",
"332538805069167502848262978750289005802",
"166779297676292963699297801552380229241",
"40748323848218976614607399678864001815",
"308834167096694428249683636470243781151",
"68098467321227323123454220173533475740",
"97798283980022071780105321137287442719",
"254549678081339351277393012392430831489",
"307292736563912001836939456073667249583",
"40711649914487277722230784271763303936",
"233640763238537566304462746906388746260",
"309300920319110371865145028407954402208",
"30605414801235617933824456126912180629",
"151866193433746513243550904975120401387"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@599c9ad5e1d43f5c12d869f5fd406ba5d8c55270",
"target": {
"file": "net/ipv4/icmp.c"
},
"id": "CVE-2024-35857-7c61f4f6",
"signature_version": "v1",
"deprecated": false
},
{
"signature_type": "Function",
"digest": {
"length": 2809.0,
"function_hash": "274013828402486407647078683580571902902"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@d68dc711d84fdcf698e5d45308c3ddeede586350",
"target": {
"function": "icmp_build_probe",
"file": "net/ipv4/icmp.c"
},
"id": "CVE-2024-35857-857ec374",
"signature_version": "v1",
"deprecated": false
},
{
"signature_type": "Function",
"digest": {
"length": 2809.0,
"function_hash": "274013828402486407647078683580571902902"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@23b7ee4a8d559bf38eac7ce5bb2f6ebf76f9c401",
"target": {
"function": "icmp_build_probe",
"file": "net/ipv4/icmp.c"
},
"id": "CVE-2024-35857-8ccf0764",
"signature_version": "v1",
"deprecated": false
},
{
"signature_type": "Line",
"digest": {
"line_hashes": [
"206864365935735411528299446256979394417",
"222528829099330708423056611594274423827",
"332538805069167502848262978750289005802",
"166779297676292963699297801552380229241",
"40748323848218976614607399678864001815",
"308834167096694428249683636470243781151",
"68098467321227323123454220173533475740",
"97798283980022071780105321137287442719",
"254549678081339351277393012392430831489",
"307292736563912001836939456073667249583",
"40711649914487277722230784271763303936",
"233640763238537566304462746906388746260",
"309300920319110371865145028407954402208",
"30605414801235617933824456126912180629",
"151866193433746513243550904975120401387"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@23b7ee4a8d559bf38eac7ce5bb2f6ebf76f9c401",
"target": {
"file": "net/ipv4/icmp.c"
},
"id": "CVE-2024-35857-a048e6f1",
"signature_version": "v1",
"deprecated": false
},
{
"signature_type": "Line",
"digest": {
"line_hashes": [
"206864365935735411528299446256979394417",
"222528829099330708423056611594274423827",
"332538805069167502848262978750289005802",
"166779297676292963699297801552380229241",
"40748323848218976614607399678864001815",
"308834167096694428249683636470243781151",
"68098467321227323123454220173533475740",
"97798283980022071780105321137287442719",
"254549678081339351277393012392430831489",
"307292736563912001836939456073667249583",
"40711649914487277722230784271763303936",
"233640763238537566304462746906388746260",
"309300920319110371865145028407954402208",
"30605414801235617933824456126912180629",
"151866193433746513243550904975120401387"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@c58e88d49097bd12dfcfef4f075b43f5d5830941",
"target": {
"file": "net/ipv4/icmp.c"
},
"id": "CVE-2024-35857-ac51eb66",
"signature_version": "v1",
"deprecated": false
},
{
"signature_type": "Function",
"digest": {
"length": 2809.0,
"function_hash": "274013828402486407647078683580571902902"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@c58e88d49097bd12dfcfef4f075b43f5d5830941",
"target": {
"function": "icmp_build_probe",
"file": "net/ipv4/icmp.c"
},
"id": "CVE-2024-35857-b2b2bbe3",
"signature_version": "v1",
"deprecated": false
},
{
"signature_type": "Line",
"digest": {
"line_hashes": [
"206864365935735411528299446256979394417",
"222528829099330708423056611594274423827",
"332538805069167502848262978750289005802",
"166779297676292963699297801552380229241",
"40748323848218976614607399678864001815",
"308834167096694428249683636470243781151",
"68098467321227323123454220173533475740",
"97798283980022071780105321137287442719",
"254549678081339351277393012392430831489",
"307292736563912001836939456073667249583",
"40711649914487277722230784271763303936",
"233640763238537566304462746906388746260",
"309300920319110371865145028407954402208",
"30605414801235617933824456126912180629",
"151866193433746513243550904975120401387"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@d68dc711d84fdcf698e5d45308c3ddeede586350",
"target": {
"file": "net/ipv4/icmp.c"
},
"id": "CVE-2024-35857-df9b0c9a",
"signature_version": "v1",
"deprecated": false
}
]