web-dev-qa-db-fra.com

Remplace Bash avec une autre coquille une étape prudente?

Considérant que RedHat et d'autres équipes majeures dans les entreprises mènent une vérification à Bash et ont découvert quelques autres vulnérabilités à -7169 (-7186 et -7187), est-elle raisonnable de lier /bin/sh à une autre coquille?


Les deux 7186 et -7187 ont été trouvés par un chercheur - Florian Weimer - en quelques jours à peine (Redhat travaille sur Shellshock depuis le 14 septembre), découverte de manière indépendante par Todd Sabin de VMware. Juste combien de plus de feutre il y a quelqu'un de suppose. Au fait, je ne parle pas de remplacement permanent, il suffit de suspendre jusqu'à ce que les choses se dissipent.

13
Deer Hunter

Pour déterminer définitivement la mesure à laquelle cela pourrait être "une étape prudente", je pense que vous devriez faire des recherches de sécurité originales sur les substituts possibles, notamment:

  • Dash de Debian
  • Ksh d'OpenBSD
  • Bupérer des cendres
  • MiRBSD/MIROS MKSH
  • ... et certainement d'autres

La réponse de Mark suggère que, au moins OpenBSD, a déjà reçu un examen de la sécurité, mais je ne suis pas sûr de la mesure ou s'il existe une preuve à la hausse (clairement, ils n'ont appliqué aucun examen à une pierre angulaire de la sécurité des comms (OpenSSL) jusqu'à récemment quand ils l'ont ramenée dans Libressl). D'autre part, il est assez clair pour moi que personne n'avait pris la peine de lire la source Bash pour la sécurité jusqu'à récemment, ou "Shellshock" aurait été découverte il y a longtemps; L'ensemble de la "fonction importation" est un énorme drapeau rouge que tout chercheur de sécurité examinerait dès qu'ils l'ont vu (et, espérons-le, recommander l'intégralité de la suppression). Mais pour les autres, ce n'est pas aussi clair.

Ce qui est clair, cependant, est que tout ce qui précède a une surface d'attaque beaucoup plus petite que Bash. Pour qu'un attaquant prenne le contrôle sur un programme, il doit y avoir un canal d'entrée. Celles-ci peuvent bien sûr être des éléments non évidents comme des limites de ressources, une horloge système, etc., mais ils sont toujours des intrants; Un programme avec absolument aucun intrants n'est trivialement non vulnérable. Le Bug de conception de sécurité In Bash est qu'il prend des entrées potentiellement non approuvées (le contenu des variables d'environnement arbitraire) et de les soumettre à un traitement compliqué (analyse de code) . D'autre part, aussi au courant que je sache, aucune des coquilles énumérées ci-dessus ne procède à aucun traitement du contenu des variables d'environnement (sauf individuellement avec un sens établi spécifié comme LANG et LC_*, ENV, IFS, PATH, PS1, etc.) ou autre contribution; Ils offrent simplement le contenu comme des données abstraites qui sont transmises.

Donc, d'un point de vue de la conception de sécurité, même sans audit ces alternatives, je les estimerais pour être des choix plus sûrs que Bash. Que cela reste le cas, ce ne sera pas clair. Certainement bash obtient beaucoup de nouvelles attention, quelles autres coquilles sont moins susceptibles de recevoir, afin que nous puissions nous retrouver que la plupart des problèmes de Bash se réalisent pendant que des problèmes dans d'autres obus restent inconnus. Ensuite, vous avez divers facteurs à prendre en compte, comme si vous êtes susceptible de cibler individuellement, auquel cas l'utilisation de logiciels moins traditionnels peut être un passif.

Personnellement, j'utilise la plupart des lieux de cendres. Si rien d'autre, Ash et Dash utilise environ 1/5 de la mémoire de bash et commencent 2 à 8 fois plus vite, ils sont également des choix très pratiques d'un point de vue non-sécurité.

Il est un peu ridicule de réagir à une vulnérabilité que l'on trouve dans un produit en le remplaçant par un autre. Voir le classique Problème d'enquête de survie de Bomber WW2 pour la raison pour laquelle. Essentiellement, vous réagissez à un incident rare et improbable comme s'il s'agissait d'une preuve définitive de la sécurité de bash contre celle des autres obus.

Gardez à l'esprit que visible Exploits ne dit absolument rien sur le nombre de non divulgué Ceux et sur le nombre de vulnérabilités existantes dans les logiciels. Ce pourrait être que Bash est monolée ou que cela pourrait être qu'après avoir été sous surveillance, il est entièrement exempt de vulnérabilités. Le problème est que personne ne soit capable de faire une telle réclamation jusqu'à tout le code de tout Les coquilles ont été minutieusement examinées ou même mieux prouvées être correctes.

Vous seriez mieux avec les métriques sur la qualité du code écrit par chaque projet et sur leur capacité à détecter et à corriger des bugs et à répondre aux incidents critiques plutôt que de spéculer sur une poignée de vulnérabilités.

8
Steve Dodier-Lazaro

Debian et Ubuntu le font déjà en utilisant dash au lieu de bash pour /bin/sh. Bien entendu, cela substitue une base de code moins inspectée dans un élément clé de l'infrastructure système, il est donc une possibilité distincte qu'il ait des vulnérabilités inconnues d'égalité d'impact sur les récentes questions bash.

2
David

Tout ce que vous faites à propos de cette vulnérabilité devrait être basé sur une analyse des vecteurs de risque potentiels réels. Il suffit d'utiliser la coque comme votre shell interactif, pour être extrême, ne comporte aucun risque de ce bogue du tout.

Le bogue n'existe que lorsque certains programmes permettent à une partie hostile de contrôler le contenu des variables d'environnement, comme indiqué par une invocation de la coquille. Par exemple, un serveur Web qui définit une variable d'environnement à la valeur de l'en-tête de l'agent utilisateur d'une demande et ne la désigne pas. Si vous exécutez un tel service, cela a du sens, avec ou sans ce bogue, d'utiliser la coque la plus simple possible. Moins il y a à la coquille, moins il pourrait y avoir des expositions de sécurité. Bien sûr, il serait plus préférable que le serveur Web soit exécuté dans une prison qui a rendu toute cette question moot. Donc, si vous devez exécuter un serveur Web ou quelque chose du genre qui lance des coquilles dans des environnements non sandboxés, rétrécissez votre exposition en exécutant la coque disponible la plus simple.

2
bmargulies