Achtung! Optware und Shellschock Bash

  • Hallo,
    fast jeder von Euch hat wohl mitlerweile von den Remote exploits in bash [CVE-2014-(6271,6277,7169)] gehört oder gelesen und hoffentlich sein NAS auf die FW-Version 4.1.1 Boild 20140927aktualisiert.
    Was jedoch wenige wissen ist, dass auch in Optware eine Version von Bash enthalten sein kann. Diese wird jedoch nicht mit dem FW-Update aktualisiert und stellt somit ein Sicherheitsrisiko für alle Optware-Nutzer dar.
    Ein Update mit ipkg bringt dann auch eine neue Version 3.2.52-1 auf das NAS,

    Code
    # ipkg updateDownloading http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable//PackagesDownloading http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable/Packages.gzInflating http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable/Packages.gzUpdated list of available packages in /opt/lib/ipkg/lists/cs08q1armelSuccessfully terminated.# ipkg upgradeUpgrading bash on root from 3.2.49-1 to 3.2.52-1...Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable/bash_3.2.52-1_arm.ipkConfiguring bashSuccessfully terminated.

    allerdings ist schon die Versionsabfrage ernüchternd.

    Code
    # ipkg list_installed | grep bashbash - 3.2.52-1 - A bourne style shell# /opt/bin/bash --versionGNU bash, version 3.2.49(1)-release (arm-none-linux-gnueabi)Copyright (C) 2007 Free Software Foundation, Inc.


    Ein Test mit dem Tool von hier https://github.com/hannob/bashcheck ergibt dann auch folgendes

    Code
    # ./bashcheck/opt/bin/bash --version | head -n 1GNU bash, version 3.2.49(1)-release (arm-none-linux-gnueabi)Vulnerable to CVE-2014-6271 (original shellshock)Vulnerable to CVE-2014-7169 (taviso bug)./bashcheck: line 23: 16922 Segmentation fault      bash -c "true $(printf '<<EOF %.0s' {1..79})" 2> /dev/nullVulnerable to CVE-2014-7186 (redir_stack bug)Test for CVE-2014-7187 not reliable without address sanitizerVariable function parser still active, likely vulnerable to yet unknown parser bugs like CVE-2014-6277 (lcamtuf bug)


    Um die Sicherheitslücke dennoch zu schliessen, gibt es mehrere Möglichkeiten:
    1. Bash in Optware deinstallieren (verschiedene Pakete benötigen jedoch die Bash in Optware und funktionieren nicht mehr)

    Code
    ipkg remove bash


    2. Wer die Firmware schon aktualisiert hat, kann die dort vorhandene Bash nach Optware verlinken

    Code
    [ -x /opt/bin/bash ] && rm /opt/bin/bash ; ln -sf /bin/sh /opt/bin/bash


    3. Die interessanteste Variante ist, Bash aus dem Upstream selbst zu kompilieren. Das hat den Vorteil, dass man die aktuellste Version mit allen Patches zur Verfügung hat.


    Folgende Anleitung ist nun für alle die sich zutrauen, die Upstream-Version der Bash für Optware selbst zu kompilieren. Hierzu verwende ich im Beispiel die Version 4.3 Patchlevel 30:


    Als Grundlage wird optware-devel benötigt. Dieses Meta-Paket enthält alles was zum Kompilieren auf dem NAS benötigt wird.

    Code
    ipkg updateipkg install optware-devel


    Zur Vereinfachung verwende ich als Arbeitsverzeichnis /mnt/HDA_ROOT/update, da dies auf allen NAS vorhanden sein sollte.

    Code
    cd /mnt/HDA_ROOT/updatemkdir -p tmp/bash/patchescd tmp/bash/patcheswget -r -l1 -nd -np -A 'bash43-0??' http://ftp.gnu.org/gnu/bash/bash-4.3-patches/cd ..wget  http://ftp.gnu.org/gnu/bash/bash-4.3.tar.gztar xzf bash-4.3.tar.gzcd bash-4.3for patch in 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 ; do patch -p 0 < ../patches/bash43-$patch; done./configure --prefix=/opt --without-bash-malloc -with-curses --enable-readline --enable-history --enable-bang-historymakemake DESTDIR="/" install-stripcd /mnt/HDA_ROOT/updaterm -rf tmp


    Voila - wir haben nun eine aktuelle Bash in /opt/bin (hier als Beispiel auf einer TS-412)


    Edit:
    03.11.2014 - Anleitung zum Kompilieren auf Patchlevel 30 aktualisiert / zugehörigen Test mit aktuellem bashcheck aktualisiert

  • Merci für diese Inputs.


    Da würde ich dann aber schon auch noch ein

    Code
    rm  /bin/sh
    ln -s /opt/bin/bash /bin/sh


    hinterher werfen (respektive in einem Startscript unterbringen, weil das sonst beim neu booten wieder überschrieben wird), wenn man sich schon die Mühe macht mit dem compilieren. Eh etwas unglücklich, wenn Programme mehrmals auf der Festplatte liegen (mit Ausnahme von allenfalls nötigen Versionsunterschieden), denn man ist gezwungen, alle im Auge zu behalten. Das Konzept der Verlinkung ist ja auch nicht zuletzt deswegen erfunden worden.


    Grüsse


    Fe-X

  • Nun und genau das würde ich eher nicht machen. Es sei denn, du hast nichts gegen rund um die Uhr laufende Platten. ;)
    Abgesehen davon weiss man nicht, warum QNAP diese Version nicht nimmt und wundert sich plötzlich über Fehlfunktionen.

  • Großen Dank von mir an dr_mike für die Hinweise. :thumb:


    Bei mir versorgt ein 'ipkg upgrade' die Optware inzischen mit einer 'GNU bash, version 3.2.54(1)-release'.


    Der genannte Test ergibt dann


    ..........auf einem TS-859:
    GNU bash, version 3.2.54(1)-release (i686-unknown-linux-gnu)
    Not vulnerable to CVE-2014-6271 (original shellshock)
    Not vulnerable to CVE-2014-7169 (taviso bug)

    Vulnerable to CVE-2014-7186 (redir_stack bug)
    Test for CVE-2014-7187 not reliable without address sanitizer
    Vulnerable to CVE-2014-6277 (lcamtuf bug #1) [no patch]
    Not vulnerable to CVE-2014-6278 (lcamtuf bug #2)
    Variable function parser inactive, likely safe from unknown parser bugs


    ..........und auf einem TS-219P II:
    GNU bash, version 3.2.54(1)-release (arm-none-linux-gnueabi)
    Not vulnerable to CVE-2014-6271 (original shellshock)
    Not vulnerable to CVE-2014-7169 (taviso bug)

    Segmentation fault
    Vulnerable to CVE-2014-7186 (redir_stack bug)
    Test for CVE-2014-7187 not reliable without address sanitizer
    Segmentation fault
    Vulnerable to CVE-2014-6277 (lcamtuf bug #1) [no patch]
    Not vulnerable to CVE-2014-6278 (lcamtuf bug #2)
    Variable function parser inactive, likely safe from unknown parser bugs

    .
    An die 'selbscompilierte' Lösung hab ich mich noch herangetraut.

  • Zitat von "dr_mike"

    Nun und genau das würde ich eher nicht machen. Es sei denn, du hast nichts gegen rund um die Uhr laufende Platten.


    Das erschliesst sich mir grad nicht auf Anhieb. Kannst du mir sagen, weshalb du diesen Nebeneffekt befürchtest? Den Rest habe ich verstanden und ich war mir stets im Klaren über die dadurch möglichen Konsequenzen (und werde berichten, falls mir welche begegnen).
    Danke.


    Fe-X

  • Weil die meisten Systemprogramme (angesehen von mySQL, Apache, SAMBA, usw.) in der RAM-Disk abgelegt sind,
    das Optware mit dem Bash dagegen auf der Festplatte installiert ist.

  • Jetzt mal ne gaant blöde Frage...


    Reicht es nicht aus das bereits installierte Optware IPKG zu deinstallieren?


    Ich weiss garnicht mehr warum ich das installiert hab, ich glaube damit Twonky installiert werden kann oder war es doch Transmission? Oder laufen die Programme nach Deinstallation nicht mehr?

  • Es gibt eine aktualisierte Version des bashchek (https://github.com/hannob/bashcheck) vom 06.10.2014.
    Das ergibt dann für die aktuelle Optware-bash (3.2.54(1)-release):


    ..........auf einem TS-859 mit Firmware 4.1.1 b1003 (LINUX 3.4.6 #1 x86_64) (nachgetragen: 08.10.2014 07:58:(
    Testing /opt/bin/bash ...
    GNU bash, version 3.2.54(1)-release (i686-unknown-linux-gnu)

    Variable function parser pre/suffixed [%%, upstream], bugs not exploitable
    Not vulnerable to CVE-2014-6271 (original shellshock)
    Not vulnerable to CVE-2014-7169 (taviso bug)

    Found non-exploitable CVE-2014-7186 (redir_stack bug)
    Test for CVE-2014-7187 not reliable without address sanitizer
    Found non-exploitable CVE-2014-6277 (lcamtuf bug #1)
    Not vulnerable to CVE-2014-6278 (lcamtuf bug #2)


    ..........und auf einem TS-219P II mit Firmware 4.1.1 b1003 (LINUX 3.4.6 #1 armv5tel):
    Testing /opt/bin/bash ...
    GNU bash, version 3.2.54(1)-release (arm-none-linux-gnueabi)

    Variable function parser pre/suffixed [%%, upstream], bugs not exploitable
    Not vulnerable to CVE-2014-6271 (original shellshock)
    Not vulnerable to CVE-2014-7169 (taviso bug)

    Segmentation fault
    Found non-exploitable CVE-2014-7186 (redir_stack bug)
    Test for CVE-2014-7187 not reliable without address sanitizer
    Segmentation fault
    Found non-exploitable CVE-2014-6277 (lcamtuf bug #1)
    Not vulnerable to CVE-2014-6278 (lcamtuf bug #2).
    ;)

  • Hallo ,


    danke für die Anleitung :thumb:


    Ich habe eine SS-439 auf der die Firmware 4??? lief dann hatte ich auf die letzte Firmware aktuallisiert doch da ging bei mir alles in Zeitlupe auf der Web GUI.
    Jetzt habe ich die 3.8.4 + ShellshockFix_1.0.2_20141008_all und habe vorsichtshalber noch den Bash nach deiner Anleitung Nr 3. aktualisiert.


    Folgender Hinweis:


    nach ./configure........ bekam ich folgenden Fehler angezeigt "awk: ./conf4H9RC4/subs.awk:2: Unexpected token" habe dann mal bißchen gegooglet ;)


    nach einem

    Code
    ipkg install automake
    export PATH=/opt/bin:$PATH


    und erneute Eingaeb von ./configure.... hat dann alles geklappt, wobei ich denke das die zweite Zeile ausschlaggebend war.


    Gruß an Alle

  • Ich stolpere gerade über diesen Artikel und jetzt wo die Optware nicht mehr ofiziell von Qnap unterstützt wird, habe ich mal auf das Paket geschaut, welches ich für rsnap und den Midnight Commander installiere. Ich hatte mir das File hier im Forum heruntergeladen:


    Optware 0.99.163 , Dateidatum 16.06.2014


    Offensichtlich nicht die aktuellste Version und mit Shellschock Bash?


    Viele Grüße


    Dirk

  • Zitat von "phoneo"

    Optware 0.99.163 , Dateidatum 16.06.2014


    Offensichtlich nicht die aktuellste Version und mit Shellschock Bash?

    Die Optware-Versionierung betrifft nur das Installationspaket. Die tatsächlich installierten Systemdateien von Optware werden aus den Repos installiert. Die bash sollte dort gefixt sein. Allerdings gibt es sehr viele weitere Tools/IPKG's, welche auch Sicherheitslücken enthalten können, da diese nicht aktualisiert wurden/werden.

  • Danke für die schnelle Antwort, Michael.
    Als interessierter Laie möchte ich die von dir angedeuteten möglichen (zukünftigen) Sicherheitslücken besser einschätzen können. Etwaige IPkGs/Tools aus dem Opware-Paket die fehlerhaft sind müssten aber installiert sein, um zu einer Sicherheitslücke führen zu können? Oder reicht bereits die bloße Installation der Optware als Risikofakor?

  • Zitat von "phoneo"

    Etwaige IPkGs/Tools aus dem Opware-Paket die fehlerhaft sind müssten aber installiert sein, um zu einer Sicherheitslücke führen zu können?

    So ist es.
    Allerdings werden ja bei der Installation von Optware auch schon einige sehr veraltete Grundpakete installiert. Inwieweit diese Sicherheitslücken aufweisen müsste man im Einzelnen prüfen.

  • Das "Beobachten" in Bezug auf mögliche oder zukünftige Sicherheitslücken scheint damit unübersichtlich zu sein. Für den normalen Unser praktisch nicht möglich. Gut zu wissen, danke dir.

  • Nun, dann widme ich diesem Thema mal meinen 5000sten Beitrag hier im Forum. :mrgreen:


    Zitat von "phoneo"

    Für den normalen Unser praktisch nicht möglich. Gut zu wissen, danke dir.

    Aus genau diesem Grund hat QNAP die Optware aus dem App-Center verbannt.
    Bitteschön!