In the Linux kernel, the following vulnerability has been resolved:
sunrpc: fix client side handling of tls alerts
A security exploit was discovered in NFS over TLS in tlsalertrecv due to its assumption that there is valid data in the msghdr's iterator's kvec.
Instead, this patch proposes the 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 control buffer and read in the control message such as a TLS alert. Scott found that a 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.
[
{
"id": "CVE-2025-38571-181af4eb",
"signature_version": "v1",
"digest": {
"length": 456.0,
"function_hash": "108180256985048774168976689219081550900"
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3ee397eaaca4fa04db21bb98c8f1d0c6cc525368",
"target": {
"file": "net/sunrpc/xprtsock.c",
"function": "xs_sock_process_cmsg"
}
},
{
"id": "CVE-2025-38571-1956faa3",
"signature_version": "v1",
"digest": {
"length": 186.0,
"function_hash": "96541166425456468594235177589196006286"
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@a55b3d15331859d9fdd261cfa6d34ca2aeb0fb95",
"target": {
"file": "net/sunrpc/xprtsock.c",
"function": "xs_read_discard"
}
},
{
"id": "CVE-2025-38571-27faa244",
"signature_version": "v1",
"digest": {
"length": 240.0,
"function_hash": "37303765468951966139158578463223751986"
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@c36b2fbd60e8f9c6f975522130998608880c93be",
"target": {
"file": "net/sunrpc/xprtsock.c",
"function": "xs_sock_recvmsg"
}
},
{
"id": "CVE-2025-38571-2ae3f0c0",
"signature_version": "v1",
"digest": {
"length": 240.0,
"function_hash": "37303765468951966139158578463223751986"
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3ee397eaaca4fa04db21bb98c8f1d0c6cc525368",
"target": {
"file": "net/sunrpc/xprtsock.c",
"function": "xs_sock_recvmsg"
}
},
{
"id": "CVE-2025-38571-2d072085",
"signature_version": "v1",
"digest": {
"length": 186.0,
"function_hash": "96541166425456468594235177589196006286"
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3ee397eaaca4fa04db21bb98c8f1d0c6cc525368",
"target": {
"file": "net/sunrpc/xprtsock.c",
"function": "xs_read_discard"
}
},
{
"id": "CVE-2025-38571-3ba38369",
"signature_version": "v1",
"digest": {
"threshold": 0.9,
"line_hashes": [
"274960498545438886651756898143076429876",
"172005131145743593323662995617052312705",
"300440360651925455454888766156482643059",
"233392619276452217478851696401348585582",
"64857348452877161871968368003990083497",
"49954374446056388033908637295292900120",
"174067414190030410728793318109434716806",
"256080730358938640177641361010569742468",
"96381509872150522308177515319166110795",
"195804790475145819780174496775845857505",
"311895442398741198175813605250599405464",
"96692766950039895524065458772370409071",
"177230114312732745583483190238398185058",
"241012948127763046025031175235390218234",
"316441501820847013214464175743787296341",
"333122383944845281460213259471911669905",
"239882688155146604605618935664203729154",
"11299254975912085819535800640636546721",
"309844061234959507754444993996608311576",
"175240341245460953887033459190200654798",
"68122837874103881204822803264776641615",
"203770549584759125315476493443572244764",
"237439788536688211256210695849879688439",
"113763081174711626765081439223025034766",
"280750114814295234214329933224547686434",
"251264189439185838892108062351525058495",
"98842434435308299318776350911343668440",
"247975170983365460379598776742192512647",
"132662696340691302927472811352159957274",
"135198693685026110559082599047702147560",
"202994932661242349825731060488362827850"
]
},
"deprecated": false,
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3feada5baf4dc96e151ff2ca54630e1d274e5458",
"target": {
"file": "net/sunrpc/xprtsock.c"
}
},
{
"id": "CVE-2025-38571-3bcf4e5c",
"signature_version": "v1",
"digest": {
"length": 400.0,
"function_hash": "234532827898409866504458428948473062845"
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@c36b2fbd60e8f9c6f975522130998608880c93be",
"target": {
"file": "net/sunrpc/xprtsock.c",
"function": "xs_sock_recv_cmsg"
}
},
{
"id": "CVE-2025-38571-3e6d8b07",
"signature_version": "v1",
"digest": {
"length": 186.0,
"function_hash": "96541166425456468594235177589196006286"
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@c36b2fbd60e8f9c6f975522130998608880c93be",
"target": {
"file": "net/sunrpc/xprtsock.c",
"function": "xs_read_discard"
}
},
{
"id": "CVE-2025-38571-5555c70e",
"signature_version": "v1",
"digest": {
"threshold": 0.9,
"line_hashes": [
"274960498545438886651756898143076429876",
"172005131145743593323662995617052312705",
"300440360651925455454888766156482643059",
"233392619276452217478851696401348585582",
"64857348452877161871968368003990083497",
"49954374446056388033908637295292900120",
"174067414190030410728793318109434716806",
"256080730358938640177641361010569742468",
"96381509872150522308177515319166110795",
"195804790475145819780174496775845857505",
"311895442398741198175813605250599405464",
"96692766950039895524065458772370409071",
"177230114312732745583483190238398185058",
"241012948127763046025031175235390218234",
"316441501820847013214464175743787296341",
"333122383944845281460213259471911669905",
"239882688155146604605618935664203729154",
"11299254975912085819535800640636546721",
"309844061234959507754444993996608311576",
"175240341245460953887033459190200654798",
"68122837874103881204822803264776641615",
"203770549584759125315476493443572244764",
"237439788536688211256210695849879688439",
"113763081174711626765081439223025034766",
"280750114814295234214329933224547686434",
"251264189439185838892108062351525058495",
"98842434435308299318776350911343668440",
"247975170983365460379598776742192512647",
"132662696340691302927472811352159957274",
"135198693685026110559082599047702147560",
"202994932661242349825731060488362827850"
]
},
"deprecated": false,
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3ee397eaaca4fa04db21bb98c8f1d0c6cc525368",
"target": {
"file": "net/sunrpc/xprtsock.c"
}
},
{
"id": "CVE-2025-38571-5c5d80f9",
"signature_version": "v1",
"digest": {
"length": 400.0,
"function_hash": "234532827898409866504458428948473062845"
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3ee397eaaca4fa04db21bb98c8f1d0c6cc525368",
"target": {
"file": "net/sunrpc/xprtsock.c",
"function": "xs_sock_recv_cmsg"
}
},
{
"id": "CVE-2025-38571-5e49b1d4",
"signature_version": "v1",
"digest": {
"length": 186.0,
"function_hash": "96541166425456468594235177589196006286"
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3feada5baf4dc96e151ff2ca54630e1d274e5458",
"target": {
"file": "net/sunrpc/xprtsock.c",
"function": "xs_read_discard"
}
},
{
"id": "CVE-2025-38571-62ff16ba",
"signature_version": "v1",
"digest": {
"length": 240.0,
"function_hash": "37303765468951966139158578463223751986"
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@a55b3d15331859d9fdd261cfa6d34ca2aeb0fb95",
"target": {
"file": "net/sunrpc/xprtsock.c",
"function": "xs_sock_recvmsg"
}
},
{
"id": "CVE-2025-38571-7f65e153",
"signature_version": "v1",
"digest": {
"length": 456.0,
"function_hash": "108180256985048774168976689219081550900"
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@c36b2fbd60e8f9c6f975522130998608880c93be",
"target": {
"file": "net/sunrpc/xprtsock.c",
"function": "xs_sock_process_cmsg"
}
},
{
"id": "CVE-2025-38571-922fd59b",
"signature_version": "v1",
"digest": {
"length": 400.0,
"function_hash": "234532827898409866504458428948473062845"
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@a55b3d15331859d9fdd261cfa6d34ca2aeb0fb95",
"target": {
"file": "net/sunrpc/xprtsock.c",
"function": "xs_sock_recv_cmsg"
}
},
{
"id": "CVE-2025-38571-95380164",
"signature_version": "v1",
"digest": {
"length": 456.0,
"function_hash": "108180256985048774168976689219081550900"
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3feada5baf4dc96e151ff2ca54630e1d274e5458",
"target": {
"file": "net/sunrpc/xprtsock.c",
"function": "xs_sock_process_cmsg"
}
},
{
"id": "CVE-2025-38571-b806c699",
"signature_version": "v1",
"digest": {
"length": 456.0,
"function_hash": "108180256985048774168976689219081550900"
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@a55b3d15331859d9fdd261cfa6d34ca2aeb0fb95",
"target": {
"file": "net/sunrpc/xprtsock.c",
"function": "xs_sock_process_cmsg"
}
},
{
"id": "CVE-2025-38571-bed4cc45",
"signature_version": "v1",
"digest": {
"length": 400.0,
"function_hash": "234532827898409866504458428948473062845"
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3feada5baf4dc96e151ff2ca54630e1d274e5458",
"target": {
"file": "net/sunrpc/xprtsock.c",
"function": "xs_sock_recv_cmsg"
}
},
{
"id": "CVE-2025-38571-cae067d7",
"signature_version": "v1",
"digest": {
"length": 240.0,
"function_hash": "37303765468951966139158578463223751986"
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3feada5baf4dc96e151ff2ca54630e1d274e5458",
"target": {
"file": "net/sunrpc/xprtsock.c",
"function": "xs_sock_recvmsg"
}
},
{
"id": "CVE-2025-38571-d28fc729",
"signature_version": "v1",
"digest": {
"threshold": 0.9,
"line_hashes": [
"274960498545438886651756898143076429876",
"172005131145743593323662995617052312705",
"300440360651925455454888766156482643059",
"233392619276452217478851696401348585582",
"64857348452877161871968368003990083497",
"49954374446056388033908637295292900120",
"174067414190030410728793318109434716806",
"256080730358938640177641361010569742468",
"96381509872150522308177515319166110795",
"195804790475145819780174496775845857505",
"311895442398741198175813605250599405464",
"96692766950039895524065458772370409071",
"177230114312732745583483190238398185058",
"241012948127763046025031175235390218234",
"316441501820847013214464175743787296341",
"333122383944845281460213259471911669905",
"239882688155146604605618935664203729154",
"11299254975912085819535800640636546721",
"309844061234959507754444993996608311576",
"175240341245460953887033459190200654798",
"68122837874103881204822803264776641615",
"203770549584759125315476493443572244764",
"237439788536688211256210695849879688439",
"113763081174711626765081439223025034766",
"280750114814295234214329933224547686434",
"251264189439185838892108062351525058495",
"98842434435308299318776350911343668440",
"247975170983365460379598776742192512647",
"132662696340691302927472811352159957274",
"135198693685026110559082599047702147560",
"202994932661242349825731060488362827850"
]
},
"deprecated": false,
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@c36b2fbd60e8f9c6f975522130998608880c93be",
"target": {
"file": "net/sunrpc/xprtsock.c"
}
},
{
"id": "CVE-2025-38571-f5658668",
"signature_version": "v1",
"digest": {
"threshold": 0.9,
"line_hashes": [
"274960498545438886651756898143076429876",
"172005131145743593323662995617052312705",
"300440360651925455454888766156482643059",
"233392619276452217478851696401348585582",
"64857348452877161871968368003990083497",
"49954374446056388033908637295292900120",
"174067414190030410728793318109434716806",
"256080730358938640177641361010569742468",
"96381509872150522308177515319166110795",
"195804790475145819780174496775845857505",
"311895442398741198175813605250599405464",
"96692766950039895524065458772370409071",
"177230114312732745583483190238398185058",
"241012948127763046025031175235390218234",
"316441501820847013214464175743787296341",
"333122383944845281460213259471911669905",
"239882688155146604605618935664203729154",
"11299254975912085819535800640636546721",
"309844061234959507754444993996608311576",
"175240341245460953887033459190200654798",
"68122837874103881204822803264776641615",
"203770549584759125315476493443572244764",
"237439788536688211256210695849879688439",
"113763081174711626765081439223025034766",
"280750114814295234214329933224547686434",
"251264189439185838892108062351525058495",
"98842434435308299318776350911343668440",
"247975170983365460379598776742192512647",
"132662696340691302927472811352159957274",
"135198693685026110559082599047702147560",
"202994932661242349825731060488362827850"
]
},
"deprecated": false,
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@a55b3d15331859d9fdd261cfa6d34ca2aeb0fb95",
"target": {
"file": "net/sunrpc/xprtsock.c"
}
}
]