From: Marcelo Ricardo Leitner Date: Mon, 28 Jun 2021 19:13:43 +0000 (-0300) Subject: sctp: validate chunk size in __rcv_asconf_lookup X-Git-Tag: MMI-RSBS31.Q1-48-36-26~14 X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=e1cc1a6d3078c27319164acdc2c0a116c6dcc072;p=GitHub%2FMotorolaMobilityLLC%2Fkernel-slsi.git sctp: validate chunk size in __rcv_asconf_lookup commit b6ffe7671b24689c09faa5675dd58f93758a97ae upstream. In one of the fallbacks that SCTP has for identifying an association for an incoming packet, it looks for AddIp chunk (from ASCONF) and take a peek. Thing is, at this stage nothing was validating that the chunk actually had enough content for that, allowing the peek to happen over uninitialized memory. Similar check already exists in actual asconf handling in sctp_verify_asconf(). Mot-CRs-fixed: (CR) CVE-Fixed: CVE-2021-3655 Bug: 197154735 Change-Id: I193915c129efa43a607ff63e95e1e2ecaf7c7775 Signed-off-by: Marcelo Ricardo Leitner Signed-off-by: David S. Miller Signed-off-by: Greg Kroah-Hartman Signed-off-by: Gajjala Chakradhar Reviewed-on: https://gerrit.mot.com/2197703 SME-Granted: SME Approvals Granted SLTApproved: Slta Waiver Tested-by: Jira Key Reviewed-by: Xiangpo Zhao Submit-Approved: Jira Key (cherry picked from commit 6954f39c3bb1e1ef59ef416f638734b861fe48b8) --- diff --git a/net/sctp/input.c b/net/sctp/input.c index 5ea8982ab7a9..691009c3123f 100644 --- a/net/sctp/input.c +++ b/net/sctp/input.c @@ -1118,6 +1118,9 @@ static struct sctp_association *__sctp_rcv_asconf_lookup( union sctp_addr_param *param; union sctp_addr paddr; + if (ntohs(ch->length) < sizeof(*asconf) + sizeof(struct sctp_paramhdr)) + return NULL; + /* Skip over the ADDIP header and find the Address parameter */ param = (union sctp_addr_param *)(asconf + 1);