In the Linux kernel, the following vulnerability has been resolved:
sunrpc: fix handling of server side tls alerts
Scott Mayhew discovered a security exploit in NFS over TLS in tlsalertrecv() due to its assumption it can read data from the msg iterator's kvec..
kTLS implementation splits TLS non-data record payload between the control message buffer (which includes the type such as TLS aler or TLS cipher change) and the rest of the payload (say TLS alert's level/description) which goes into the msg payload buffer.
This patch proposes to rework how control messages are setup and used by sock_recvmsg().
If no control message structure is setup, kTLS layer will read and process TLS data record types. As soon as it encounters a TLS control message, it would return an error. At that point, NFS can setup a kvec backed msg buffer and read in the control message such as a TLS alert. Msg iterator can advance the kvec pointer as a part of the copy process thus we need to revert the iterator before calling into the tlsalertrecv.
[
{
"signature_version": "v1",
"deprecated": false,
"signature_type": "Function",
"digest": {
"function_hash": "219941584422888934072911490805293927923",
"length": 435.0
},
"id": "CVE-2025-38566-02fcb9a3",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@bee47cb026e762841f3faece47b51f985e215edb",
"target": {
"function": "svc_tcp_sock_recv_cmsg",
"file": "net/sunrpc/svcsock.c"
}
},
{
"signature_version": "v1",
"deprecated": false,
"signature_type": "Function",
"digest": {
"function_hash": "219941584422888934072911490805293927923",
"length": 435.0
},
"id": "CVE-2025-38566-08707c49",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3b549da875414989f480b66835d514be80a0bd9c",
"target": {
"function": "svc_tcp_sock_recv_cmsg",
"file": "net/sunrpc/svcsock.c"
}
},
{
"signature_version": "v1",
"deprecated": false,
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"298887397120174138810927008612734143988",
"327093213903980362197201265485158846968",
"16150861841058503409709214118492006057",
"312651228494511082424476132896235584651",
"177230114312732745583483190238398185058",
"241012948127763046025031175235390218234",
"67080248240163208932328403384668160157",
"327098223114323609577584795504757487472",
"151241080736459392996531345615890682273",
"159357232937517388817048643531820012551",
"128295935475658690472700222105098426636",
"160945523990938218849489516080713203797",
"35145273475760222119512767640857438789",
"207284506808978727434872674080844285794",
"253463374326404492711282772170985607631",
"61198327333816631210380669158864511028",
"159631298619659622866508308888531220913",
"81468824022221438167383590556379003626",
"56089737361227001161641294854738430290",
"195982448272778346972956249496706968743",
"79096447843102550118415578326344166350",
"172738793171001695542617011622882461243",
"227228740766837772215644471435253589918",
"58058800656346943546712359218355748402"
]
},
"id": "CVE-2025-38566-3bb8801f",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@25bb3647d30a20486b5fe7cff2b0e503c16c9692",
"target": {
"file": "net/sunrpc/svcsock.c"
}
},
{
"signature_version": "v1",
"deprecated": false,
"signature_type": "Function",
"digest": {
"function_hash": "219941584422888934072911490805293927923",
"length": 435.0
},
"id": "CVE-2025-38566-47589030",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b1df394621710b312f0393e3f240fdac0764f968",
"target": {
"function": "svc_tcp_sock_recv_cmsg",
"file": "net/sunrpc/svcsock.c"
}
},
{
"signature_version": "v1",
"deprecated": false,
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"298887397120174138810927008612734143988",
"327093213903980362197201265485158846968",
"16150861841058503409709214118492006057",
"312651228494511082424476132896235584651",
"177230114312732745583483190238398185058",
"241012948127763046025031175235390218234",
"67080248240163208932328403384668160157",
"327098223114323609577584795504757487472",
"151241080736459392996531345615890682273",
"159357232937517388817048643531820012551",
"128295935475658690472700222105098426636",
"160945523990938218849489516080713203797",
"35145273475760222119512767640857438789",
"207284506808978727434872674080844285794",
"253463374326404492711282772170985607631",
"61198327333816631210380669158864511028",
"159631298619659622866508308888531220913",
"81468824022221438167383590556379003626",
"56089737361227001161641294854738430290",
"195982448272778346972956249496706968743",
"79096447843102550118415578326344166350",
"172738793171001695542617011622882461243",
"227228740766837772215644471435253589918",
"58058800656346943546712359218355748402"
]
},
"id": "CVE-2025-38566-71676ce0",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@bee47cb026e762841f3faece47b51f985e215edb",
"target": {
"file": "net/sunrpc/svcsock.c"
}
},
{
"signature_version": "v1",
"deprecated": false,
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"298887397120174138810927008612734143988",
"327093213903980362197201265485158846968",
"16150861841058503409709214118492006057",
"312651228494511082424476132896235584651",
"177230114312732745583483190238398185058",
"241012948127763046025031175235390218234",
"67080248240163208932328403384668160157",
"327098223114323609577584795504757487472",
"151241080736459392996531345615890682273",
"159357232937517388817048643531820012551",
"128295935475658690472700222105098426636",
"160945523990938218849489516080713203797",
"35145273475760222119512767640857438789",
"207284506808978727434872674080844285794",
"253463374326404492711282772170985607631",
"61198327333816631210380669158864511028",
"159631298619659622866508308888531220913",
"81468824022221438167383590556379003626",
"56089737361227001161641294854738430290",
"195982448272778346972956249496706968743",
"79096447843102550118415578326344166350",
"172738793171001695542617011622882461243",
"227228740766837772215644471435253589918",
"58058800656346943546712359218355748402"
]
},
"id": "CVE-2025-38566-73ddb975",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@6b33c31cc788073bfbed9297e1f4486ed73d87da",
"target": {
"file": "net/sunrpc/svcsock.c"
}
},
{
"signature_version": "v1",
"deprecated": false,
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"298887397120174138810927008612734143988",
"327093213903980362197201265485158846968",
"16150861841058503409709214118492006057",
"312651228494511082424476132896235584651",
"177230114312732745583483190238398185058",
"241012948127763046025031175235390218234",
"67080248240163208932328403384668160157",
"327098223114323609577584795504757487472",
"151241080736459392996531345615890682273",
"159357232937517388817048643531820012551",
"128295935475658690472700222105098426636",
"160945523990938218849489516080713203797",
"35145273475760222119512767640857438789",
"207284506808978727434872674080844285794",
"253463374326404492711282772170985607631",
"61198327333816631210380669158864511028",
"159631298619659622866508308888531220913",
"81468824022221438167383590556379003626",
"56089737361227001161641294854738430290",
"195982448272778346972956249496706968743",
"79096447843102550118415578326344166350",
"172738793171001695542617011622882461243",
"227228740766837772215644471435253589918",
"58058800656346943546712359218355748402"
]
},
"id": "CVE-2025-38566-89f9e1e4",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b1df394621710b312f0393e3f240fdac0764f968",
"target": {
"file": "net/sunrpc/svcsock.c"
}
},
{
"signature_version": "v1",
"deprecated": false,
"signature_type": "Function",
"digest": {
"function_hash": "219941584422888934072911490805293927923",
"length": 435.0
},
"id": "CVE-2025-38566-e113ea05",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@25bb3647d30a20486b5fe7cff2b0e503c16c9692",
"target": {
"function": "svc_tcp_sock_recv_cmsg",
"file": "net/sunrpc/svcsock.c"
}
},
{
"signature_version": "v1",
"deprecated": false,
"signature_type": "Function",
"digest": {
"function_hash": "219941584422888934072911490805293927923",
"length": 435.0
},
"id": "CVE-2025-38566-e9739e57",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@6b33c31cc788073bfbed9297e1f4486ed73d87da",
"target": {
"function": "svc_tcp_sock_recv_cmsg",
"file": "net/sunrpc/svcsock.c"
}
},
{
"signature_version": "v1",
"deprecated": false,
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"298887397120174138810927008612734143988",
"327093213903980362197201265485158846968",
"16150861841058503409709214118492006057",
"312651228494511082424476132896235584651",
"177230114312732745583483190238398185058",
"241012948127763046025031175235390218234",
"67080248240163208932328403384668160157",
"327098223114323609577584795504757487472",
"151241080736459392996531345615890682273",
"159357232937517388817048643531820012551",
"128295935475658690472700222105098426636",
"160945523990938218849489516080713203797",
"35145273475760222119512767640857438789",
"207284506808978727434872674080844285794",
"253463374326404492711282772170985607631",
"61198327333816631210380669158864511028",
"159631298619659622866508308888531220913",
"81468824022221438167383590556379003626",
"56089737361227001161641294854738430290",
"195982448272778346972956249496706968743",
"79096447843102550118415578326344166350",
"172738793171001695542617011622882461243",
"227228740766837772215644471435253589918",
"58058800656346943546712359218355748402"
]
},
"id": "CVE-2025-38566-f839b1fb",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3b549da875414989f480b66835d514be80a0bd9c",
"target": {
"file": "net/sunrpc/svcsock.c"
}
}
]