Description
In the Linux kernel, the following vulnerability has been resolved: sctp: handle the error returned from sctp_auth_asoc_init_active_key When it returns an error from sctp_auth_asoc_init_active_key(), the active_key is actually not updated. The old sh_key will be freeed while it's still used as active key in asoc. Then an use-after-free will be triggered when sending patckets, as found by syzbot: sctp_auth_shkey_hold+0x22/0xa0 net/sctp/auth.c:112 sctp_set_owner_w net/sctp/socket.c:132 [inline] sctp_sendmsg_to_asoc+0xbd5/0x1a20 net/sctp/socket.c:1863 sctp_sendmsg+0x1053/0x1d50 net/sctp/socket.c:2025 inet_sendmsg+0x99/0xe0 net/ipv4/af_inet.c:819 sock_sendmsg_nosec net/socket.c:714 [inline] sock_sendmsg+0xcf/0x120 net/socket.c:734 This patch is to fix it by not replacing the sh_key when it returns errors from sctp_auth_asoc_init_active_key() in sctp_auth_set_key(). For sctp_auth_set_active_key(), old active_key_id will be set back to asoc->active_key_id when the same thing happens.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
50b57223da67653c61e405d0a7592355cfe4585e to < b8fa99a3a11bdd77fef6b4a97f1021eb30b5ba40affectedb60461696a0b0fdaf240bc365b7983698f88ded2 to < 382ff44716603a54f5fd238ddec6a2468e217612affected8eb225873246312660ccd68296959a7b213d0cdd to < f65955340e0044f5c41ac799a01698ac7dee8a4eaffected58acd10092268831e49de279446c314727101292 to < 19d636b663e0e92951bba5fced929ca7fd25c552affected58acd10092268831e49de279446c314727101292 to < 0f90099d18e3abdc01babf686f41f63fe04939c1affected58acd10092268831e49de279446c314727101292 to < 3b0fcf5e29c0940e1169ce9c44f73edd98bdf12daffected58acd10092268831e49de279446c314727101292 to < 022152aaebe116a25c39818a07e175a8cd3c1e11affectedc1de376423a7759bf4fa25d6a038a4c1e035c9e1affected4.19.199 to < 4.19.262affected5.4.136 to < 5.4.220affected5.10.54 to < 5.10.150affected5.13.6 to < 5.14affected
Linux Linux
Default version status: affected
5.14affected0 to < 5.14unaffected4.19.262 to ≤ 4.19.*unaffected5.4.220 to ≤ 5.4.*unaffected5.10.150 to ≤ 5.10.*unaffected5.15.75 to ≤ 5.15.*unaffected5.19.17 to ≤ 5.19.*unaffected6.0.3 to ≤ 6.0.*unaffected6.1 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/b8fa99a3a11bdd77fef6b4a97f1021eb30b5ba40 ↗
- https://git.kernel.org/stable/c/382ff44716603a54f5fd238ddec6a2468e217612 ↗
- https://git.kernel.org/stable/c/f65955340e0044f5c41ac799a01698ac7dee8a4e ↗
- https://git.kernel.org/stable/c/19d636b663e0e92951bba5fced929ca7fd25c552 ↗
- https://git.kernel.org/stable/c/0f90099d18e3abdc01babf686f41f63fe04939c1 ↗
- https://git.kernel.org/stable/c/3b0fcf5e29c0940e1169ce9c44f73edd98bdf12d ↗
- https://git.kernel.org/stable/c/022152aaebe116a25c39818a07e175a8cd3c1e11 ↗