Behebung der Shellshock-Sicherheitslücke für ältere Systeme

    Bei Distributionen mit Live-Support wird Shellshock durch einfaches Aktualisieren des Bash-Pakets entfernt. Wenn jedoch keine Updates mehr verfügbar sind, wird die Lösung des Problems schwieriger. Es gibt nur zwei Möglichkeiten: Bash auf andere Weise zu aktualisieren oder Bash zugunsten eines anderen Shell-Interpreters abzubrechen.



    1. Installation von einem Paket aus dem Debian Wheezy-Repository in Debian Lenny.

    Wir geben /etc/apt/source.list von

    deb http://ftp.debian.org/debian lenny main contrib
    deb http://security.debian.org/ lenny/updates main contrib
    

    zu

    deb http://archive.debian.org/debian lenny main
    deb http://archive.debian.org/debian-security lenny/updates main
    deb http://archive.debian.org/backports.org lenny-backports main
    deb http://ftp.debian.org/debian wheezy main contrib
    deb http://security.debian.org/ wheezy/updates main contrib
    


    Stellen Sie sicher, dass Sie keine / etc / apt / preference-Datei haben, deren Einstellungen die Installation von Software aus Wheezy-Repositorys beeinträchtigen könnten. Fügen Sie anschließend den Schlüssel hinzu, mit dem Pakete in Wheezy signiert sind, aktualisieren Sie die Paketdatenbank und installieren Sie das bash-static-Paket.

    # apt-key adv --recv-keys --keyserver pgp.mit.edu 8B48AD6246925553
    # apt-get update && apt-get install -y bash-static
    

    Wir überprüfen nun die installierte bash-static und wo / bin / sh Punkte:

    # ls -la /bin/sh /bin/bash*
    -rwxr-xr-x 1 root root 700492 Май 12 2008 /bin/bash
    -rwxr-xr-x 1 root root 1410128 Апр 10 2010 /bin/bash-static
    lrwxrwxrwx 1 root root 4 Окт 1 00:32 /bin/sh -> bash
    

    Als nächstes ist es wichtig, die Schritte sorgfältig zu befolgen:

    # mv /bin/bash /bin/bash.old && ln -s bash-static /bin/bash
    

    Wir überprüfen das Ergebnis, es sollte so ausgehen:

    # ls -la /bin/sh /bin/bash*
    lrwxrwxrwx 1 root root 11 Окт 1 00:51 /bin/bash -> bash-static
    -rwxr-xr-x 1 root root 700492 Май 12 2008 /bin/bash.old
    -rwxr-xr-x 1 root root 1410128 Апр 10 2010 /bin/bash-static
    lrwxrwxrwx 1 root root 4 Окт 1 00:32 /bin/sh -> bash
    

    Stellen Sie sicher, dass mit der Shell alles in Ordnung ist, bevor Sie sich vom System abmelden. Versuchen Sie beispielsweise, sich über eine andere Konsole anzumelden. Da die für den Benutzer angegebene Shell nicht verfügbar ist (normalerweise in / etc / passwd), können Sie die Möglichkeit verlieren, erneut auf das System zuzugreifen.

    Nach Abschluss des Vorgangs sollten Sie einen Kommentar in /etc/apt/source.list abgeben

    #deb http://ftp.debian.org/debian wheezy main contrib
    #deb http://security.debian.org/ wheezy/updates main contrib
    


    2. Andere Distributionen.

    Für andere Distributionen können Sie den statischen Bash-Build von Debian wheezy oder den Build von ftp.ssnab.net/pub/bash (kompiliert in Schritt 3) ausprobieren.

    Sie können das Debian-Paket hier herunterladen: packages.debian.org/wheezy/bash-static

    # wget http://security.debian.org/debian-security/pool/updates/main/b/bash/bash-static_4.2+dfsg-0.1+deb7u3_i386.deb
    

    Die Datei wird entweder mit dem Dienstprogramm dpkg (relevant für ältere Ubuntu-Versionen) oder mit dem Archivierungsprogramm ar entpackt. Letzteres ist im Paket binutils enthalten.

    # mkdir tmp
    # dpkg -x bash-static_4.1-3_i386.deb tmp/
    

    oder

    # ar x bash-static_4.1-3_i386.deb
    

    Stellen Sie sicher, dass Sie die alte Version von bash in /bin/bash.old speichern, bevor Sie die heruntergeladene Binärdatei dort hochladen.

    3. Selbstkompilierung

    Dies kann erforderlich sein, wenn Ihr alter Kernel und Ihre Bash von Wheezy nicht mit Beschwerden über das Fehlen eines Systemaufrufs funktionieren, wenn ein anderes Betriebssystem verwendet wird, sowie in Fällen, in denen eine Assemblierung mit einigen durchgeführt wird dann spezielle optionen.

    Bash hat ein etwas kniffliges System zum Hochladen von Quellcodes: Separat gibt es ein Archiv einer bestimmten Version (in unserem Fall 4.3) und ein separates Verzeichnis mit Patches für Fehler, die vom Zeitpunkt der Veröffentlichung bis zum Erscheinen einer aktualisierten Version gefunden wurden. Daher laden wir beide für die unabhängige Installation von Patches herunter. Auf Debian Lenny würde es so aussehen:

    Installieren Sie die erforderlichen Pakete für die Kompilierung. Dazu müssen Sie möglicherweise Repositorys für Archive auf die richtige Weise einrichten, wie dies bei Lenny im ersten Absatz der Fall ist.

    # apt-get install libc-dev gcc automake autoconf make patch
    

    Für CentOS wird es dementsprechend sein

    # yum install glibc-devel glibc-static make automake autoconf patch
    


    # cd /usr/src
    # wget http://ftp.gnu.org/gnu/bash/bash-4.3.tar.gz
    # tar xzf bash-4.3.tar.gz
    # cd bash-4.3
    # wget -cr --reject 'index.*' --reject '*.sig' -l1 http://ftp.gnu.org/gnu/bash/bash-4.3-patches/
    # find ftp.gnu.org/gnu/bash/bash-4.3-patches/ -type f | sort -u |  xargs -l1 -I % cat % | patch -p0
    

    Verwenden Sie die Option --without-bash-malloc, um den Fehler "Mehrfachdefinition von" frei "zu vermeiden

    # ./configure --enable-static-link --without-bash-malloc --enable-job-control --enable-history
    # make
    # strip bash
    

    Kopieren Sie die resultierende Bash nach / bin und verwenden Sie sie anstelle der zuvor beschriebenen System-Bash:

    # cp bash /bin/bash.new && mv /bin/bash /bin/bash.old && ln -s bash.new /bin/bash
    

    Auf diese Weise unter Debian 5 und CentOS 5 gesammelte Binärdateien können hier heruntergeladen werden: ftp.ssnab.net/pub/bash

    4) Wenn Sie bash nicht selbst erstellen oder von anderen Distributionen herunterladen können, können Sie bash auch deaktivieren und einige verwenden ein anderer Shell-Interpreter, zum Beispiel / bin / dash. Benennen Sie / bin / bash in /bin/bash.vulnerable um und erstellen Sie einen symbolischen Link / bin / bash, der zu einem alternativen Interpreter führt.

    Dies birgt ein gewisses Risiko, da Skripte, die Bashismen enthalten, nicht mehr funktionieren - Code, der für Bash spezifisch ist. Wenn sich herausstellt, dass dies Startskripte oder wichtige Systemskripte sind, kann dies zu einer Funktionsstörung des Systems führen. Aber für diese Skripte , wenn Sie sicher sind , dass sie nicht in einer feindlichen Umgebung aufgerufen werden, explizit zu Beginn der ursprünglichen Interpreter - Datei der Bash angeben :! # / ist / bash.vulnerable

    die Update fügt Schlüsselableitungsverfahren für wheezy

    Jetzt auch beliebt: