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 ).

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

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!


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


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.


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$ 

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

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'

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,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.