petak, 24 maja, 2024
Internet, mreže i komunikacije

Shellshock

Autor: Petar Simović

Nije prošlo mnogo posle katastrofe zvane Heartbleed bug (OpenSSL ranjivosti), a evo nas opet: ostali smo zatečeni pred novom ranjivošću zvanom Shellshock i kodnim imenom CVE-2014-6271. Ovaj bag je zapravo ranjivost u Bash programu, koji svakodnevno koristimo direktno ili indirektno, a da toga nismo ni svesni.

Bash (Bourne-again shell) je standardni program otvorenog koda star preko dvadeset godina koji je podrazumevano instaliran uz većinu *nix operativnih sistema. On je command-line based program koji služi za izvršavanje komandi i skripata od strane korisnika ili programa upućenih operativnom sistemu, odnosno mašini koju korisnik upotrebljava. Problem se javlja u svim verzijama ovog programa do verzije 4.3. Možete proveriti svoju verziju sledećom komandom:

bash -version

Da li je vaš Bash ranjiv, možete proveriti pokretanjem sledeće komande, nakon čega bi trebalo da ispiše samo drugi komentar, tj. u našem primeru tekst Bash is not vulnerable.

env VAR='() { :;}; echo Bash is EXPLOITABLE!' bash -c "echo Bash is not vulnerable"

Ukoliko vam je Bash ranjiv, trebalo bi samo da ažurirate verziju komandom za debian korisnike:

sudo apt-get update && sudo apt-get install

ili ukoliko imate instaliran aptitude:

aptitude update; aptitude safe-upgrade -y; reboot

ili za Red-Hat korisnike:

sudo yum update bash

Kao što ste možda mogli da primetite iz test primera ranjivosti, problem je u tome što Bash dozvoljava u određenim situacijama izvršavanje prosleđene mu proizvoljne komande bez ikakvih provera. Naime, poznato je da se zahtevi koje veb serveri dobijaju, obrađuju lokalno na mašini na kojoj je server. U takvim slučajevima se obrada zahteva prepušta lokalnom CLI-u (eng. command-line interface) koji izvršava zahtev na mašini. U većini slučajeva podrazumevani cli je baš Bash. Specifično, Apache serveri koji imaju mod_cgi i mod_cgid module omogućene ili openSSH serveri koji imaju sshd omogućen, jesu ranjivi, a takođe i DHCP klijenti ukoliko su povezani sa zlonamernim DHCP serverom, zatim qmail serveri i IBM-ov restricted shell za koji je izbačen patch : http://goo.gl/AHS2gh, i mnogi drugi. Zanimljivo je recimo da su OpenVPN ( http://goo.gl/GbOzJ2 ) i VMWare ( http://goo.gl/U2w9p7 ) takođe ranjivi, a NGiNX serveri su ostali imuni i bezbedni. Cela situacija podseća mnogo na skorašnji famozni Heartbleed bug, baš zbog velike rasprostranjenosti programa koji se oslanjaju na Bash i broja uređaja koji ga koriste. Kao i kod Heartbleed bug-a, konačna lista ranjivih uređaja i softvera se ne zna jer je broj uređaja koji koriste Linux u nekom obliku veoma veliki i verovatno se broji u hiljadama miliona.

Mada ovakva ranjivost sama po sebi nije nova ni napredna, lako je rešiva, šta više, problem se lako rešava u jednom do dva koraka, bilo na desktop računarima, bilo na serverima. Problem je u rasprostranjenosti i veoma širokoj upotrebi. Problem nemogućnosti krpljenja (eng. patching) je u samoj velikoj rasprostranjenosti uređaja tzv. embedded devices, za koje ažuriranje ne bi bilo ni lako ni jednostavno, a da ne govorimo o firmware-u. Takvi uređaji možda nikada neće biti zakrpljeni, kao što ni u ovom trenutku posle šest meseci nije otklonjena Heartbleed ranjivost sa svih uređaja, i možda nikad neće, jer je potrebno da se u svakoj firmi i kući u svetu ažurira softver na svakom računaru ili uređaju, što nije baš izvodljivo. Alternativa ažuriranju je zamena uređaja za novije, što je svakako finansijski izdatak koji se ne odobrava baš olako.