Ostatnio pojawiły się informacje dotyczące „CVE-2014-6271” (patrz USN-2362-1 ), która jest podatnością na ataki w Bash. Skąd mam wiedzieć, czy mam na to wpływ, jak mogę to naprawić i dlaczego powinienem się tym przejmować?
Zostało to zaprojektowane jako kanoniczna odpowiedź na tę lukę, ze względu na jej zasięg i wagę.
bash
security
shellshock
ζ--
źródło
źródło
Odpowiedzi:
Co to jest Bash?
Bash jest domyślną powłoką interaktywną w Ubuntu. Kiedy łączysz się z terminalem (przez emulator terminala, przez tty lub ssh), zwykle wpisujesz polecenia, które
bash
będą czytać i wykonywać. Nawet jeśli w ogóle nie korzystasz z terminala, nadal masz Bash.Na Ubuntu
/bin/sh
nie jest bash (to dash). Ta luka dotyczy tylko bash.Jak exploit wpływa na mnie?
Bash i system operacyjny śledzą zestaw zmiennych środowiskowych, które opisują bieżącego zalogowanego użytkownika, gdzie szukać programów na dysku twardym i inne tego typu funkcje. Tworząc zmienną środowiskową o określonej strukturze, osoba atakująca może wykonać kod przy następnym uruchomieniu Bash.
Atakujący może ustawić tę zmienną środowiskową na wiele sposobów:
ForceCommand
opcji sshd jest wektorem ataku. Nie dotyczy to kont, których powłoka nie jest bash.Gdy ustawią tę zmienną, następnym razem
bash
otworzy się z dowolnego powodu, kod atakującego zostanie uruchomiony. Jest to szczególnie przerażającesudo -s
, ponieważ powoduje bash jako superużytkownik (reguła użytkownika administracyjnego, która ma pełną kontrolę nad danymi i programami twojego komputera). Nawet jeśli uruchomisz bash jako zwykły użytkownik, pliki tego użytkownika można usunąć.Ważne jest, aby pamiętać, że nawet jeśli sam nie używasz basha, wiele programów samo się odradza jako część ich działania. Nawet w tym przypadku jesteś wrażliwy. Jednak Ubuntu
/bin/sh
nie jest bash, więc dotyczy to tylko programów, które jawnie wywołują bash, a nie domyślnej powłoki skryptowej.Według Mitre:
Czy jestem wrażliwy?
Użyj dpkg, aby sprawdzić zainstalowaną wersję pakietu:
Spowoduje to wyszukanie informacji o
bash
pakiecie i przefiltrowanie danych wyjściowych, aby pokazać tylko wersję. Wersje są trwałe4.3-7ubuntu1.4
,4.2-2ubuntu2.5
i4.1-2ubuntu3.4
.Na przykład widzę:
i może stwierdzić, że nie jestem bezbronny.
Jak zaktualizować?
Standardowy menedżer aktualizacji zaoferuje tę aktualizację. Jest to doskonały przykład tego, jak ważne są aktualizacje zabezpieczeń, bez względu na to, jakiego systemu operacyjnego używasz i jak dobrze jest utrzymywane.
USN Biuletyn stwierdza, że nowe wersje zostały dopuszczone do Ubuntu 14.04 Trusty Tahr, 12.04 Precise Pangolin i 10.04 Lucid Lynx. Jeśli nie korzystasz z żadnej z tych wersji LTS, ale korzystasz z rozsądnie nowej wersji, najprawdopodobniej będziesz w stanie znaleźć załatany pakiet.
Najpierw sprawdź, czy ty
Jeśli jesteś wrażliwy, powinieneś najpierw pobrać najnowsze listy pakietów:
Pierwsze polecenie upewnia się, że masz najnowszą listę pakietów, która zawiera poprawioną wersję, a drugie polecenie instaluje najnowszą (stałą) wersję bash.
Chociaż wydaje się, że błąd pojawia się w grze dopiero po pojawieniu się basha, nadal dobrym pomysłem jest natychmiastowe ponowne uruchomienie komputera, jeśli jest to możliwe.
źródło
Ukradnij to od cft w Hacker News . Jeśli masz problemy ze swoimi repozytoriami, takimi jak ja (Odroid-XU), to powinno działać dobrze, jeśli chcesz łatać / kompilować ze źródła.
Następnie uruchomić:
A jeśli dostaniesz:
Więc wszyscy jesteście dobrzy!
UWAGA: make install zainstaluje bash
/usr/local/bin
, więc/bin/bash
nie jest modyfikowany i można go wywołać z curl !!źródło
Uwaga: Poprawka zabezpieczeń dla CVE-2014-7169 została wydana jako standardowa aktualizacja zabezpieczeń. Nie trzeba dodawać dodatkowych ppa, aby otrzymać tę łatkę. Potrzebne są tylko następujące elementy.
Aby upewnić się, że poprawiłeś bash poprawnie, uruchom następujące polecenie
Jeśli korzystasz z 14.04 LTS, powinieneś zobaczyć wynik:
Jeśli korzystasz z 12.04 LTS, twój wynik powinien wynosić:
źródło
Jeśli masz 11.04: użyj poniższych kroków (zadziałało to dla mnie)
jeśli nie zostanie pobrany wymagany patch, zainstaluj pakiet ftp
Aby sprawdzić, czy łatka została zastosowana:
źródło
Używam Natty 11.04, który jest EOL (i zaktualizowałem /etc/apt/sources.list, aby używać old-releases.ubuntu.com), więc muszę budować ze źródła. Chciałem zbudować .deb, więc przynajmniej zarządzanie pakietami jest „świadome”, że wersja bash nie jest domyślną wersją. Nie odnoszę 100% sukcesu - jednak pakiet jest zarejestrowany jako „nowszy”, a
bash
plik binarny został naprawiony, więc oto co zrobiłem:Teraz w (pod) katalogu
bash-4.2/
znajduje się: plikbash-4.2.tar.xz
, który należy rozpakować, aby dostać się dobash
źródła; oraz o nazwie podkatalogdebian
.Wprowadziłem następujące zmiany, aby uniknąć zależności
texlive
: wbash-4.2/debian/control
:... oraz w
bash-4.2/debian/rules
:Aby zmienić wersję, w tym
bash-4.2/
katalogu wykonaj:... i wypełnij notatki w dzienniku zmian, gdy zostaniesz o to poproszony. Zapewni to wywołanie .deb (i powiązane metadane) (w moim przypadku)
bash_4.2-0ubuntu3patchCVE1_i386.deb
.Następnie możesz spróbować budować za pomocą polecenia
dpkg-buildpackage -us -uc
lubdebuild
. Uwaga - którykolwiek z nich rozpakuje ponownie źródło z zip - zastępując w ten sposób wszelkie łatki, które mogłeś mieć! Mimo to uruchom jeden z nich, aby źródło zostało rozpakowane i zbudowane (uwagadebuild
może nadal nie działać z powodu texlive, ale powinna rozpakować i zbudować źródło).Następnie zastosuj łatki; uwaga, powinieneś użyć
-p1
tutaj, ponieważ obecnie znajdujesz się wbash-4.2/
katalogu:Następnie odbuduj łataną wersję, uruchamiając:
To odbuduje plik wykonywalny; aby to przetestować:
Aby skompilować pliki .deb, uruchom:
Spowoduje to zapisanie plików .deb w katalogu nadrzędnym; aby wyświetlić ich zawartość:
Aby zainstalować .deb:
Jednak z jakiegoś powodu ten plik .deb zawiera niepoprawiony plik binarny (?!), Więc musiałem dodatkowo wykonać:
... a potem test zaczął się dla mnie poprawnie:
źródło