In the Linux kernel, the following vulnerability has been resolved:
SUNRPC: Fix the svcdeferredevent trace class
Fix a NULL deref crash that occurs when an svcrqst is deferred while the sunrpc tracing subsystem is enabled. svcrevisit() sets dr->xprt to NULL, so it can't be relied upon in the tracepoint to provide the remote's address.
Unfortunately we can't revert the "svcdeferredclass" hunk in commit ece200ddd54b ("sunrpc: Save remote presentation address in svc_xprt for trace events") because there is now a specific check of event format specifiers for unsafe dereferences. The warning that check emits is:
event svcdeferrecv has unsafe dereference of argument 1
A "%pISpc" format specifier with a "struct sockaddr *" is indeed flagged by this check.
Instead, take the brute-force approach used by the svcrdmaqperror tracepoint. Convert the dr::addr field into a presentation address in the TPfastassign() arm of the trace event, and store that as a string. This fix can be backported to -stable kernels.
In the meantime, commit c6ced22997ad ("tracing: Update print fmt check to handle new _getsockaddr() macro") is now in v5.18, so this wonky fix can be replaced with __sockaddr() and friends properly during the v5.19 merge window.
[
{
"deprecated": false,
"signature_version": "v1",
"digest": {
"threshold": 0.9,
"line_hashes": [
"232301691699402778148912450757498143077",
"138409690777657293823623092391885526700",
"111316608626827112071038583002230653121",
"272720709998832231774865528885570728623",
"91128787613826689631160914955198034713",
"83418773842587607890552404162388882239",
"296867925984444808536868388188474221203",
"288807345215715837021988498597020936918",
"224872090108156150077127407793721117279",
"325392820138788770517921780411734849753",
"31007753048599855219991518928836715015",
"125553297693008364587805322378426277160"
]
},
"id": "CVE-2022-49065-23f9555a",
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@726ae7300fcc25fefa46d188cc07eb16dc908f9e",
"target": {
"file": "include/trace/events/sunrpc.h"
}
},
{
"deprecated": false,
"signature_version": "v1",
"digest": {
"threshold": 0.9,
"line_hashes": [
"232301691699402778148912450757498143077",
"138409690777657293823623092391885526700",
"111316608626827112071038583002230653121",
"272720709998832231774865528885570728623",
"91128787613826689631160914955198034713",
"83418773842587607890552404162388882239",
"296867925984444808536868388188474221203",
"288807345215715837021988498597020936918",
"224872090108156150077127407793721117279",
"325392820138788770517921780411734849753",
"31007753048599855219991518928836715015",
"125553297693008364587805322378426277160"
]
},
"id": "CVE-2022-49065-3c524ded",
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@4d5004451ab2218eab94a30e1841462c9316ba19",
"target": {
"file": "include/trace/events/sunrpc.h"
}
},
{
"deprecated": false,
"signature_version": "v1",
"digest": {
"threshold": 0.9,
"line_hashes": [
"232301691699402778148912450757498143077",
"138409690777657293823623092391885526700",
"111316608626827112071038583002230653121",
"272720709998832231774865528885570728623",
"91128787613826689631160914955198034713",
"83418773842587607890552404162388882239",
"296867925984444808536868388188474221203",
"288807345215715837021988498597020936918",
"224872090108156150077127407793721117279",
"325392820138788770517921780411734849753",
"31007753048599855219991518928836715015",
"125553297693008364587805322378426277160"
]
},
"id": "CVE-2022-49065-8889a23d",
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@c2456f470eea3bd06574d988bf6089e7c3f4c5cc",
"target": {
"file": "include/trace/events/sunrpc.h"
}
},
{
"deprecated": false,
"signature_version": "v1",
"digest": {
"threshold": 0.9,
"line_hashes": [
"232301691699402778148912450757498143077",
"138409690777657293823623092391885526700",
"111316608626827112071038583002230653121",
"272720709998832231774865528885570728623",
"91128787613826689631160914955198034713",
"83418773842587607890552404162388882239",
"296867925984444808536868388188474221203",
"288807345215715837021988498597020936918",
"224872090108156150077127407793721117279",
"325392820138788770517921780411734849753",
"31007753048599855219991518928836715015",
"125553297693008364587805322378426277160"
]
},
"id": "CVE-2022-49065-9f02b75b",
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@85ee17ca21cf92989e8c923e3ea4514c291e9d38",
"target": {
"file": "include/trace/events/sunrpc.h"
}
}
]