Possible fix for Kaminsky's bug
Kevin Darcy
kcd at chrysler.com
Wed Aug 27 04:33:59 UTC 2008
IMO, there's no reason to (implicitly) give a higher level of trust to
something that happened to hit the cache first.
But, I don't claim to be a security expert.
- Kevin
L. Gabriel Somlo wrote:
> All,
>
> I believe the attached patch fixes Dan Kaminsky's bug, and puts us
> back to where an attacker would have to wait for the TTL to expire
> before being able to poison the cache.
>
> Anyone see any reason why we shouldn't do this ?
>
> Thanks,
> Gabriel
>
>
> diff -NarU5 bind-9.5.0-P1.orig/lib/dns/rbtdb.c bind-9.5.0-P1/lib/dns/rbtdb.c
> --- bind-9.5.0-P1.orig/lib/dns/rbtdb.c 2008-05-01 14:32:31.000000000 -0400
> +++ bind-9.5.0-P1/lib/dns/rbtdb.c 2008-08-26 23:25:45.000000000 -0400
> @@ -4939,11 +4939,11 @@
>
> /*
> * Trying to add an rdataset with lower trust to a cache DB
> * has no effect, provided that the cache data isn't stale.
> */
> - if (rbtversion == NULL && trust < header->trust &&
> + if (rbtversion == NULL && trust <= header->trust &&
> (header->rdh_ttl > now || header_nx)) {
> free_rdataset(rbtdb, rbtdb->common.mctx, newheader);
> if (addedrdataset != NULL)
> bind_rdataset(rbtdb, rbtnode, header, now,
> addedrdataset);
>
>
>
>
More information about the bind-users
mailing list