Comment puis-je corriger la vulnérabilité shellshock sur un système Ubuntu obsolète que je ne peux pas mettre à niveau?

22

J'ai un système que j'administre à distance (à deux fuseaux horaires) qui exécute Ubuntu 9.04, Jaunty. Pour diverses raisons, principalement parce que je suis vraiment réticent à vouloir effectuer une mise à niveau de distribution de si loin, je ne peux pas la mettre à niveau vers une version plus récente. De toute évidence, il n'est plus pris en charge et il n'y a pas de correctif officiel. Existe-t-il des instructions sur la manière de corriger le code et de recompiler moi-même afin de supprimer les vulnérabilités de shellshock?

Claus
la source
5
Quelles recherches avez-vous faites sur ce sujet? La solution la plus simple serait probablement de la reconstruire et de la corriger vous-même. Vous devrez peut-être accepter cela, il est simplement temps de mettre à jour le serveur.
Ramhound
Oui, c'est mon option de secours. Le serveur est en train de disparaître, j'essaie juste de le garder en boitant jusqu'à ce que les fonds lui soient versés pour son remplacement. Si j'étais sur place, je mordrais la balle et ferais la mise à jour, mais très rarement, je le fais sans accroc, et sans pouvoir mettre la main dessus, je préférerais ne pas risquer que si je n'avais pas à.
Claus
Obtenir juste quelques mots-clés sur la page afin que les gens puissent le trouver. A également travaillé pour moi sur Mac, OS X, Mavericks, sur la base du test publié sur arstechnica.com/security/2014/09/…
1
laissez-le sans correctif, "boitant le long" va changer rapidement. Soyez très clair, vous utilisez une distribution qui est sortie il y a cinq ans . L'assistance a pris fin en octobre 2010. Vous devez vous inquiéter de nombreuses autres vulnérabilités.
tedder42

Réponses:

29

J'ai volé ça à AskUbuntu , à quelqu'un qui l'a volé à Hacker News. Travaillé sur deux vieux serveurs pour moi

mkdir src
cd src
wget http://ftp.gnu.org/gnu/bash/bash-4.3.tar.gz
#download all patches
for i in $(seq -f "%03g" 1 28); do wget http://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-$i; done
tar zxvf bash-4.3.tar.gz 
cd bash-4.3
#apply all patches
for i in $(seq -f "%03g" 1 28);do patch -p0 < ../bash43-$i; done
#build and install
./configure --prefix=/ && make && make install
cd .. 
cd ..
rm -r src

Mise à jour: Je viens de remarquer que si vous n’ajoutez pas --prefix=/à la commande de configuration, vous obtiendrez une /usr/local/bin/bashmise à jour qui /bin/bashrestera vulnérable.

unkilbeeg
la source
Il y a un bogue dans le script: la séquence "0 25" doit être "1 26". Si vous lisez ceci et que vous pouvez modifier la réponse, veuillez la mettre à jour. Merci!
joelparkerhenderson
Alors que les ./configure --prefix=/ && makepistes sont bonnes, cela make installsemble exigersudo
Stewart
Merci d’avoir mis cela sur le marché - un moyen juste de corriger les problèmes lors de la migration. Certaines personnes ont de nombreux messages virtuels et il n’est pas réaliste de les reconstruire. Utiliser cette solution comme solution immédiate tout en résolvant le problème à plus long terme en étant sur une installation plus mise à jour est la clé.
Jas Panesar
@ rubo77 Il doit être maintenant 1 27 (le nouveau correctif 27 est le plus important)
joelparkerhenderson
1
Ajout du patch 28. Cela ne semble corriger la vulnérabilité CVE-2014-7186 / 7187.
unkilbeeg
2

Il existe également une solution consistant à mettre à jour votre fichier sources.list vers le plus récent, puis à utiliser apt-get pour mettre à jour uniquement bash. C'est très rapide et j'ai écrit un article à ce sujet. Voici ce que vous faites essentiellement:

Effectuez une mise à niveau vers les derniers référentiels apt-get Ubuntu '' fiables '' (vous devrez peut-être également changer les anciennes URL de repères.ubuntu.com si vous les utilisez, vérifiez l'article lié):

sudo sed -i 's/YOUR_OS_CODENAME/trusty/g' /etc/apt/sources.list

Mettre à jour le correctif bash / apply:

sudo apt-get update
sudo apt-get install --only-upgrade bash

Et peut-être changer en arrière les dépôts apt-get.

Erik Duindam
la source
A parfaitement fonctionné!
Peter Kruithof
-1

La commande devrait être

sudo apt-get update && sudo apt-get install --only-upgrade bash
ColdenZero
la source
2
Cela ne va pas aider. comme l'OP l'a dit, il n'est plus pris en charge, il n'y aura donc pas de mise à niveau pour bash.
Andrew Ferrier
-3

Une option simple consiste simplement à ne pas utiliser bash. Assurez - vous dashest installé et /bin/shest un lien symbolique dash, non bash. (Ceci est la valeur par défaut sur certaines versions de Debian, mais je ne suis pas sûr à propos de Ubuntu.) Si vous disposez de comptes utilisateurs pour l'accès ssh avec des commandes forcées, vous devez également modifier leurs shells de connexion. Vous devrez peut-être également vérifier si des scripts utilisent explicitement bash; grepping #!/bin/bashdevrait les trouver.

R ..
la source
5
C'est un peu comme si on disait "nous avons trouvé que vous pouvez avoir des segfaults en C ++, utilisez simplement Java à la place" ...
DevSolar
3
Une analogie plus étroite serait de dire à quelqu'un qui rencontre un bogue dans GCC d'essayer Clang. Les deux implémentent le même langage (avec des ensembles d'extensions non standard différents mais parfois se chevauchant) et il est peu probable que le besoin réel concerne "bash" mais plutôt un "interpréteur de shell".
R ..
Comme vous l'avez dit, certains scripts pourraient explicitement utiliser bash. Même si vous recherchez les fichiers existants qui utilisent bash, il est désormais possible que quelqu'un ajoute un nouveau script au système qui utilise explicitement bash. Il en va de même pour les systèmes embarqués qui utilisent busybox (/ bin / sh pointe sur busybox), mais aussi sur lequel bash est installé. La meilleure chose à faire est de mettre à jour bash dans les systèmes vulnérables.
jcarballo
La majorité des scripts Unix / Linux nécessitent bash ou un autre shell moderne tel que ksh ou zsh. Celles-ci ont un grand nombre de fonctionnalités auxquelles les gens s'attendent dans n'importe quelle langue, mais qui ne sont pas présentes dans les coquilles "nues" telles que (BusyBox) ash / Dash / sh (original). Ces coques plus simples ne disposent que de 20 à 30% de la fonctionnalité des coques plus grandes, ce qui les rend plus rapides. Cependant, ils nécessitent l’utilisation étendue d’utilitaires externes pour de nombreuses opérations courantes telles que la gestion avancée des chaînes et la correspondance des modèles. Bash et autres peuvent fonctionner en frêne, etc. les scripts. Mais pas vice-versa.
DocSalvager