help on TSIGs

Simo simo at samba.org
Wed Oct 15 10:24:21 MDT 2014


On Wed, 2014-10-15 at 16:13 +1100, Amitay Isaacs wrote:
> Hi Matthieu,
> 
> On Sun, Oct 12, 2014 at 1:17 PM, Matthieu Patou <mat at samba.org> wrote:
>         On 10/10/2014 08:20 AM, Simo wrote:
>                 On Wed, 2014-10-08 at 19:00 -0700, Matthieu Patou
>                 wrote:
>                         - if (state->state.sign) { - ret =
>                         dns_sign_tsig(state->dns, mem_ctx,
>                         &state->state, + if (state->state->sign) { +
>                         ret =
>                         dns_sign_tsig(state->dns, mem_ctx,
>                         state->state, &state->out_packet,
>                         0);
>                 Looks to me a simpler fix would be to pass here
>                 'state' instead of
>                 mem_ctx to dns_sign_tsig()
>         I think it wouldn't be sufficient, you will need to change the
>         mem_ctx of handle_tkey as well.
>         Also despite all the variables being called 'state' they have
>         different type, in the function dns_process_recv (the function
>         that call dns_sign_tsig) state is a struct dns_process_state
>         and in dns_server_process_query_send (calling handle_tkey,
>         where the problem was reported by address sanitizer) it's a
>         struct dns_server_process_query_state.
>         It might work but I'm not sure (I haven't checked the life
>         period of dns_server_process_query_state).
>         
>         Then I think it's a bad practice to have sub-objects allocated
>         to an unrelated context, because one day or another it will
>         bite you because of the different lifetime between the object
>         and it's sub-objects.
>         
>         Last but not least, I don't think it should have an impact on
>         the TSIG stuff, and most probably I'll still have the errors
>         message in nsupdate.
>         
>         
> 
> 
> I was able to reproduce this issue even with single NIC.
> 
> 
> There are two issues:
> 
> 
> 1. The use-heap-after-free error.
> 
> 
> A simpler patch is to just fix the memory context for
> req_state->key_name (attached).
> 
> 
> 2. tsig verify error
> 
> 
> Apparently this is a known issue (checked with Andrew Bartlett).  The
> additional debug information from nsupdate shows that the error is
> coming from gssapi library.
> 
>  GSS verify error: GSSAPI error: Major = A token had an invalid
> Message Integrity Check (MIC), Minor = Success.
> 
>  tsig key '3061967696.sig-samba-i1.lindom.example.local' (<null>):
> signature failed to verify(1)
> ; TSIG error with server: tsig verify failure

Which GSSAPI library was used ? MIT or Heimdal ?

In RHEL/Fedora we backported a couple of patches we sent MIT upstream to
fix bugs in SPNEGO that affected nsupdate.

Simo.





More information about the samba-technical mailing list