Shellshock, tuntud ka kui Bashdoor, on UNIX-i käsureaprotsessori Bash-i turvaauk, mille avastas Stéphane Chazelas. Turvaauk võimaldab meelevaldse koodi täitmist ning seeläbi on ründajal võimalik saada täielik kontroll haavatava arvuti üle. Turvaaugu ekspluateerimiseks pole ründajal vaja mingeid arvestatavaid eelteadmiseid ega oskuseid. Seetõttu suutsid ründajad vaid tunde pärast turvaaugu avaldamist seda ekspluateerida luues robotvõrke(Ingl k. botnet), mis koosnesid haavatavatest arvutitest ning teostasid teenusetõkestamise ründeid või skaneerisid teisi haavatavaid masinaid.[1][2]
Laiemale avalikkusele tehti turvaauk teatavaks 24. septembril 2014 ning koos sellega tehti kättesaadavaks ka paik(Ingl k. patch). Levinud turvariskide ja haavatavuste nimekirjas viitab esimesena antud turvaaugule identifikaator CVE-2014-6271 ja lisaks teised hiljem avastatud turvaaugud CVE-2014-6277, CVE-2014-6278, CVE-2014-7169, CVE-2014-7186, CVE-2014-7187.[3]
Käesolev programmiviga põhjustab Bash-i tahtmatult käivitama käske, kui käsud on aheldatud funktsiooni definitsioonide lõppu, mis asuvad keskkonnamuutujate välja sisus. Näiteks järgneva käsu näitel:
$ env variable=’() { :; }; /bin/eject’
Annab ”env” märku, et tegemist on keskkonnamuutujaga ning funktsiooni definitsioonile järgnev käsk “/bin/eject”, mis antud juhul on lihtne käsk avada CD või DVD lugeja, täidetakse. Täidetava käsu saab ründaja asendada muidugi talle meelepärasega.
Suureks ohuks on antud turvaauk veebiserveritele, mis kasutavad Bash-i, sest lisaks andmetele on ründajal võimalik saada kontroll ka veebiserveri enda üle, mis omakorda võimaldab ründajal teoreetiliselt võtta oma kontrolli alla antud võrguga ühendatud arvutid. Valdav enamus tuvastatud rünnakutest kasutas [üldist lüüsliidest], mis määrab ära selle, kuidas veebiserver edastab kasutaja nõude antud veebiserveris jooksvale programmile töötlemiseks ning võtab vastu töötlemistulemuse, mis saadetakse tagasi kasutajale.[4][2]
Kõigil Bash-i kasutavatel masinatel saab diagnoosida turvaaugu suhtes haavatavust järgmise käsuga:[5]
export VULNCHECK='() { :; }; echo You are still vulnerable'; bash
Kui antud masin on haavatav kuvatakase järgnev sõnum:
"You are still vulnerable"
Süsteem, milles kasutatav Bash-i versioon sisaldab paika antud turvaaugu vastu, kuvab järgmised kaks veateadet:
bash: warning: VULNCHECK: ignoring function defintion attempt
bash: error importing function definition for `VULNCHECK
Haavatavuse peamiseks põhjuseks on Bash-i vigane sõne “() { :; };” interpreteerimine. Turvaaugu parandamiseks loodi Bash-i lähtekooodi kaks uut lippu SEVAL_FUNCDEF ja SEVAL_ONECMD, millest esimese ülesandeks on lubada ainult funktsiooni definitsiooni ja teisel ainult ühte käsku. Seejärel lisati olemasolevale meetodile parse_and_execute võime kontrollida antud lippe.[6]
Süsteemi haavatavuse korral antud turvaaugu poolt tuleks uuendada Bash-i (versioon 4.4 või uuem), et tagada süsteemi turvalisus.[7]