Co to jest luka w zabezpieczeniach Shellshock?

Shellshock to zbiorowa nazwa serii problemów z bezpieczeństwem Linuksa w powłoce bash. Bash jest domyślnym terminalem w wielu dystrybucjach Linuksa, co oznaczało, że skutki błędów były szczególnie rozpowszechnione.

Uwaga: Luka nie dotyczy systemów Windows, ponieważ system Windows nie korzysta z powłoki Bash.

We wrześniu 2014 r. Stéphane Chazelas, badacz bezpieczeństwa, odkrył pierwszy problem w Bashu i prywatnie zgłosił go osobie utrzymującej Basha. Współpracował z deweloperem odpowiedzialnym za utrzymanie Bash i opracowano łatkę, która rozwiązała problem. Gdy łatka została wydana i dostępna do pobrania, charakter błędu został upubliczniony pod koniec września.

W ciągu kilku godzin od ogłoszenia błędu był on eksploatowany na wolności iw ciągu jednego dnia istniały już botnety oparte na exploitie wykorzystywanym do przeprowadzania ataków DDOS i podatności skany. Mimo że łatka była już dostępna, ludzie nie byli w stanie wdrożyć jej wystarczająco szybko, aby uniknąć pośpiechu eksploatacji.

W ciągu następnych kilku dni zidentyfikowano pięć kolejnych powiązanych luk w zabezpieczeniach. Znowu łatki zostały szybko opracowane i wydane, ale pomimo aktywnej eksploatacji aktualizacje nadal nie zostały koniecznie zastosowane natychmiast lub nawet natychmiast dostępne we wszystkich przypadkach, co prowadzi do większego zagrożenia maszyny.

Luki pochodziły z różnych wektorów, w tym z nieprawidłowej obsługi wywołań systemowych serwera WWW opartego na CGI. Serwer OpenSSH umożliwił podniesienie uprawnień z powłoki ograniczonej do powłoki nieograniczonej. Złośliwe serwery DHCP były w stanie wykonać kod na podatnych klientach DHCP. Podczas przetwarzania wiadomości Qmail zezwalał na eksploatację. Ograniczona powłoka IBM HMC może zostać wykorzystana do uzyskania dostępu do pełnej powłoki bash.

Ze względu na rozpowszechniony charakter błędu, a także powagę luk i pośpiech w eksploatacji, Shellshock jest często porównywany do „Heartbleed”. Heartbleed to luka w zabezpieczeniach OpenSSL, która powodowała wyciek zawartości pamięci bez interakcji użytkownika.