Une série d’attaques portant sur le protocole de synchronisation d’horloges #NTP (et sur sa mise en œuvre la plus répandue) ont été publiées hier (la date n’est pas innocente, pour une attaque portant sur le temps) dans « Attacking the Network Time Protocol ». Les conséquences théoriquement possibles sobnt multiples : certificats acceptés alors qu’ils ne devraient plus l’être, attaques par déni de service contre DNSSEC, journaux inexploitables en cas d’attaque car la machine a une mauvaise heure, etc. Les identificateurs officiels sont CVE-2015-7704, CVE-2015-7705 et CVE-2015-5300.
Le papier officiel (bonen lecture, recommandée) : ►http://www.cs.bu.edu/~goldbe/NTPattack.html Un résumé en anglais assez sensationnaliste : ▻http://arstechnica.com/security/2015/10/new-attacks-on-network-time-protocol-can-defeat-https-and-create-chaos Un autre résumé : ▻http://www.networkworld.com/article/2996260/researchers-warn-computer-clocks-can-be-easily-scrambled.html Une implémentation, évidemment nommée DeLorean : ▻http://www.en.pentester.es/2015/10/delorean.html RFC NTP : ►http://www.bortzmeyer.org/5905.html
L’INsécurité de NTP est bien connue ►http://www.bortzmeyer.org/7384.html Comme souvent dans les articles de sécurité, ce dernier papier contient des problèmes réels qu’il faut traiter mais aussi pas mal de marketing et de boursouflures.
Pour la pratique, voici ce que les administrateurs système peuvent faire :
1) Patcher ntpd pour AU MOINS 4.2.8p4 (dans Debian, par exemple, le
patch n’est pas encore arrivé)
▻http://support.ntp.org/bin/view/Main/SecurityNotice#Recent_Vulnerabilities
2) Vérifier les serveurs, notamment pour l’attaque par fragmentation
(on ne doit pas accepter de fragmenter à des tailles ridicules)
Normalement, Linux n’est pas vulnérable
▻http://cschramm.blogspot.fr/2012/12/why-does-linux-enforce-minimum-mtu-of.html
2bis) Vérifier qu’on a bien déployé l’authentification NTP partout où
c’est possible
3) Surveiller les serveurs pour voir si l’attaque est réellement exploitée
Shell :
for server in $SERVERS; do
ssh $server date -u
done
Ansible :
ansible -m shell -a "date -u" all
4) À plus long terme (pour les courageux) :
– Refaire les mesures de temps d’Alain Thivillon (mesures de plein de serveurs Web publics) pour voir si ces attaques sont faites en vrai.
– Développer un ▻https://www.monitoring-plugins.org script qui compare l’horloge des serveurs à une référence (supposée ignorée de l’attaquant)
Pour ces deux derniers développements, on peut s’inspirer de tlsdate ▻https://github.com/ioerror/tlsdate