Jak mogę się upewnić, że moja instalacja Bash nie jest już podatna na błąd ShellShock po aktualizacji?
Jak mogę się upewnić, że moja instalacja Bash nie jest już podatna na błąd ShellShock po aktualizacji?
Odpowiedzi:
Aby sprawdzić lukę w zabezpieczeniach CVE-2014-6271
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
NIE powinno to odzwierciedlać wrażliwego słowa.
/tmp/echo
, który można usunąć później i trzeba go usunąć przed ponownym testowaniem)
cd /tmp; env X='() { (a)=>\' bash -c "echo date"; cat echo
powinna zawierać słowo „data”, a następnie narzekać na wiadomość typu „jak” cat: echo: No such file or directory
. Jeśli zamiast tego powie Ci, jaka jest aktualna godzina, oznacza to, że twój system jest podatny na ataki.
bash -c 'true <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF' || echo "CVE-2014-7186 vulnerable, redir_stack"
NIE powinno to odzwierciedlać tekstu CVE-2014-7186 vulnerable, redir_stack
.
(for x in {1..200} ; do echo "for x$x in ; do :"; done; for x in {1..200} ; do echo done ; done) | bash || echo "CVE-2014-7187 vulnerable, word_lineno"
NIE powinno to odzwierciedlać tekstu CVE-2014-7187 vulnerable, word_lineno
.
env HTTP_COOKIE="() { x() { _; }; x() { _; } <<`perl -e '{print "A"x1000}'`; }" bash -c "echo testing CVE-2014-6277"
Wynik pozytywny w tym przypadku polega tylko na odbiciu tekstu testing CVE-2014-6277
. Jeśli uruchamia się w Perlu lub jeśli skarży się, że Perl nie jest zainstalowany, to z pewnością jest to błąd. Nie jestem pewien co do innych cech awarii, ponieważ nie mam już niezałatowanych systemów.
env HTTP_COOKIE='() { _; } >_[$($())] { echo hi mom; id; }' bash -c "echo testing CVE-2014-6278"
Zaletą tego testu jest to, że powinien on WYŁĄCZNIE odzwierciedlać tekst testing CVE-2014-6278
. Jeśli twoje echo wróci hi mom
gdziekolwiek, to zdecydowanie porażka.
foo='() { echo not patched; }' bash -c foo
? Dopóki eksport funkcji nie zostanie umieszczony w osobnej przestrzeni nazw, nie przestaniemy działać od jednego błędu parsera do następnego.
Wyeksportuj specjalnie spreparowaną zmienną środowiskową, która zostanie automatycznie oceniona przez wrażliwe wersje Bash:
$ export testbug='() { :;}; echo VULNERABLE'
Teraz wykonaj proste echo, aby sprawdzić, czy Bash oceni kod w $ testbug, nawet jeśli sam nie użyłeś tej zmiennej:
$ bash -c "echo Hello"
VULNERABLE
Hello
Jeśli pokazuje ciąg „VULNERABLE”, odpowiedź jest oczywista. W przeciwnym razie nie musisz się martwić, a łatana wersja Bash jest w porządku.
Uwaga: główne dystrybucje Linuksa wydały wiele poprawek, a czasem nie usuwają całkowicie tej luki. Sprawdzaj ostrzeżenia dotyczące bezpieczeństwa i wpis CVE dotyczący tego błędu.
export
):env testbug='() { :;}; echo VULNERABLE' bash -c "echo Hello"
ShellShock jest praktycznie połączeniem więcej niż jednej luki w bash , aw tej chwili istnieje również złośliwe oprogramowanie, które wykorzystuje tę lukę , więc ShellShock może być problemem, który jest nadal otwarty, jest wątek z aktualizacjami od RedHat na ten temat .
Redhat zaleca następujące czynności:
Uruchom polecenie:
$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
Jeśli dane wyjściowe to:
$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
vulnerable
bash: BASH_FUNC_x(): line 0: syntax error near unexpected token `)'
bash: BASH_FUNC_x(): line 0: `BASH_FUNC_x() () { :;}; echo vulnerable'
bash: error importing function definition for `BASH_FUNC_x'
test
nie masz żadnej poprawki.
Jeśli dane wyjściowe to:
$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
bash: error importing function definition for `BASH_FUNC_x()'
test
masz CVE-2014-6271
naprawę
Jeśli twój wynik to:
$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `BASH_FUNC_x'
test
nie jesteś wrażliwy.
Drugą częścią testu ShellShock jest kontrola podatności CVE-2014-7169, która zapewnia ochronę systemu przed problemem związanym z tworzeniem plików. Aby sprawdzić, czy twoja wersja Bash jest podatna na CVE-2014-7169, uruchom następującą komendę:
$ cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo
bash: x: line 1: syntax error near unexpected token `='
bash: x: line 1: `'
bash: error importing function definition for `x'
Fri Sep 26 11:49:58 GMT 2014
Jeśli twój system jest podatny na zagrożenia, wyświetli się data i godzina i zostanie utworzony / tmp / echo.
Jeśli twój system nie jest wrażliwy, zobaczysz dane wyjściowe podobne do:
$ cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo
date
cat: /tmp/echo: No such file or directory
Napisałem narzędzie CLI o nazwie ShellShocker, aby przetestować twój serwer pod kątem luk w skryptach CGI. Aby przetestować swoją witrynę, uruchom:
python shellshocker.py <your-server-address>/<cgi-script-path>
to znaczy
python shellshocker.py http://example.com/cgi-bin/possibly-vulnerable-script.cgi
EDYCJA: narzędzie zostało usunięte, przepraszam: „(
Możesz przesłać swój adres URL CGI do tego testu online:
wpisz env x = '() {:;}; echo wrażliwy „bash -c” echo to jest test ”, a jeśli to zwróci podatność i jest to test, oznacza to, że ma to wpływ na komputer z systemem OSX / Linux. Rozwiązaniem jest aktualizacja do najnowszej wersji bash.