Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 30 Jan 2009 01:37:49 +0000
From:      "Muggeridge, Matt" <Matt.Muggeridge@hp.com>
To:        =?iso-8859-1?Q?=27Michael_T=FCxen=27?= <Michael.Tuexen@lurchi.franken.de>,  Yann WANWANSCAPPEL <yann.wanwanscappel@free.fr>
Cc:        "freebsd-net@freebsd.org" <freebsd-net@freebsd.org>
Subject:   RE: SCTP, possible bug in peer authentication key
Message-ID:  <DAE8EEF9700DC84CB97414D6CF6FCA713E79BEC1EF@GVW1160EXB.americas.hpqcorp.net>
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
> I think I found a bug in the SCTP authentication code, in
> sctp_load_addresses_from_init() in sctp_pcb.c

I noticed the same calculation appears in sctp_auth.c:sctp_auth_get_cookie_=
params().  Does this fix also need to be applied there?

Cheers,
Matt.

-----Original Message-----
From: Michael T=FCxen [mailto:Michael.Tuexen@lurchi.franken.de]=20
Sent: Thursday, 29 January 2009 6:23 PM
To: Yann WANWANSCAPPEL
Cc: freebsd-net@freebsd.org
Subject: Re: SCTP, possible bug in peer authentication key

Hi Yann,

very good catch! You are right.

I have committed your patch to Randalls repository, so it will show up in t=
he 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) + num_chunks=
=20
> +
> sizeof(*hmacs) + hmacs_len;
>
> The keylen calculation assumes the Chunk List Parameter (CHUNKS)=20
> vl-param was present in the received INIT packet, which can be false=20
> if peer SCTP does not require any chunk to be authenticated (this=20
> typically occurs if peer does not support ASCONF).
>
>> From 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 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 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 to=20
> be discarded.
>
> The problem does not occurs if peer SCTP is modified to send an empty=20
> 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-unsubscribe@freebsd.org"
>





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?DAE8EEF9700DC84CB97414D6CF6FCA713E79BEC1EF>