Czy błąd Shellshock Bash wpływa na ZSH?
Czy aktualizacja Bash jest jedynym rozwiązaniem?
bash
zsh
shellshock
marflar
źródło
źródło
Odpowiedzi:
Nie, to nie wpływa na ZSH.
Nadal MUSISZ zaktualizować bash, ponieważ większość skryptów systemowych jest napisanych dla bash i jest podatna na błąd shellshock.
Aby przetestować ZSH, wykonaj następujące czynności:
Co dokładnie robi ten kod?
env x='() { :;}; echo vulnerable'
tworzy zmienną środowiskową ze znanym błędem za pomocą polecenia na końcu zmiennejzsh -c 'echo hello'
uruchamia powłokę ZSH z prostym przywitaniem (i analizuje wszystkie zmienne env, w tym x )Jeśli zobaczysz wynik:
Wtedy twój ZSH jest podatny na ataki. Mój (5.0.2) nie jest:
źródło
bash
jest złym nawykiem dla narzędzi systemowych, ponieważ nie można zagwarantować, że bash zostanie zainstalowany;/bin/sh
jest standardową powłoką i musi być poprawnym interpretatorem powłoki POSIX.env x='() { :;}; echo vulnerable' sh -c 'echo hello'
Z tego linku :
Możesz ustalić, czy jesteś podatny na pierwotny problem w CVE-2014-6271, wykonując ten test:
Jeśli zobaczysz słowo wrażliwe na wyjściu tego polecenia, twój bash jest wrażliwy i powinieneś zaktualizować. Poniżej znajduje się podatna na atak wersja systemu OS X 10.8.5:
Poniższe dane wyjściowe to przykład niezabezpieczonej wersji bash.
źródło
env X='() { (a)=>\' bash -c "echo date"
po załataniu bashu i pomimo rzucenia wielu błędów, utworzy plik o nazwieecho
zawierającej datę. Nie chcę wiedzieć dlaczego.zsh
ma nie wykorzystywaćbash
w swej istocie.bash
jest wyraźnie wywołany w twoich przykładach. Nie ma znaczenia, jakiej powłoki używasz do uruchomienia tych linii. Luka ta dotyczy nowo uruchomionej powłoki bash, a nie powłoki, z której jest uruchamiana.bash
w przykładach chcielibyśmy zastąpić$SHELL
.Binarny nie ma wpływu
Nie wpływa to
zsh
na wykonywalność powłoki, ponieważ jej kod źródłowy nigdy nie zawierał błędu.Istnieje wiele podobieństw między
bash
izsh
, ale zostały one wdrożone niezależnie od siebie. Ta sama funkcja jest realizowana na dwa różne sposoby i - co ważniejsze w tym kontekście - zwykle z różnymi błędami.Ale interaktywne zastosowanie jest
Pośrednio wpływa to na interaktywną pracę z
zsh
powłoką w terminalu prawie tak samo, jak z nią współpracujebash
.Używanie
bash
jest tak powszechne, że trudno jest go nie nazwać.Zbyt wiele zastosowań, aby uniknąć
zsh
, ale faktycznie zawierająbash
.#!/bin/bash
określająbash
jako interpreter.wiele poleceń, które zakładasz, to pliki binarne, ale skrypty powłoki, niektóre z nich używają
bash
.w wielu miejscach, w których powłoka jest wykonywana jawnie,
bash
mogą być używane i ewentualnie wymagane.xargs
komendy lubgit
aliasy zawierające argumentyźródło
Nie, Shellshock nie wpływa bezpośrednio na zsh.
Jednak w wielu środowiskach, które używają zsh jako domyślnej powłoki, zainstalowano również bash. Każda powłoka, w tym zsh, może zostać użyta do odrodzenia skompromitowanej powłoki bash:
Aby się przed tym bronić, należy załatać, odinstalować lub wyłączyć wszelkie zbędne wersje bash. Możesz wyłączyć instalację bash systemu za pomocą
chmod
:Jednak skrypty często wywołują bash. Skrypty, które to robią, i te, które używają funkcji skryptowych specyficznych dla bash, przestaną działać, jeśli bash nie jest dostępny. Patchowanie jest najlepszym rozwiązaniem.
źródło
importing function definition
”? Testowałem również z iniekcją serwera ssh:ssh testuser@localhost '() { :;}; echo "$SHELL"'
gdzie ustawiłemtestuser
powłokę logowania na/bin/zsh
, i echo/bin/zsh