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: usterka 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 wykorzystywany na wolności, aw ciągu jednego dnia pojawiły się już botnety oparte na exploitie wykorzystywanym do przeprowadzania ataków DDOS i skanowania podatności. 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. Ponownie łatki zostały szybko opracowane i wydane, ale pomimo aktywnego wykorzystania, aktualizacje nadal niekoniecznie były stosowane natychmiast lub nawet natychmiast dostępne we wszystkich przypadkach, co prowadziło do większej liczby skompromitowanych maszyn.
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żliwiał 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.