Wie kann ich die Shellshock-Sicherheitsanfälligkeit auf einem veralteten Ubuntu-System patchen, das ich nicht aktualisieren kann?

22

Ich verwalte ein System aus der Ferne (2 Zeitzonen entfernt), auf dem Ubuntu 9.04, Jaunty ausgeführt wird. Aus verschiedenen Gründen, vor allem, weil ich nicht sicher bin, ob ich ein Distributions-Upgrade von so weit weg durchführen kann, kann ich es nicht auf eine neuere Version aktualisieren. Offensichtlich wird es nicht mehr unterstützt und es gibt keine offiziellen Patches mehr. Gibt es Anweisungen, wie ich den Code patchen und Bash selbst neu kompilieren kann, um die Shellshock-Schwachstellen zu beseitigen?

Claus
quelle
5
Welche Recherchen haben Sie zu diesem Thema durchgeführt? Die einfachste Lösung wäre wahrscheinlich, sie selbst neu zu erstellen und zu patchen. Möglicherweise müssen Sie dies akzeptieren, es ist nur Zeit, den Server zu aktualisieren.
Ramhound
Ja, das ist meine Fallback-Option. Der Server ist auf dem Weg nach draußen. Ich versuche nur, ihn so lange zu warten, bis die Mittel für seinen Ersatz eingehen. Wäre ich vor Ort, würde ich in die Kugel beißen und das Update durchführen, aber ich habe das sehr selten ohne Probleme und ohne die Möglichkeit, es in die Hände zu bekommen, würde ich das lieber nicht riskieren, wenn ich es nicht habe zu.
Claus
Es werden nur einige Keywords auf der Seite angezeigt, damit die Nutzer diese finden können. Arbeitete
1
Lass es ungepatcht, "hinkt" wird sich schnell ändern. Seien Sie ganz klar, Sie verwenden eine Distribution, die vor fünf Jahren herauskam . Der Support wurde im Oktober 2010 beendet. Es gibt noch viel mehr Sicherheitslücken, über die Sie sich Sorgen machen müssen.
Tedder42

Antworten:

29

Hat dies AskUbuntu gestohlen , jemandem, der es Hacker News gestohlen hat. Arbeitete auf zwei alten Servern für mich

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

Update: Ich habe gerade bemerkt, dass, wenn Sie --prefix=/den Befehl configure nicht ergänzen, dies auf dem /usr/local/bin/bashneuesten Stand ist und /bin/bashimmer noch anfällig ist.

unkilbeeg
quelle
Es gibt einen Fehler im Skript: Die "0 25" -Sequenz sollte "1 26" sein. Wenn Sie dies lesen und die Antwort bearbeiten können, aktualisieren Sie sie bitte. Vielen Dank!
Joelparkerhenderson
Während das gut ./configure --prefix=/ && makeläuft, make installscheint das zu erfordernsudo
Stewart
Vielen Dank, dass Sie dies veröffentlicht haben - eine faire Methode, um während der Migration Änderungen vorzunehmen. Einige Leute haben viele VMS und es ist nicht realistisch, jedes neu zu erstellen. Dies als sofortige Lösung zu verwenden, während es längerfristig durch eine aktuellere Installation gelöst wird, ist der Schlüssel.
Jas Panesar
@ rubo77 Es muss jetzt 1 27 sein (der neue 27 Patch ist der wichtigste)
joelparkerhenderson
1
Patch 28 hinzugefügt. Damit scheint die Sicherheitsanfälligkeit in CVE-2014-7186 / 7187 behoben zu sein.
Unkilbeeg
2

Es gibt auch eine Lösung, Ihre sources.list auf die neueste zu aktualisieren und dann mit apt-get nur bash zu aktualisieren. Es ist sehr schnell und ich habe einen Artikel darüber geschrieben. Im Grunde machen Sie Folgendes:

Aktualisieren Sie auf die neuesten 'vertrauenswürdigen' Ubuntu-Repositorys von apt-get.

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

Upgrade Bash / Fix anwenden:

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

Und möglicherweise wieder apt-get-Repositories ändern.

Erik Duindam
quelle
Perfekt funktioniert!
Peter Kruithof
-1

Der Befehl sollte sein

sudo apt-get update && sudo apt-get install --only-upgrade bash
ColdenZero
quelle
2
Das wird nicht helfen; Wie das OP sagte, wird es nicht mehr unterstützt, daher wird es kein Upgrade für Bash geben.
Andrew Ferrier
-3

Eine einfache Möglichkeit ist, bash nicht zu verwenden. Stellen Sie sicher dash, dass installiert ist und dass dies /bin/shein Symlink ist dash, nicht bash. (Dies ist die Standardeinstellung in einigen Debian-Versionen, aber ich bin mir nicht sicher, ob Ubuntu verwendet wird.) Wenn Sie Benutzerkonten für den SSH-Zugriff mit erzwungenen Befehlen haben, müssen Sie auch deren Login-Shells ändern. Möglicherweise müssen Sie auch mit bash explizit nach Skripten suchen. Greifen nach #!/bin/bashsollte sie finden.

R ..
quelle
5
Das ist ein bisschen so, als würde man sagen: "Wir haben festgestellt, dass Sie in C ++ Segfaults haben können, verwenden Sie stattdessen einfach Java" ...
DevSolar
3
Eine nähere Analogie wäre, jemandem mit einem Fehler im GCC zu sagen, er solle versuchen, zu klirren. Beide implementieren dieselbe Sprache (mit unterschiedlichen, aber manchmal überlappenden Sätzen von Nicht-Standard-Erweiterungen), und es ist unwahrscheinlich, dass der tatsächliche Bedarf für "bash", sondern für "Shell-Interpreter" besteht.
R ..
Wie Sie sagten, gibt es Skripte, die explizit bash verwenden könnten. Selbst wenn Sie nach den vorhandenen Dateien suchen, die bash verwenden, könnte in Zukunft jemand ein neues Skript zum System hinzufügen, das bash explizit verwendet. Gleiches gilt für eingebettete Systeme, die busybox verwenden (/ bin / sh zeigt auf busybox), aber auch bash installiert haben. Das Beste ist, bash auf den anfälligen Systemen zu aktualisieren.
Jcarballo
Die meisten Unix / Linux-Skripte erfordern bash oder eine andere moderne Shell wie ksh oder zsh. Diese haben sehr viele Funktionen, die die Leute in jeder Sprache erwartet haben, sind aber nicht in den "Bare-Bones" -Shells wie (BusyBox) ash / Dash / sh (original) enthalten. Diese einfacheren Shells haben nur 20-30% der Funktionalität der größeren Shells, was sie schneller macht. Sie erfordern jedoch den umfangreichen Einsatz externer Dienstprogramme für viele gängige Vorgänge wie die erweiterte Zeichenfolgenverarbeitung und den Mustervergleich. Bash und dergleichen können unter anderem mit Asche betrieben werden. Skripte. Aber nicht umgekehrt.
DocSalvager