Date: Thu, 29 Jan 2009 11:29:24 -0600 From: Peter Lei <peter.lei@ieee.org> To: =?ISO-8859-1?Q?Michael_T=FCxen?= <Michael.Tuexen@lurchi.franken.de> Cc: freebsd-net@freebsd.org, Yann WANWANSCAPPEL <yann.wanwanscappel@free.fr> Subject: Re: SCTP, possible bug in peer authentication key Message-ID: <0EEEB325-C7AF-468F-9374-EFED1BD3B3E4@ieee.org> In-Reply-To: <A36412A3-53FA-4738-A875-8DFB78C8FE58@lurchi.franken.de> References: <4980B747.7070400@free.fr> <A36412A3-53FA-4738-A875-8DFB78C8FE58@lurchi.franken.de>
next in thread | previous in thread | raw e-mail | index | archive | help
--Apple-Mail-1--607587122 Content-Type: text/plain; charset=ISO-8859-1; format=flowed; delsp=yes Content-Transfer-Encoding: quoted-printable There's a corresponding change that is needed for pulling the auth info out of the cookie for the other direction (i.e. server side =20 handling). I've committed that into the SCTP project repo, and should also get in with Randall's next commit. --peter On Jan 29, 2009, at 2:23 AM, Michael T=FCxen wrote: > Hi Yann, > > very good catch! You are right. > > I have committed your patch to Randalls repository, so it will > show up in the FreeBSD sources soon (next time he syncs them)... > > Best regards > Michael > > On Jan 28, 2009, at 8:51 PM, Yann WANWANSCAPPEL wrote: > >> Hi all, >> >> I think I found a bug in the SCTP authentication code, in >> sctp_load_addresses_from_init() in sctp_pcb.c >> >> keylen =3D sizeof(*p_random) + random_len + sizeof(*chunks) + =20 >> num_chunks + >> sizeof(*hmacs) + hmacs_len; >> >> The keylen calculation assumes the Chunk List Parameter (CHUNKS) >> vl-param was present in the received INIT packet, which can be =20 >> false if >> peer SCTP does not require any chunk to be authenticated (this =20 >> typically >> occurs if peer does not support ASCONF). >> >>> =46rom RFC 4895, 6.1 >> >> * An SCTP endpoint has a list of chunks it only accepts if they are >> * received in an authenticated way. This list is included in the =20 >> INIT >> * and INIT-ACK, and MAY be omitted if it is empty. Since this list >> * does not change during the lifetime of the SCTP endpoint there is =20= >> no >> * problem in case of INIT collision. >> >> This case is properly handled later in the build of the key >> >> /* append in the AUTH chunks */ >> if (chunks !=3D NULL) { >> ..... >> } >> >> I think the calculated keylen should be something like this : >> >> keylen =3D sizeof(*p_random) + random_len + sizeof(*hmacs) + = hmacs_len; >> >> if (chunks !=3D NULL) { >> keylen +=3D sizeof(*chunks) + num_chunks >> } >> >> This problem results in authenticated packets sent from peer SCTP =20 >> to be >> discarded. >> >> The problem does not occurs if peer SCTP is modified to send an empty >> Chunk List Parameter, (eg num_chunks =3D 0 in the decoding). >> >> Br, >> Yann >> >> >> >> >> >> >> >> >> >> _______________________________________________ >> freebsd-net@freebsd.org mailing list >> http://lists.freebsd.org/mailman/listinfo/freebsd-net >> To unsubscribe, send any mail to "freebsd-net-=20 >> unsubscribe@freebsd.org" >> > > _______________________________________________ > freebsd-net@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-net > To unsubscribe, send any mail to "freebsd-net-unsubscribe@freebsd.org" --Apple-Mail-1--607587122--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?0EEEB325-C7AF-468F-9374-EFED1BD3B3E4>