Am 09.11.2016 um 20:36 schrieb Vincent Gross:
> On Wed, 9 Nov 2016 13:16:46 +0000
> Thomas Klute <thomas.kl...@achelos.de> wrote:
> 
>> Hi tech@,
>>
>> this patch contains fixes for two bugs that break IKE rekeying
>> initiated by iked. Please review, and apply or let me know what has to
>> be changed! Both bugs are fixed by initializing the respective
>> structures of the new IKE SA (struct iked_sa *nsa in the
>> ikev2_ike_sa_rekey function):
> 
> Thanks, we are looking into it.

Hi, is there any progress on this?

>> For [1]: Copying the address information is required to send any
>> request messages over the new IKE SA after rekeying, otherwise errors
>> like the following happen because the IP addresses and ports remain
>> initialized to zero:
>>
>> ikev2_msg_send: INFORMATIONAL request from any to any msgid 1, 80
>> bytes ikev2_msg_send: sendtofrom: Invalid argument
>>
>> For [2]: Setting the DH group based on the currently used one is
>> necessary because iked proposes only the currently used transforms
>> during IKE rekeying, so trying to use any other group for the DH
>> exchange will fail even if it is preferred by local policy (see
>> comment in the patch for details).
>>
>> This patch includes and supersedes the one for only the first bug I
>> sent yesterday.
>>
>> Best regards,
>> Thomas
>>
>> [1] https://marc.info/?l=openbsd-bugs&m=147739504516767&w=2
>> [2] https://marc.info/?l=openbsd-bugs&m=147747405806461&w=2
>>
>> Index: src/sbin/iked/ikev2.c
>> ===================================================================
>> RCS file: /cvs/src/sbin/iked/ikev2.c,v
>> retrieving revision 1.131
>> diff -u -p -u -r1.131 ikev2.c
>> --- src/sbin/iked/ikev2.c    2 Jun 2016 07:14:26 -0000
>> 1.131 +++ src/sbin/iked/ikev2.c      9 Nov 2016 13:12:32 -0000
>> @@ -2658,6 +2658,18 @@ ikev2_ike_sa_rekey(struct iked *env, voi
>>              goto done;
>>      }
>>  
>> +    /* Select the DH group ID based on the currently used
>> +     * one. Otherwise the call to ikev2_sa_initiator below would
>> +     * set it to the first DH transform in the policy, while the
>> +     * SA payload contains only one proposal matching the
>> +     * currently used transforms. If a different DH transform has
>> +     * been negotiated this means KE payload and negotiated DH
>> +     * transform cannot match, causing rekeying to fail. */
>> +    if ((nsa->sa_dhgroup = group_get(sa->sa_dhgroup->id)) ==
>> NULL) {
>> +            log_debug("%s: failed to initialize DH group",
>> __func__);
>> +            goto done;
>> +    }
>> +
>>      if (ikev2_sa_initiator(env, nsa, sa, NULL)) {
>>              log_debug("%s: failed to setup DH", __func__);
>>              goto done;
>> @@ -2665,6 +2677,13 @@ ikev2_ike_sa_rekey(struct iked *env, voi
>>      sa_state(env, nsa, IKEV2_STATE_AUTH_SUCCESS);
>>      nonce = nsa->sa_inonce;
>>  
>> +    /* Copy local and peer address from the old SA */
>> +    if (sa_address(nsa, &nsa->sa_peer, &sa->sa_peer.addr) == -1
>> ||
>> +        sa_address(nsa, &nsa->sa_local, &sa->sa_local.addr) ==
>> -1) {
>> +            log_debug("%s: failed copy address data", __func__);
>> +            goto done;
>> +    }
>> +
>>      if ((e = ibuf_static()) == NULL)
>>              goto done;
>>  
>>
> 

Reply via email to