web-dev-qa-db-fra.com

L'UPnP est-il toujours peu sûr?

Dans le monde d'aujourd'hui, sur un équipement correctement mis à jour avec le dernier logiciel/micrologiciel, l'UPnP est-il toujours non sécurisé ou ses vulnérabilités ont-elles été corrigées?

21
Daniel

Pourquoi l'UPnP est-il/n'était-il pas sûr de toute façon?

Le mauvais nom de UPnP provient de problèmes d'implémentation trouvés en 2011-2013. C'est comme dire que le courrier électronique n'est pas sécurisé et devrait être désactivé parce que quelqu'un a trouvé un problème commun dans plusieurs clients de messagerie il y a quelques années.

J'ai toujours désactivé UPnP parce que tout le monde le disait. Maintenant que j'y ai réfléchi, cela se révèle idiot. Lorsque UPnP était nouveau, certains périphériques permettaient la configuration à partir d'Internet. N'importe qui pouvait ouvrir n'importe quel port dessus. Depuis lors, les fournisseurs de routeurs ont eu amplement le temps de réparer leur logiciel. La sécurité est une chose beaucoup plus importante maintenant qu'elle ne l'était en 2011 (c'est à peu près au moment de la sortie du premier iPad), donc les fournisseurs sont plus conscients des problèmes de sécurité. Pour les routeurs plus anciens, s'ils étaient vulnérables en premier lieu, une mise à jour du firmware a probablement été publiée il y a longtemps.

Quel est le but de l'UPnP?

UPnP est une solution à un problème qui est créé en ayant trop peu d'adresses IP. Parce que tout le monde ne peut pas avoir les leurs, nous devons les partager. Pour ce faire, nous utilisons la traduction d'adresses réseau (NAT): votre routeur grand public traduit entre votre réseau local (par exemple 192.168.x.x) et votre adresse IP publique (par exemple 278.14.1.48). Les applications poste à poste telles que le partage de fichiers, les appels ou les appels vidéo, la distribution de mises à jour (Windows, Google Play), les réseaux d'anonymat, les réseaux maillés résilients, etc. ne peuvent pas tous fonctionner via NAT, nous devons donc le désactiver pour des applications spécifiques (à l'aide de redirection de port), ou trouver des solutions de contournement (telles que la perforation UDP/TCP, STUN, etc.). Le protocole UPnP est ce qu'une application utilise pour indiquer au routeur qu'elle souhaite désactiver NAT pour une application. Il s'agit essentiellement d'une redirection de port automatique.

Ne pas activer UPnP signifie que nous avons besoin de solutions de contournement au lieu de pouvoir avoir une communication d'égal à égal. Les développeurs de logiciels qui espèrent tirer un profit de vous dépenseront de l'argent pour faire fonctionner des serveurs afin de maintenir ces solutions de contournement fonctionnelles pour vous, mais les logiciels libres n'ont souvent pas de tels luxes et ne peuvent pas fonctionner sans UPnP, ou vous transférez le port manuellement.

Alors pourquoi les autres disent "oui, c'est dangereux par conception"?

(Spoiler: ils ont tort.)

Parce que NAT est omniprésent dans IPv4, de nombreuses personnes ont commencé à y compter pour la sécurité: parce que vous ne pouvez pas atteindre des hôtes individuels à l'intérieur du réseau, les vulnérabilités ne peuvent pas être exploitées de l'extérieur et les gens ont commencé à désactiver la sécurité Ils ont négligé de faire des mises à jour de sécurité et ont ouvert des partages de fichiers sans mot de passe (parce que personne n'a jamais emmené son ordinateur portable en dehors de son LAN, non?), donc Maintenant, vous avez besoin d'un pare-feu qui est en dehors de votre ordinateur portable, par exemple dans votre routeur. Combinez cela avec l'idée que UPnP peut ouvrir des ports, et vous obtenez des réponses mal informées telles que la réponse précédemment votée.

Demandez-vous: qu'est-ce qui fait que UPnP demande à votre routeur d'ouvrir un port? Ce doit être quelque chose à l'intérieur de votre réseau. Par exemple, un logiciel malveillant pourrait demander au routeur de l'ouvrir. Comme c'est terrible! Mais attendez, si vous avez des logiciels malveillants en cours d'exécution sur votre réseau et que votre ordinateur portable n'est pas sécurisé ... alors vous êtes déjà foutu non? Oui en effet.

Les logiciels malveillants n'ont pas besoin d'UPnP pour atteindre vos appareils locaux : pour qu'il puisse faire UPnP, il doit déjà être sur votre appareil ou à l'intérieur de votre réseau, afin qu'il puisse atteindre les périphériques internes par lui-même sans utiliser UPnP.

Ou que faire si un ami apporte son smartphone infecté par un malware? Il pourrait indiquer au routeur d'effectuer UPnP sur vos autres appareils et de les exposer. C'est vrai, mais encore une fois: le malware est déjà à l'intérieur de votre réseau et peut déjà atteindre vos appareils locaux directement.

Conclusion

UPnP est bien pour activer si votre routeur n'est pas ancien, ou si vous avez installé des mises à jour de firmware pour lui (ou s'il n'a jamais été vulnérable en premier lieu).

Même si votre routeur est connu pour être vulnérable (et que vous refusez d'installer la mise à jour ou que le fournisseur n'a pas publié de mise à jour), ce n'est toujours pas un problème si tous les appareils de votre réseau ont leurs mises à jour de sécurité installées. Vous devriez le faire de toute façon, car chaque site Web que vous visitez peut attaquer les appareils locaux via JavaScript dans votre navigateur (en particulier si l'appareil local peut être exploité via des requêtes HTTP aveugles), et toutes les personnes ayant accès à votre WiFi (par exemple par le craquage de mot de passe) pourrait également les pirater. Attention: cela inclut les imprimantes, les caméras IP et autres ordinateurs embarqués qui sont souvent oubliés.

19
Luc

Oui, UPnP est par conception non sécurisé.

UPnP est un protocole conçu pour ouvrir automatiquement des ports dans un pare-feu pour permettre à un étranger d'accéder à un serveur hébergé sur une machine locale qui est protégée par ledit pare-feu.

UPnP, c'est comme monter une serrure sur une porte, puis laisser la clé dans le trou de serrure. Quel est l'intérêt de monter une serrure alors?

Il va sans explication de dire pourquoi c'est un mauvais protocole depuis le début, pour aider les "débutants" qui ne peuvent même pas aller à 192.168.0.1/192.168.1.1 et transmettre un simple port si cela est nécessaire.

L'UPnP rend le pare-feu inutile. Tout cheval de Troie peut alors configurer un serveur IRC serveur IRC, serveur RAT ou tout autre élément suspect, puis demander au pare-feu d'ouvrir le port pour eux.

Si vous avez un routeur qui prend en charge UPnP, désactivez immédiatement le protocole. Je ne suis pas encore tombé sur un routeur qui ne permet pas de désactiver UPnP, donc dans tous les routeurs, cela devrait être possible. Il peut s'agir d'un routeur verrouillé par un FAI dont l'administration client est complètement désactivée, mais vous devriez alors pouvoir demander au service client de votre FAI de désactiver UPnP.

17
sebastian nielsen

Je pense que je devrais développer un peu et clarifier ce que Sebastian Nielsen a dit.

UPnP est aussi sécurisé que les systèmes d'exploitation des appareils derrière le pare-feu ou le routeur NAT/PAT.

Si vous avez une boîte Linux, BSD ou Unix derrière le routeur et que vous avez une configuration utilisateur standard où vous n'utilisez pas root pour effectuer des activités utilisateur, alors vos chances de ne pas exécuter un trojon capable d'utiliser UPnP pour compromettre votre réseau sont faible.

Si vous utilisez Windows ou avez un appareil Android sur lequel vous téléchargez des applications qui ne sont pas approuvées par le Play Store, vous êtes très vulnérable.

La plupart des routeurs ont des options pour diriger des ports externes vers des ports internes afin que vous puissiez configurer un port ou une plage de ports pour parler à la machine où vous avez besoin d'un port ouvert. Pour des raisons de sécurité, il est sage de ne pas ouvrir un port redirigé dans la plage 0-1024 car ce sont des ports communs qui seront une cible probable pour l'analyse par les pirates.

5
David Zimmerman

UPnP ouvre simplement la connectivité d'un appareil de votre réseau à un autre extérieur, à la demande de l'appareil. Donc, fondamentalement, la sécurité de cela se résume à si cette demande a été faite par un logiciel bien intentionné ou un malware.

UPnP n'est pas le point faible, mais la sécurité des applications installées sur l'appareil. Les pare-feu, le transfert de port manuel, les antivirus et les magasins d'applications ne sont que des solutions de contournement, mais pas la vraie solution.

La vraie solution est d'utiliser un logiciel dont le code source est disponible pour inspecter, installé à partir d'un centre logiciel et fréquemment corrigé pour les failles de sécurité. À savoir Linux .

Plutôt que de dire définitivement que le protocole uPNP est sécurisé par conception, ou non sécurisé par conception, il est plus logique de spécifier ce qu'il facilite réellement - ce que les hôtes du réseau local peuvent faire avec uPNP qu'ils ne pourraient pas autrement.

Dans une situation NAT, tout hôte à l'intérieur peut déjà "ouvrir un port", simplement en envoyant un paquet sur ce port. Mais, ce mappage de port n'est valide que pour le adresse de l'hôte distant à laquelle il était adressé - il n'ouvre pas ce port au "monde" comme le fait uPNP.

Ainsi, un hôte local est en mesure de faciliter la communication sortante et entrante avec l'hôte distant qu'il choisit - mais il doit choisir. Un hôte local n'est pas en mesure de s'ouvrir à la communication de tous hôtes.

Maintenant, c'est une chose souhaitable à vouloir faire si vous exécutez un service qui devrait être accessible au public. Les exemples incluent si vous exécutez un serveur comme un serveur Web, FTP ou de messagerie. Mais c'est également le cas pour certaines activités peer to peer. Par exemple, dans bittorrent, vous voulez que n'importe qui puisse vous contacter et télécharger une partie d'un fichier que vous hébergez, même si vous ne vous considérez pas comme un service.

Dans un environnement professionnel, vous devez définir spécifiquement des règles pour les services que vous souhaitez héberger.

Dans un environnement domestique, cependant, "héberger" les choses est souvent pensé de manière plus ponctuelle, et les utilisateurs domestiques ne veulent pas avoir à configurer leur routeur pour tout ce qu'ils utilisent, ce qui nécessite un port ouvert sur le monde. C'est là que uPNP s'inscrit.

Donc:

  • Oui, cela ouvre de nouvelles capacités aux hôtes locaux qui ne seraient pas autorisées autrement, ce qui inclut la possibilité d'accepter les connexions entrantes vers un port de n'importe qui.

  • Cela peut être considéré comme l'ajout, ou du moins l'élargissement, d'un vecteur de vulnérabilités possibles. Les logiciels malveillants s'exécutant sur un hôte local peuvent déjà faire beaucoup de choses sans uPNP; uPNP lui donne juste une petite capacité supplémentaire.

  • Il s'agit d'un compromis entre la facilité d'utilisation et le contrôle de la communication réseau; et pour beaucoup, ce sera un compromis tout à fait équitable, et pour d'autres non.

L'argument selon lequel NAT n'est qu'un effet secondaire de l'épuisement d'IPv4 plutôt qu'une fonctionnalité de sécurité est un peu OMI hors cible. Si ce n'était pas pour NAT, ce serait toujours une bonne idée d'avoir un pare-feu à la limite de votre réseau local qui refuse le trafic entrant qui n'a pas été initié depuis l'intérieur du pare-feu, sauf dans des cas spécifiques que vous avez configurés. Et, les appareils compatibles IPv6 offrent souvent une telle fonctionnalité même lorsqu'il n'y a pas besoin pour NAT. Vous pouvez dire que chaque hôte doit avoir son propre pare-feu à la place et traiter les autres hôtes comme non fiables, mais il existe de nombreux appareils connectés par IP (IoT) qui ne sont pas configurables de cette manière. Blocage sortant sûr et judicieux comme le port 25 est également utile.

0
thomasrutter