Connexion
Abonnez-vous

Linux, Unix : importante faille dans les VPN, avec injection de données et vol de session

Linux, Unix : importante faille dans les VPN, avec injection de données et vol de session

Le 09 décembre 2019 à 09h04

Elle porte la référence CVE-2019-14899 et pourrait causer de gros dégâts. Ubuntu 19.10, Fedora, Debian 10.2, Manjaro 18.1.1, Arch 2019.05, FreeBSD, OpenBSD… la liste des distributions touchées est longue.

De manière générale, elle concerne tous les systèmes utilisant la configuration par défaut de systemd sorti après le 28 novembre 2018. En cause, le changement d’un paramètre rp_filter de « strict » à « loose »… avec des conséquences en cascades.

« Cette vulnérabilité affecte la plupart des distributions Linux et des systèmes d'exploitation Unix comme FreeBSD, OpenBSD, macOS, iOS, et Android et permet à un attaquant présent dans le réseau local de déterminer si un autre utilisateur est connecté à un VPN, l'adresse IP virtuelle qui lui a été attribuée par le serveur VPN, et s'il y a ou non une connexion active à un site Web donné », explique le portail de cybersécurité des systèmes de santé qui reprend la publication sur Seclists de William J. Tolley, Beau Kujath et Jedidiah R. Crandall.

Le portail ajoute : « De plus, l’attaquant pourrait déterminer les numéros des séquences et d'acquittements des sessions TCP en comptant les paquets chiffrés et/ou en examinant leur taille. Cela lui permet d'injecter des données dans le flux TCP et de voler ces sessions. Ces vulnérabilités concernent OpenVPN, WireGuard et IKEv2/IPSec, mais potentiellement aussi d'autres technologies VPN ».

Les chercheurs donnent plusieurs pistes permettant de limiter les dégâts, notamment activer le reverse path filtering et mettre en place le filtrage Bogon.

Le 09 décembre 2019 à 09h04

Commentaires (56)

Vous devez être abonné pour pouvoir commenter.

Abonnez-vous
votre avatar

OpenBSD est touché aussi ?????

Mais il utilise systemd, lui ???



Je trouve ça chelou…

votre avatar

Bon, faut déjà être dans le réseau local…

votre avatar

D’après la publication originale:

Here is a list of the operating systems we have tested which are vulnerable to this attack:





  •  Ubuntu 19.10 (systemd)

  •  Fedora (systemd)

  •  Debian 10.2 (systemd)

  •  Arch 2019.05 (systemd)

  •  Manjaro 18.1.1 (systemd)



     



  •  Devuan (sysV init)

  •  MX Linux 19 (Mepis+antiX)

  •  Void Linux (runit)



     



  • Slackware 14.2 (rc.d)

  • Deepin (rc.d)

  • FreeBSD (rc.d)

  • OpenBSD (rc.d)





      This list isn’t exhaustive, and we are continuing to test other distributions, but made sure to cover a variety of init systems to show this is not limited to systemd.



    Par conséquent, la faille n’est pas dans systemd mais est activée par systemd par défaut depuis la mise à jour en question et d’autres systèmes d’init peuvent l’activer (là aussi depuis plus ou moins longtemps).

    De plus, les distribs utilisant systemd mais qui modifient la conf par défaut peuvent aussi être protégées.

     

votre avatar

C’est le cas de tous les réseaux Wi-Fi public où, justement, il est de bon ton de se protéger par l’utilisation d’un VPN.

votre avatar







fred42 a écrit :



C’est le cas de tous les réseaux Wi-Fi public où, justement, il est de bon ton de se protéger par l’utilisation d’un VPN.







Oui, merci de préciser cela.


votre avatar

Si l’admin du Wi-Fi public a bien fait son taf, normalement les&nbsp; utilisateurs sont isolés. <img data-src=" />

votre avatar

Tu as encore trop foi dans les compétences des prestataires de solution Wi-Fi public toi <img data-src=" />

votre avatar

J’ai travaillé pour une start-up qui délivre ce genre de solutions et y’a bcp de turn-over. <img data-src=" />

votre avatar

/ mode troll activé /

M’en fou, chui sous Windaube :)

votre avatar

Ils parlent de vpn en TCP. Cela veut dire que en UDP il n’y a pas ce problème ?

votre avatar

N’étant pas suffisamment pointu sur le sujet, ça veut dire que les machines sous debian 9 utilisant openvpn&nbsp; en udp sont également touchées ?

votre avatar

C’est la loose <img data-src=" />

votre avatar







crocodudule a écrit :



N’étant pas suffisamment pointu sur le sujet, ça veut dire que les machines sous debian 9 utilisant openvpn&nbsp; en udp sont également touchées ?





Pour moi le problème concerne la validation de l’adresse source. Donc là ils jouent un peu le catastrophisme avec wiregard, vpn,…. mais à mon sens toute connection TCP ou UDP peux être touchée.



Le RPF est inclus dans linux depuis … pfffff … longtemps , je sais pas trop pourquoi sur le desktop il est pas activé par défaut.



&nbsp;A lire :https://www.slashroot.in/linux-kernel-rpfilter-settings-reverse-path-filtering

Il y 3 valeurs :

0 : Désactivé

1 : Activé strict ( == drop paquet si il arrive pas par l’interface réseau par laquelle il est censé arriver)

2 : Activé loose ( == drop paquet si il arrive pas par l’interface réseau par laquelle il est censé arriver ni par n’importe quelle autre interface avec une route active)



Chez moi, debian 9 je viens de voir que la valeur est à 0.



&nbsp;Après c’est un réglage important pour les routeurs… mais l’exemple pris avec les VPN implique que dans ce cas précis un desktop aurait 2 interfaces actives en même temps, donc …. devient routeur (partiellement, il manquerais notamment ./ipv4/conf/xxxx/forwarding = 1 )



&nbsp;


votre avatar

La vache, l’erreur de config par défaut qui fait mal …



Moi qui voulais justement regarder pour configurer un VPN avec Open VPN pour avoir accès à mon réseau local à distance …



Ca va sans doute attendre un peu (au moins que j’aie le temps de lire comment réduire le risque. <img data-src=" />

En attendant le tunneling SSH restera mon copain (même si pour le partage de fichiers Windows ça pose d’autres problèmes). <img data-src=" />

votre avatar







crocodudule a écrit :



N’étant pas suffisamment pointu sur le sujet, ça veut dire que les machines sous debian 9 utilisant openvpn  en udp sont également touchées ?







Pareil, je suis pas (du tout) spécialiste du VPN, mais je crois qu’IKEv2 utilise UDP, et qu’OpenVPN, c’est plutôt TCP. Question de vitesse il me semble… A prendre avec des picettes grosses tenailles.


votre avatar







KP2 a écrit :



OpenBSD est touché aussi ?????







Oui.





Mais il utilise systemd, lui ???





Non.


votre avatar







Ricard a écrit :



Pareil, je suis pas (du tout) spécialiste du VPN, mais je crois qu’IKEv2 utilise UDP, et qu’OpenVPN, c’est plutôt TCP. Question de vitesse il me semble… A prendre avec des picettes grosses tenailles.





Je pense également ça pour openvpn, l’UDP ne servant qu’au moment de la négociation avec le serveur pour la connexion (du moins je l’ai capté comme ça).


votre avatar

Openvpn marche en UDP en général. C’est plus rapide que TCP.

votre avatar







crocodudule a écrit :



Je pense également ça pour openvpn, l’UDP ne servant qu’au moment de la négociation avec le serveur pour la connexion (du moins je l’ai capté comme ça).





La négociation se fait uniquement en TCP. UDP ne négocie pas


votre avatar

<img data-src=" />







Juju251 a écrit :



La vache, l’erreur de config par défaut qui fait mal …



On parle d’ES avec son port ouvert aux quatre vents par défaut ?


votre avatar

Pas besoin d’être sur le LAN, un MitM BGP permet d’intercepter le flux, c’est bien pour ça que les préconisations concernent le filtrage des routes - d’ailleurs dans URPF, c’est “Forwarding”, pas “Filtering”.

votre avatar







dada55 a écrit :



<img data-src=" />

On parle d’ES avec son port ouvert aux quatre vents par défaut ?





ES ?


votre avatar







Juju251 a écrit :



Ca va sans doute attendre un peu (au moins que j’aie le temps de lire comment réduire le risque. <img data-src=" />

En attendant le tunneling SSH restera mon copain (même si pour le partage de fichiers Windows ça pose d’autres problèmes). <img data-src=" />







Si ça peut t’aider :https://mobaxterm.mobatek.net/


votre avatar







democrite a écrit :



La négociation se fait uniquement en TCP. UDP ne négocie pas





Alors je ne dois pas bien comprendre ce qu’est la phase négociation, j’avais dans l’idée que c’était de dire “coucou je suis un client avec tel certificat” “salut moi je suis un serveur avec tel certificat, on se comprend donc on a la même clef publique et la CA nous a validé donc on peut continuer à papoter” et que cela se faisait sur le seul port ouvert sur le serveur (et en UDP par défaut pour openvpn)


votre avatar







democrite a écrit :



Openvpn marche en UDP en général. C’est plus rapide que TCP.





C’est plus rapide, mais ça passe beaucoup moins bien les proxys (d’entreprise ;))

Du coup il y a encore pas mal d’utilisateurs de VPN en tcp…&nbsp;<img data-src=" />


votre avatar







GourouLubrik a écrit :



C’est plus rapide, mais ça passe beaucoup moins bien les proxys (d’entreprise ;))

Du coup il y a encore pas mal d’utilisateurs de VPN en tcp…&nbsp;<img data-src=" />





Tu peux faire fonctionner openvpn en TCP (pour être honnête j’ai jamais vu la différence)


votre avatar

Elasticsearch

votre avatar

Merci, je ne connaissais pas. ;)

Du coup, la config par défaut de ce soft à l’air rock’n roll.

votre avatar

C’est avant même ça, c’est genre:





  • Coucou j’aimerai établir une connexion avec toi.

  • Coucou je suis d’accord pour établir cette connexion avec toi.

  • Ok, super.

votre avatar







dylem29 a écrit :



C’est avant même ça, c’est genre:





  • Coucou j’aimerai établir une connexion avec toi.

  • Coucou je suis d’accord pour établir cette connexion avec toi.

  • Ok, super.





    On dirait un mauvais plan tinder <img data-src=" />


votre avatar

Un peu. <img data-src=" />



Mais ça permet de “garantir” la connexion, si des paquets sont perdus, ils sont renvoyés.

L’UDP lui s’en font de ça, il t’envoie les données sans rien vérifier et si jamais un paquet et perdu, tant pis, il est utilisé pour le streaming et les jeux en ligne.

votre avatar







dylem29 a écrit :



Un peu. <img data-src=" />



Mais ça permet de “garantir” la connexion, si des paquets sont perdus, ils sont renvoyés.

L’UDP lui s’en font de ça, il t’envoie les données sans rien vérifier et si jamais un paquet et perdu, tant pis, il est utilisé pour le streaming et les jeux en ligne.





Merci de ces précisions :)


votre avatar

Pas de souci, mais ne prend pas ça comptant, c’est des souvenirs de cours. <img data-src=" />

votre avatar

”…un attaquant présent dans le réseau local…”

Ouf, j’ai failli avoir peur.

votre avatar







dylem29 a écrit :



Pas de souci, mais ne prend pas ça comptant, c’est des souvenirs de cours. <img data-src=" />







Le wifi c’est un peu comme UDP. A la différence que le routeur fait un monologue même quand il n’y a personne :




  • “Coucou, moi c’est …SSID…”

  • “Coucou, moi c’est …SSID…”

  • “Coucou, moi c’est …SSID…”

  • “Coucou, moi c’est …SSID…”

  • “Coucou, moi c’est …SSID…”

  • “Coucou, moi c’est …SSID…”

  • “Coucou, moi c’est …SSID…”

    (…)



    -“Non je ne veux pas parler avec toi”

  • “Coucou, moi c’est …SSID…”

  • “Coucou, moi c’est …SSID…”

  • “Coucou, moi c’est …SSID…”

  • “Coucou, moi c’est …SSID…”

  • “Coucou, moi c’est …SSID…”

  • “Coucou, moi c’est …SSID…”



    Bref. <img data-src=" />


votre avatar

C’est un peu le harceleur de rue. haha

votre avatar

Pire : il y a en a maintenant dans les foyers ! <img data-src=" />



Sinon il y a le même problème avec https… au moins la partie quel site visité. D’où le ESNI proposé par cloudflare… c’est la période parano. <img data-src=" />

votre avatar

C’est le weinstein des réseaux ! Surtout s’ils ont des NAT !

votre avatar

Ça c’est du TCP

votre avatar







democrite a écrit :



Ça c’est du TCP





Mais du coup comment fait le client openvpn pour négocier en TCP avec le serveur openvpn dont seul un port en UDP est accessible depuis l’extérieur ?


votre avatar

Bah oui, je le dis que c’est du TCP.



L’UDP il n’y a pas de session.

votre avatar







Bill2 a écrit :



/ mode troll activé /

M’en fou, chui sous Windaube :)







Windaube, c’est aussi sous SystemV. <img data-src=" />

Enfin, le V, c’est pour les 5 minutes de temps d’accès au bureau après le démarrage… En entreprise, derrière un AD… <img data-src=" /> <img data-src=" />


votre avatar







OB a écrit :



Le RPF est inclus dans linux depuis … pfffff … longtemps , je sais pas trop pourquoi sur le desktop il est pas activé par défaut.







Comme tu le dis plus bas, il n’y a théoriquement aucune raison de l’activer sur le desktop, ce genre de traitement est sensé se faire sur le routeur.



Les auteurs du rapport disent d’ailleurs que c’est probablement une mauvaise piste pour résoudre la faille.



Possible Mitigations:





  1. Turning reverse path filtering on



    Potential problem: Asynchronous routing not reliable on mobile devices,

    etc. Also, it isn’t clear that this is actually a solution since it

    appears to work in other OSes with different networking stacks. Also,

    even with reverse path filtering on strict mode, the first two parts of

    the attack can be completed, allowing the AP to make inferences about

    active connections, and we believe it may be possible to carry out the

    entire attack, but haven’t accomplished this yet.


votre avatar







crocodudule a écrit :



Mais du coup comment fait le client openvpn pour négocier en TCP avec le serveur openvpn dont seul un port en UDP est accessible depuis l’extérieur ?





D’abord ils discutent en TCP pour effectuer la connexion et en suite ils établissent un tunnel en UDP et tout se passe dedans .


votre avatar

Le serveur Openvpn écoute sur un port TCP , comme tous les serveurs. L’autorisation se passe en TCP,ensuite un tunnel UDP est créé et tout se passe a l’intérieur par la suite. On peut créé un tunnel en TCP mais c’est considérablement plus lent.

votre avatar

Ca me rappelle Baldur’s Gate <img data-src=" />



Hé c’est moi Imoen

Hé c’est moi Imoen

Hé c’est moi Imoen

votre avatar

“pour le groupe !”

votre avatar







democrite a écrit :



D’abord ils discutent en TCP pour effectuer la connexion et en suite ils établissent un tunnel en UDP et tout se passe dedans .





J’ai du mal à suivre, ils peuvent discuter alors que le port est fermé en TCP ? <img data-src=" />


votre avatar

On m’aurait caché des choses sur la sureté de LINUX ? <img data-src=" />

Comme quoi Windows 10 n’est pas si mauvais en matière de sécurité …

votre avatar

Il y a beaucoup de routeurs qui tournent sous Windows 10 ?

votre avatar







crocodudule a écrit :



J’ai du mal à suivre, ils peuvent discuter alors que le port est fermé en TCP ? <img data-src=" />





Le port est toujours ouvert en TCP.Ils discutent, se reconnaissent et font un tunnel en protocol UDP


votre avatar







Winderly a écrit :



“…un attaquant présent dans le réseau local…”

Ouf, j’ai failli avoir peur.





C’est vrai que les hébergeurs n’ont pas de réseau local. Ton serveur chez eux ne court aucun risque.


votre avatar

Je n’ai aucun serveur. <img data-src=" />

votre avatar

Qu’est-ce que tu fous ici alors? <img data-src=" />

votre avatar

Je viens de relire avec attention la brève à 2 reprises.

Il est bien mentionné “le serveur VPN”.

Mais je trouve que la brève laisse penser que tout le monde peut être victime.



Bref j’ai sans doute mal (ou pas) compris que c’est réservé aux gens ayant au moins un serveur.

votre avatar

Ma blague est tombée à plat.



Pas grave, tu m’as poussé à aller lire la description complète sur seclists.org, ce que j’avais eu la flemme de faire, la brève étant trop brève pour tout décrire.



Oui, toute machine sous un Linux (ou autre système cité) étant connecté par un VPN (ou autre WireGuard, ou IKEv2/IPSec) peut être vulnérable, pas uniquement un serveur.



Par contre, il est décrit qu’il faut contrôler un AP (point d’accès) pour attaquer alors que la brève dit qu’il faut être dans le même réseau local. Les 2 sont peut-être bien vrais suivant les cas, l’AP étant plus facile puisqu’il voit passer tous les paquets par design mais je pense qu’en étant en écoute de tout ce qui passe dans un réseau Wi-Fi, ça doit être pareil. Par contre, dans un réseau filaire, sur un switch réseau, tu ne peux pas écouter les autres connexions et contrôler le routeur est bien le plus simple (sinon, il faut faire du arp poisoning pour détourner vers le trafic vers ta machine sur le même réseau local).


Linux, Unix : importante faille dans les VPN, avec injection de données et vol de session

Fermer