Jak naprawić lukę w zabezpieczeniach Shellshock podczas testowania Debiana / Jessie?

24

Polecenie testowe

x='() { :;}; echo vulnerable' bash

pokazuje, że moja instalacja Debian 8 (Jessie) jest podatna na atak, nawet przy najnowszych aktualizacjach. Badania pokazują, że istnieje łatka na stabilne i niestabilne, ale testowanie jest niedopasowane.

Wydaje mi się, że łatka przejdzie do testowania za kilka dni, ale w rzeczywistości wygląda to wystarczająco paskudnie, żeby być paranoikiem. Czy jest jakiś sposób, aby uzyskać pakiet z niestabilności i zainstalować go bez uszkodzenia systemu? Aktualizacja do niestabilnej wygląda na to, że spowoduje więcej problemów niż rozwiązuje.


Według Boba istnieje druga luka w Shellshock, która została naprawiona w drugiej łatce. Testem powinno być:

 env X='() { (a)=>\' bash -c "echo echo vuln"; [[ "$(cat echo)" == "vuln" ]] && echo "still vulnerable :("

Ale nie mam wystarczających umiejętności w Bash, aby zrozumieć, co to oznacza lub dlaczego jest to problem. W każdym razie robi coś dziwnego, czemu zapobiega bash_4.3-9.2_amd64.deb w systemach 64-bitowych, które w czasie edycji są stabilne i niestabilne, ale nie w Jessie / testowaniu.

Aby to naprawić dla Jessie , pobierz najnowszą wersję Bash ze strony niestabilnej i zainstaluj ją dpkg -i.

Oferty Jemenake

wget http://ftp.debian.org/debian/pool/main/b/bash/bash_4.3-9.2_$(dpkg --print-architecture).deb

jako polecenie, które otrzyma wersję 4.3-9.2 dla twojego komputera.

I możesz to śledzić za pomocą:

sudo dpkg -i bash_4.3-9.2_$(dpkg --print-architecture).deb

zainstalować.

Jeśli potrzebujesz dodatkowych łatek z niestabilnej dla swojego systemu Jessie , jest to zdecydowanie właściwa droga ( mutatis mutandis ).

John Lawrence Aspden
źródło

Odpowiedzi:

5

Pobierz pakiet z niestabilnej za pomocą tego linku . Możesz również sprawdzić zależności tam, chociaż wygląda na to, że niestabilne bash ma te same zależności, co bash z testowania. Zainstaluj pobrany deb z następującymi elementami.

dpkg -i
wurtel
źródło
1
Dzięki, zrobiłem to i naprawiłem problem bez zauważalnego niszczenia czegokolwiek. Przypuszczalnie zostanie nadpisany w normalnym toku aktualizacji?
John Lawrence Aspden,
3
Powyższy link jest w porządku, jeśli używasz przeglądarki z graficznym interfejsem użytkownika. Mniej, jeśli uruchamiasz rysia w sesji powłoki. Jeśli chcesz coś, co możesz wkleić bezpośrednio do wiersza polecenia, aby go pobrać, spróbuj: wget http://ftp.debian.org/debian/pool/main/b/bash/bash_4.3-9.1_$(dpkg --print-architecture).deb Otrzyma odpowiednią architekturę dla twojego pudełka.
Jemenake,
1
@Jemenake Powinieneś opublikować to jako osobną odpowiedź.
Excellll,
To była zdecydowanie odpowiedź, której chciałem, ale teraz, gdy aktualizacja dotarła do Jessie, myślę, że lepiej, aby zaakceptowana odpowiedź była tą, której ludzie teraz szukają, więc przesuwam tyknięcie. W każdym razie dzięki!
John Lawrence Aspden,
W rzeczywistości istnieją dwa błędy shellshock, a poprawka dla drugiego jest teraz w sid, ale nie w jessie, więc w rzeczywistości jest to nadal właściwa odpowiedź (upewnij się, że dostałeś 4.3-9.2!), Chociaż niewątpliwie sytuacja zostanie rozwiązana wkrótce.
John Lawrence Aspden,
25

Zredagowałem tę odpowiedź dla dodatkowych poprawek bash, które zostały wydane w poniedziałek.

W przypadku Ubuntu 12.04 uruchomiłem aktualizację, ale musiałem również uruchomić instalację bash, aby pozbyć się luki.

root@host:/home/ubuntu# env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
vulnerable
this is a test

To polecenie pokazuje, że system jest podatny na zagrożenia, więc uruchom aktualizację.

apt-get update && apt-get -y upgrade

Przetestuj ponownie.

root@host:/home/ubuntu# env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
vulnerable
this is a test

Nadal wrażliwy.

apt-get install -y bash

Przetestuj ponownie.

root@host:/home/ubuntu# env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
this is a test

Edycja: Po wydaniu dodatkowych poprawek dane wyjściowe uległy zmianie.

root@host:/home/ubuntu# env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
this is a test

Tak! Naprawiony. Powinno to działać w przypadku innych wersji, ale nie testowałem go po 12.04.

Również poniższa odpowiedź runamoka działa dobrze, więc daj mu głos!

Tom Damon
źródło
6
Po prostu apt-get update && apt-get install -y bashwydaje się działać.
runamok
Na podstawie odpowiedzi @JabawokJayUK nadal nie udaje mi się pierwszy test po aktualizacji bash w Ubuntu 12.04.
Birla
Dostaję this is a testtylko błąd, ale nie ostrzeżenie. Na mojej lokalnej maszynie pojawia się błąd, ale na moim serwerze nie. Co to mierzy? Czy mój serwer jest załatany? Dziękuję Ci.
ElBaulP
Wygląda na to, że repozytorium jest aktualne, ponieważ nie musiałem wykonywać kroku instalacji apt-get, problem został rozwiązany po aktualizacji.
user316566,
1
To naprawdę nie odpowiada na pytanie dotyczące testowania Debiana / jessie. Ubuntu to inna dystrybucja z niezależnymi repozytoriami pakietów i harmonogramami łatania.
Bob
16

Alternatywa dla Debian 6.0 (Squeeze) bez pobierania pakietów z Debian 7 (Wheezy):

Skorzystaj z repozytorium zabezpieczeń LTS, w którym poprawka została zportowana.

Dodaj to do /etc/apt/sources.list:

#LTS security
deb http://http.debian.net/debian/ squeeze-lts main contrib non-free
deb-src http://http.debian.net/debian/ squeeze-lts main contrib non-free

Potem biegnij apt-get update && apt-get install bash.

Via: linuxquestions

poncha
źródło
Działa z Debianem 6. Zawsze utrzymujemy bezpieczeństwo LTC na liście!
stanleyxu2005
4

apt-get updatewcześniej, apt-get dist-upgradea dostaniesz łatkę. Zrobiłem to sam i wprowadzono aktualizację bash, która rozwiązuje problem.

MGD_Toronto
źródło
2
Problem polegał na tym, że testy Debiana nie miały jeszcze zaktualizowanego pakietu, więc pobranie go ręcznie z niestabilnego i zainstalowanie tego było najprostszą poprawką w tym czasie; rozwiązanie podane w tej odpowiedzi nie zadziałałoby. (Być może już tak będzie, ponieważ pakiet mógł zostać przeniesiony do testowania.)
wurtel
To nie odpowiada na pierwotne pytanie, ale to, co ludzie muszą teraz zrobić, więc akceptuję to, aby ludzie mogli to zobaczyć. „Prawdziwa” odpowiedź na mój trudność (jest niestabilna i stabilna, ale nie w testowaniu) to odpowiedź Wurtla, polegająca na ręcznym pobraniu nowego basha - ????. Deb i dpkg -i.
John Lawrence Aspden,
Myślę również, że jest to odpowiedź dla Ubuntu, teraz, gdy poprawnie wypchnęli swoją poprawkę i prawdopodobnie dla każdej innej dystrybucji opartej na Debianie, która jest nadal utrzymywana do tego stopnia, że ​​ludzie pchnęli poprawki.
John Lawrence Aspden,
Właściwie są dwa błędy w shellshocku, a poprawka do drugiego nie dotarła jeszcze do Jessie.
John Lawrence Aspden,
Jest to nadal prawidłowe rozwiązanie i pozostanie tak długo, jak długo zespół ds. Bezpieczeństwa Debiana testuje aktualizacje; mogli nie mieć go w testach w momencie pytania OP. Inną opcją jest ustawienie wszystkich użytkowników do używania Dash. Jest to głównie problem z serwerem, a nie
MGD_Toronto
3

Naprawiłem to na moim Hackintoshu poprzez:

$ brew install bash

$ x='() { :;}; echo vulnerable' bash
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
bash-4.3$ 
Marcos Maciel
źródło
2
nie zapomnij zainstalować naparu przed ...
Marcos Maciel
1

Napisałem artykuł o tym, jak to zrobić za pomocą apt-get na starych wersjach Ubuntu. Zasadniczo aktualizujesz swój source.list do najnowszego, a następnie uruchamiasz apt-get update i upgrade bash. Możesz przeczytać krok po kroku lub skopiować tutaj .

Podsumowanie:

sudo sed -i 's/YOUR_OS_CODENAME/trusty/g' /etc/apt/sources.list
sudo apt-get update
sudo apt-get install --only-upgrade bash

Przeczytaj artykuł, jeśli korzystasz ze old-releases.ubuntu.com i nie zapomnij, że możesz chcieć go zmienić:

sudo sed -i 's/trusty/YOUR_OS_CODENAME/g' /etc/apt/sources.list
Erik Duindam
źródło
uh… opuści to twój system z Trusty na sources.list. przy następnej aktualizacji system zaktualizuje się do wersji Trusty. to KORZYSTNIE uszkodzi twój system.
strugee
1

Naprawiona wersja (patrz dziennik zmian ) pakietu Bash znajduje się teraz w Debianie 8 (Jessie) (zobacz informacje o pakiecie ), na dzień 26.09.2014 14:18 UTC.

Druga poprawka, wspomniana w komentarzach poniżej, znajduje się teraz również w repozytorium Jessie . Nie ma potrzeby instalacji z niestabilnej. Zobacz link do informacji o pakiecie powyżej.

Nie ma już potrzeby instalacji z niestabilnej.

Po prostu biegnij:

# aptitude update

śledzony przez:

# aptitude upgrade

Następnie sprawdź, czy luka zniknęła (w nowo otwartej powłoce):

$ x='() { :;}; echo vulnerable' bash
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
dubadu
źródło
Nie naprawia jeszcze następnej wersji CVE-2014-7169.
Bob
@ Bob, myślę, że dotyczy to tylko Ubuntu? I prawdopodobnie Ubuntu już to naprawił.
John Lawrence Aspden,
@JohnLawrenceAspden Nope. Spróbuj uruchomić env X='() { (a)=>\' bash -c "echo echo vuln"; [[ "$(cat echo)" == "vuln" ]] && echo "still vulnerable :("- jeśli drukuje still vulnerable, to ta ostatnia nie jest jeszcze załatana. AFAIK, jessie jest nadal podatna na ataki. Zauważ, że to polecenie utworzy plik o nazwie echow bieżącym katalogu, jeśli się powiedzie, i musisz go usunąć przed ponownym uruchomieniem testu.
Bob
@ Bob, nie mogę zrobić z tego głowy ani ogona, co to takiego robi średnik?
John Lawrence Aspden,
@ Bob, ale cokolwiek to robi, masz rację, że aktualizacja do wersji 4.3-9.2 w wersji niestabilnej to zatrzymuje!
John Lawrence Aspden,