In the Linux kernel, the following vulnerability has been resolved:
net/nfc: fix use-after-free llcpsockbind/connect
Commits 8a4cd82d ("nfc: fix refcount leak in llcpsockconnect()") and c33b1cc62 ("nfc: fix refcount leak in llcpsockbind()") fixed a refcount leak bug in bind/connect but introduced a use-after-free if the same local is assigned to 2 different sockets.
This can be triggered by the following simple program: int sock1 = socket( AFNFC, SOCKSTREAM, NFCSOCKPROTOLLCP ); int sock2 = socket( AFNFC, SOCKSTREAM, NFCSOCKPROTOLLCP ); memset( &addr, 0, sizeof(struct sockaddrnfcllcp) ); addr.safamily = AFNFC; addr.nfcprotocol = NFCPROTONFCDEP; bind( sock1, (struct sockaddr*) &addr, sizeof(struct sockaddrnfcllcp) ) bind( sock2, (struct sockaddr*) &addr, sizeof(struct sockaddrnfcllcp) ) close(sock1); close(sock2);
Fix this by assigning NULL to llcpsock->local after calling nfcllcplocalput.
This addresses CVE-2021-23134.
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2021-47068.json"
[
{
"events": [
{
"introduced": "4.4.267"
},
{
"fixed": "4.4.269"
}
]
},
{
"events": [
{
"introduced": "4.9.267"
},
{
"fixed": "4.9.269"
}
]
},
{
"events": [
{
"introduced": "4.14.231"
},
{
"fixed": "4.14.233"
}
]
},
{
"events": [
{
"introduced": "4.19.187"
},
{
"fixed": "4.19.191"
}
]
},
{
"events": [
{
"introduced": "5.4.112"
},
{
"fixed": "5.4.119"
}
]
},
{
"events": [
{
"introduced": "5.10.30"
},
{
"fixed": "5.10.37"
}
]
},
{
"events": [
{
"introduced": "5.11.14"
},
{
"fixed": "5.11.21"
}
]
},
{
"events": [
{
"introduced": "5.12"
},
{
"fixed": "5.12.4"
}
]
}
]