La faille DNS

La faille DNS - réseaux et sécurité - Linux et OS Alternatifs

Marsh Posté le 23-07-2008 à 13:18:16    

Salut les moules,
 
à propos de la faille DNS des DSA http://www.debian.org/security/2008/dsa-1603 http://www.debian.org/security/2008/dsa-1604 et http://www.debian.org/security/2008/dsa-1605
 
dont on parle également ici:
 
http://lwn.net/Articles/289138/
 
 
Y a des trucs que je comprends pas bien.
De ce que je crois comprendre, ça n'affecte que les resolvers, donc potentiellement tous les clients et serveurs. La faille c'est que le port source est prédictible et qu'avec des ID DNS 16bits, c'est assez fastoche. Mais ce que je ne saisis pas bien:
1) Debian dit que pour corriger le problème il faut utiliser BIND9 et vérifier qu'on a pas une option à la con qui désactive la randomization de port. Pour le resolver de la libc, pour le moment il n'y aurait pas de solution.
2) sur une RHEL 4.5 avec un 2.6.9, quand je lance une rafale de 'dig', ça bind sur le même port. Si je lance une rafale 1s plus tard, ça rebind sur un autre même port (en incrémentant). La je vois le problème, mais comment diable ça se fait que deux programmes pas root se retrouve binder sur le même port ? J'ai stracé le truc, et ça bind sans préciser de port. OK c'est de l'UDP mais c'est pas très glop que 2 invocations successives se retrouve sur le même port. Ca peut mettre un sacré souk. Et pour cause. 'tain j'avais jamais réalisé que le noyau 'recyclé' à se point les sockets UDP.
3) par contre sur un noyau récent >= 2.6.24, quand je fais des rafale de bind, et bien ça utilise des ports bien aléatoires pour chaque invocation. Donc c'est pas vulnérable.
4) donc on peut avoir une libc vulnérable, mais avec un noyau récent, on est protégé donc.
5) comment diable bind9 fait-il pour implémenter la randomization de port (RTFS je sais) ?

Reply

Marsh Posté le 23-07-2008 à 13:18:16   

Reply

Marsh Posté le 23-07-2008 à 13:30:29    

Taz a écrit :

5) comment diable bind9 fait-il pour implémenter la randomization de port (RTFS je sais) ?


J'ai pas vérifié dans les sources mais lors du bind y a moyen de passer des options via les flags (notamment SO_REUSEADDR et SO_REUSEPORT) pour réutiliser des anciennes sockets dans un certains états.
1. Soit y a un comportement par défaut qui ne réutiliser pas les sockets lorsqu'on ne l'indique pas
2. Soit y a un flag permettant de dire explicitement que l'on ne désire pas réutiliser de socket => random
3. Peut on décider du port source ? Je me rappelle plus...

 


Sur la page de l'isc http://www.isc.org/index.pl?/sw/bi [...] e=9.3.2-P2
Dernier upcoming fix il en parle.

Message cité 1 fois
Message édité par o'gure le 23-07-2008 à 13:33:58

---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 23-07-2008 à 19:19:59    

Merci pour le lien. J'avais jamais fait gaffe sur ces sockets UDP: je pensais pas que le noyau recylé immédiatement, j'aurais pensé qu'il observait un temps minimum. Mais là avec un vieux noyau, c'est systématique.

Reply

Marsh Posté le 23-07-2008 à 23:27:12    

o'gure a écrit :


J'ai pas vérifié dans les sources mais lors du bind y a moyen de passer des options via les flags (notamment SO_REUSEADDR et SO_REUSEPORT) pour réutiliser des anciennes sockets dans un certains états.

 

Oui mais attention: SO_REUSEADDR est "concue" pour des sockets connectées, surtout applicable pour pouvoir se bind() à nouveau à certaines adresses même s'il y a des états TIME-WAIT. Si on veut faire des requetes randoms, c'est stupide: si on met le flag, ca veut dire qu'on souhaite réutiliser la même socket, donc forcément la même adresse source.

 

SO_REUSEPORT n'a été créé (amha) que pour du multicast, qui permet à plusieurs process de partager un même port (c'est plutot nécessaire pour le multicast justement). L'utiliser pour autre chose, c'est s'exposer à de gros soucis (c'est pour ca que _tous_ les process souhaitant utiliser ce flag doivent le signaler, sinon le noyau refusera la création d'une deuxième socket avec la même adresse).

 
Citation :

1. Soit y a un comportement par défaut qui ne réutiliser pas les sockets lorsqu'on ne l'indique pas
2. Soit y a un flag permettant de dire explicitement que l'on ne désire pas réutiliser de socket => random
3. Peut on décider du port source ? Je me rappelle plus...

 

1. politique de recyclage interne du noyau sur les buffers. Si tu redemandes la même adresse dans un délai très court, fortes chances que le noyau te réutilise la même struct.
2. non, c'est hors du champ du programme. Le process ne controle rien sur l'utilisation des sockets après le close(). Si tu veux forcer, il faut recréer une socket en s'assurant que l'adresse (IP et/ou port) soit différente.
3. ca dépend du sens. Tu peux spécifier le source d'une réponse d'un serveur quand tu lies l'espace de nom voulu avec la socket, via un bind(). Mais c'est le noyau qui décide du source quand tu utilises une socket sans lier, car justement, tu n'associes pas d'espace de nom (c'est de là que vient le mot "bind" ), la socket est anonyme.

 

Edit: ah oui, je vois que c'est pas très clair: quand je parle d'adresse, c'est celle de la socket, donc pour inet, c'est IP+port.


Message édité par Gf4x3443 le 23-07-2008 à 23:31:15
Reply

Marsh Posté le 24-07-2008 à 10:06:40    

Comme quoi la petite fonctionnalité de random de port sous linux, c'était pas mineur du tout.

Reply

Marsh Posté le 24-07-2008 à 10:32:38    

notez que djbdns n'est pas vulnérable lui, justement parce qu'il randomise le port.


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 24-07-2008 à 10:33:41    

black_lord a écrit :

notez que djbdns n'est pas vulnérable lui, justement parce qu'il randomise le port.


[:paris breizh]


---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 25-07-2008 à 07:36:49    

black_lord a écrit :

notez que djbdns n'est pas vulnérable lui, justement parce qu'il randomise le port.


De même pour PowerDNS. D'ailleurs au boulot on a profité de cette histoire de faille pour totalement switcher de bind9 vers pdns sur nos serveurs de noms ; ça faisait un moment qu'il en était question pour des raisons techniques (en termes de performances) et certaines limitations de bind, la faille aura juste été l'évènement déclencheur "de trop". :D

Message cité 1 fois
Message édité par THRAK le 25-07-2008 à 07:37:10

---------------
THRAK (def.) : 1) A sudden and precise impact moving from intention, direction and commitment, in service of an aim. 2) 117 guitars almost striking the same chord simultaneously.
Reply

Marsh Posté le 25-07-2008 à 16:20:17    

Un mail interessant de Stéphane Bortzmeyer sur la liste dns-fr du CRU ajourd'hui :

Citation :

> > D'ailleurs, je voudrais solliciter votre aide pour une petite
> > expérience : tester les résolveurs des FAI français.  
 
Voici des premiers résultats. Attention en les interprétant :
 
- la situation a pu changer depuis le test (en tout cas je l'espère)
 
- comme je n'ai pas un accès à tous les résolveurs, je dépends de
témoignages. Pour limiter les risques, je ne cite un résultat que s'il
y a au moins deux témoignages différents pour le FAI.
 
Free : OK
 
Wanadoo/Orange : une particularité de leurs résolveurs rend le test
inefficace (rien ne dit que cette particularité les rend plus ou moins
sûrs)
 
FDN : OK
 
Alice/Tiscali/Libertysurf : vulnérable
 
Tele2 : OK
 
Neuf/Cegetel : OK
 
Numericâble : sans doute OK
 
Gandi Hosting : OK
 
1&1 : OK
 
Le résultat est donc plutôt positif. Mais il ne faut pas relâcher les
efforts : si les gros FAI ont souvent fait la mise à jour, les sites
ayant leurs propres résolveurs (universités, par exemple), sont
souvent vulnérables.
 
À noter une très intéressante étude de nos collègues autrichiens sur
le même sujet :
 
http://cert.at/static/cert.at-0802 [...] alysis.pdf


 
Pas encore fini de lire le PDF mais ca a l'air de contenir pas mal d'infos techniques interessantes :o


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 25-07-2008 à 16:22:02    

THRAK a écrit :


De même pour PowerDNS. D'ailleurs au boulot on a profité de cette histoire de faille pour totalement switcher de bind9 vers pdns sur nos serveurs de noms ; ça faisait un moment qu'il en était question pour des raisons techniques (en termes de performances) et certaines limitations de bind, la faille aura juste été l'évènement déclencheur "de trop". :D


Oui enfin la faille n'est pas propre à Bind, mais est due à la conception du protocole DNS si je ne m'abuse :o
Et elle est juste rendue plus difficilement exploitable par l'utilisation de ports sources aléatoires, et non pas corrigée


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 25-07-2008 à 16:22:02   

Reply

Marsh Posté le 25-07-2008 à 16:42:16    

exactement [:romf]
 
les patchs permettent juste que l'exploit ne soit pas facilement utilisable [:romf]


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 25-07-2008 à 16:56:42    

Dites j'ai pas bien compris  la différence sur cette histoire avec un classique "man in the middle". Vous pourriez m'aiclairer sans être top technique ?

Reply

Marsh Posté le 25-07-2008 à 17:02:35    

gug42 a écrit :

Dites j'ai pas bien compris  la différence sur cette histoire avec un classique "man in the middle". Vous pourriez m'aiclairer sans être top technique ?


 
MITM tu te mets entre le serveur et la victime.
 
La tu envoies des requetes au serveur que tu sais qu'il va chercher à résoudre en demandant à un autre serveur, et tu en profites pour lui envoyer ta réponse à toi. Tu pollues sont cache de noms avec des données falsifiées.

Reply

Marsh Posté le 25-07-2008 à 17:07:13    

Hum  donc si je reprends :
 
1) requête à un serveur A  qui ne l'a pas dans son cache
2) ce même serveur  demande à un serveur B supérieur/gérant la zone
3) tu te fais passer pour le serveur B  
 
Ok.  En cois le random de port va éviter le fait de se faire passer pour le serveur B ?

Reply

Marsh Posté le 25-07-2008 à 17:09:20    

gug42 a écrit :

Ok.  En cois le random de port va éviter le fait de se faire passer pour le serveur B ?


 
Parce que on ne sait pas sur quel port il faut répondre pour se faire passer pour B?
Parce qu'on ne peut pas prédire le transaction ID?

Reply

Marsh Posté le 25-07-2008 à 17:11:02    

gug42 a écrit :

Hum  donc si je reprends :

 

1) requête à un serveur A  qui ne l'a pas dans son cache
2) ce même serveur  demande à un serveur B supérieur/gérant la zone
3) tu te fais passer pour le serveur B

 

Ok.  En cois le random de port va éviter le fait de se faire passer pour le serveur B ?


Si tu sais pas de quel port le serveur A envoit ses requêtes, c'est pas évident de lui envoyer ta reponse forgée.
Si c'est toujours le même, il suffit que le serveur A ait interrogé ton DNS pour savoir lequel c'est.


Message édité par e_esprit le 25-07-2008 à 17:15:31

---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 25-07-2008 à 17:13:40    

Ah oui effectivement j'y avais pas pensé  [:ludo37000]  
 
merci :jap:

Reply

Marsh Posté le 25-07-2008 à 18:02:44    

Gf4x3443 a écrit :


Parce que on ne sait pas sur quel port il faut répondre pour se faire passer pour B?
Parce qu'on ne peut pas prédire le transaction ID?


 
Faudra encore quelques années avant que tout le monde ait patché le résolveur de son routeur domestique [:dawa]
16 bits [:rhetorie du chaos]

Reply

Marsh Posté le 25-07-2008 à 18:07:32    

FCKGW a écrit :


Faudra encore quelques années avant que tout le monde ait patché le résolveur de son routeur domestique [:dawa]


 
Les opérateurs font ca à distance, ils ont des backdoors sur les routeurs qu'ils distribuent (si si).
 

Citation :

16 bits [:rhetorie du chaos]


 
Normalement, avec le port, ca devrait aider, mais non :D

Reply

Marsh Posté le 25-07-2008 à 18:16:54    

Gf4x3443 a écrit :

 

Les opérateurs font ca à distance, ils ont des backdoors sur les routeurs qu'ils distribuent (si si).

 


 

J'ai decouvert ca (je vis au quebec) lorsque le fournisseur d'acces de mes proprios (qui touchent pas une bille sur l'info) a modifie des parametres de connection a distance... alors que j'avais change le mdp du routeur et que l'acces distant est interdit  :ouch:
Imaginons que la backdoor se retrouve plus ou moins publique...  :cry:


Message édité par guepe le 25-07-2008 à 18:17:11

---------------
Un blog qu'il est bien
Reply

Marsh Posté le 26-07-2008 à 11:43:44    

Citation :


Côté protection, qu'est-ce qu'il nous reste ? Le TXID aléatoire ? Ça va vous aider un peu, mais comme on vient de le voir, ce n'est pas très utile. Le "in-bailiwick" ? Inutile. Le port source aléatoire ? Ça ne corrigera pas le problème, mais ça va aider un peu. En effet, si Kaminsky n'est pas capable de prédire le port source depuis lequel seront émises les requêtes du serveur de Bob, il devra aussi deviner cette valeur. Ce qui lui colle 16 bits de plus. Comme le TXID, il pourrait fixer le port source, et attendre patiemment une requête qui matcherait ces deux valeurs en même temps. Ce qui augmentera considérablement l'effort nécessaire à la réalisation de l'attaque.


 
Repris de l'excellant blog de Cédric Blancher ( http://sid.rstack.org/blog/index.p [...] la-baraque )
 
Comme quoi randomiser le port c'est bien mais c'est pas forcement le plus "utile"


Message édité par esox_ch le 26-07-2008 à 11:44:02

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 26-07-2008 à 11:56:41    

Il parle même pas de SecureDNS :o


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 26-07-2008 à 12:56:10    

Gf4x3443 a écrit :

Les opérateurs font ca à distance, ils ont des backdoors sur les routeurs qu'ils distribuent (si si).


Les opérateurs ne bloquent pas le nombre de pc au niveau des modems chez vous ? Les utilisateurs ajoutent pas des routeurs pour partager après ?
En tout cas, ici (.be), c'est la norme.  
 
Mais ce que je comprends vraiment pas, c'est ou se situe la nouveauté dans cette "faille", et bruit que ça fait, alors que les dns fonctionnent comme ça depuis toujours ...  :??:

Reply

Marsh Posté le 26-07-2008 à 13:07:46    

FCKGW a écrit :


Les opérateurs ne bloquent pas le nombre de pc au niveau des modems chez vous ? Les utilisateurs ajoutent pas des routeurs pour partager après ?
En tout cas, ici (.be), c'est la norme.


 
Non
 

FCKGW a écrit :


Mais ce que je comprends vraiment pas, c'est ou se situe la nouveauté dans cette "faille", et bruit que ça fait, alors que les dns fonctionnent comme ça depuis toujours ...  :??:


 
Ben c'est le problème des failles protocolaires justement. Si tu en avais conscience avant de la corruption possible de cache aveugle, il fallait le dire, tu avais droit à ton 1/4 d'heure de célébrité au black hat.

Reply

Marsh Posté le 26-07-2008 à 13:27:09    

Gf4x3443 a écrit :

Ben c'est le problème des failles protocolaires justement. Si tu en avais conscience avant de la corruption possible de cache aveugle, il fallait le dire, tu avais droit à ton 1/4 d'heure de célébrité au black hat.


 
Justement, je vois pas ce qu'il y a de spécial. C'est un simple cache poisoning, c'est connu depuis les années 90.
Le paradoxe des anniv, le port source fixe et la longueur du tID sont un ensemble de facteurs aggravants, mais pas un exploit ou une faille en soi ...
Donc soit c'est beaucoup de bruit pour rien, soit, je raté le point et je compte sur vous [:joce]

Reply

Marsh Posté le 26-07-2008 à 13:47:50    

Le truc nouveau c'est qu'ils utilisent des sous-domaines pour empoisonner un élément du domaine donné : http://blog.invisibledenizen.org/2 [...] eaked.html
(les commentaires 3,4 et 5)


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 26-07-2008 à 13:49:32    

FCKGW a écrit :


Les opérateurs ne bloquent pas le nombre de pc au niveau des modems chez vous ? Les utilisateurs ajoutent pas des routeurs pour partager après ?
En tout cas, ici (.be), c'est la norme.  
 
Mais ce que je comprends vraiment pas, c'est ou se situe la nouveauté dans cette "faille", et bruit que ça fait, alors que les dns fonctionnent comme ça depuis toujours ...  :??:


Chez moi ils fournissent carrement un modem-routeur avec4 ports, donc fait pour partager la connection sur un reseau domestique  :D  
Mais ils ont quand meme une backdoor...


---------------
Un blog qu'il est bien
Reply

Marsh Posté le 26-07-2008 à 22:53:23    

Bon, vu que ça parle DNS, et au vu des dernières failles de BIND, je me pose une question simple...

 

Qu'elles sont aujourd'hui les alternatives viables à BIND ?

 

Pour l'instant pas beaucoup de réponse (qui tienne la route), sauf peut-être un certain "Unbound" qui sort tout juste du papier cadeau (première release stable en mai dernier), ça a l'air sérieux, c'est open source, les objectifs sont fixés et c'est distribué sous licence BSD ([:dawa])...

 

Certains ont déjà testé, j'aimerais avoir des retours, mais dur d'en trouver pour un produit si... récent...

 

http://www.unbound.net/

Message cité 1 fois
Message édité par anapivirtua le 26-07-2008 à 22:55:01

---------------
Si vis pacem, para bellum.
Reply

Marsh Posté le 26-07-2008 à 22:56:10    

Pas de ML ou d'outils dédiés ou tu pourrais lire ces fameux retours ?


---------------
Décentralisons Internet-Bépo-Troll Bingo - "Pour adoucir le mélange, pressez trois quartiers d’orange !"
Reply

Marsh Posté le 26-07-2008 à 23:01:08    

Y'a une ML, quasi vide pour l'instant les seuls retours concernent des bug :o
 
(Sinon, pour un peu mieux comprendre le problème de "LA" faille DNS > http://www.milw0rm.com/exploits/6130 )


---------------
Si vis pacem, para bellum.
Reply

Marsh Posté le 26-07-2008 à 23:04:24    

Enfin, d'apres la ML il ressort un truc intéressant:
Le labo qui développe Unbound développe aussi NSD, les 2 solutions sont développées en parallèle chacune ayant un but bien définis (NSD > autorités ; unbound > cache haute performance).

 

Donc ma question s'applique aussi pour NSD :o


Message édité par anapivirtua le 26-07-2008 à 23:05:42

---------------
Si vis pacem, para bellum.
Reply

Marsh Posté le 27-07-2008 à 06:10:10    

e_esprit a écrit :

Un mail interessant de Stéphane Bortzmeyer sur la liste dns-fr du CRU ajourd'hui :

Citation :

> > D'ailleurs, je voudrais solliciter votre aide pour une petite
> > expérience : tester les résolveurs des FAI français.  
 
Free : OK


 
Pas encore fini de lire le PDF mais ca a l'air de contenir pas mal d'infos techniques interessantes :o


Comment je peux tester si mon FAI a patche?
Quelqu'un a un petit script pour tester un serveur DNS donne?


---------------
Fluctuat nec mergitur
Reply

Marsh Posté le 27-07-2008 à 09:36:57    

anapivirtua a écrit :

Bon, vu que ça parle DNS, et au vu des dernières failles de BIND, je me pose une question simple...
 
Qu'elles sont aujourd'hui les alternatives viables à BIND ?
 
Pour l'instant pas beaucoup de réponse (qui tienne la route), sauf peut-être un certain "Unbound" qui sort tout juste du papier cadeau (première release stable en mai dernier), ça a l'air sérieux, c'est open source, les objectifs sont fixés et c'est distribué sous licence BSD ([:dawa])...
 
Certains ont déjà testé, j'aimerais avoir des retours, mais dur d'en trouver pour un produit si... récent...
 
http://www.unbound.net/


djbdns et powerdns ressortent assez souvent dans les discussions sur les alternatives à Bind :o
 
Et encore une fois ce n'est pas une faille de bind mais du protocole DNS :whistle:  
 

fl0ups a écrit :


Comment je peux tester si mon FAI a patche?
Quelqu'un a un petit script pour tester un serveur DNS donne?


http://www.bortzmeyer.org/files/noclicky-1.00.pl


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 27-07-2008 à 09:48:24    

:jap:  

Your name server appears vulnerable to DNS Cache Poisoning.
All requests came from the following source port: 4347

[:totoz]
Vous avez un serveur DNS public (patche) a me recommander?


---------------
Fluctuat nec mergitur
Reply

Marsh Posté le 27-07-2008 à 10:27:48    

e_esprit a écrit :


djbdns et powerdns ressortent assez souvent dans les discussions sur les alternatives à Bind :o

 

Et encore une fois ce n'est pas une faille de bind mais du protocole DNS :whistle:

 


 

Y'a des failles relatives uniquement à BIND hein, et c'est pas nouveau  [:cerveau dr]

Message cité 1 fois
Message édité par anapivirtua le 27-07-2008 à 11:19:08

---------------
Si vis pacem, para bellum.
Reply

Marsh Posté le 27-07-2008 à 10:28:28    

fl0ups a écrit :

:jap:  

Your name server appears vulnerable to DNS Cache Poisoning.
All requests came from the following source port: 4347

[:totoz]
Vous avez un serveur DNS public (patche) a me recommander?


 
OpenDNS ont patché il me semble :o


---------------
Si vis pacem, para bellum.
Reply

Marsh Posté le 27-07-2008 à 13:33:41    


Your nameserver appears to be safe


 
[:hahaguy]


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 27-07-2008 à 13:34:37    

tiens dnsmasq n'a pas l'air vulnérable :o


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 27-07-2008 à 20:35:28    

anapivirtua a écrit :


 
Y'a des failles relatives uniquement à BIND hein, et c'est pas nouveau  [:cerveau dr]


Pasque c'est encore le plus utilisé, c'est tout :o
 
C'est comme Windows  :whistle:


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 27-07-2008 à 20:37:50    

e_esprit a écrit :


Pasque c'est encore le plus utilisé, c'est tout :o
 
C'est comme Windows  :whistle:


 
 [:prozac]


---------------
Si vis pacem, para bellum.
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed