Commit 3930441
sctp: handle the error returned from sctp_auth_asoc_init_active_key
jira VULN-158562
cve CVE-2022-50243
commit-author Xin Long <lucien.xin@gmail.com>
commit 022152a
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.
Fixes: 58acd10 ("sctp: update active_key for asoc when old key is being replaced")
Reported-by: syzbot+a236dd8e9622ed8954a3@syzkaller.appspotmail.com
Signed-off-by: Xin Long <lucien.xin@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
(cherry picked from commit 022152a)
Signed-off-by: CIQ Kernel Automation <ciq_kernel_automation@ciq.com>1 parent f0f2e07 commit 3930441
1 file changed
Lines changed: 14 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
885 | 885 | | |
886 | 886 | | |
887 | 887 | | |
888 | | - | |
889 | 888 | | |
890 | 889 | | |
891 | | - | |
892 | | - | |
| 890 | + | |
| 891 | + | |
| 892 | + | |
| 893 | + | |
| 894 | + | |
| 895 | + | |
| 896 | + | |
893 | 897 | | |
| 898 | + | |
894 | 899 | | |
895 | 900 | | |
896 | 901 | | |
| |||
924 | 929 | | |
925 | 930 | | |
926 | 931 | | |
| 932 | + | |
| 933 | + | |
927 | 934 | | |
928 | | - | |
| 935 | + | |
| 936 | + | |
| 937 | + | |
| 938 | + | |
929 | 939 | | |
930 | 940 | | |
931 | 941 | | |
| |||
0 commit comments