петак, 26 априла, 2024
Интернет, мреже и комуникације

Shellshock

Аутор: Петар Симовић

Није прошло много после катастрофе зване Heartbleed bug (OpenSSL рањивости), а ево нас опет: остали смо затечени пред новом рањивошћу званом Shellshock и кодним именом CVE-2014-6271. Овај баг је заправо рањивост у Bash програму, који свакодневно користимо директно или индиректно, а да тога нисмо ни свесни.

Bash (Bourne-again shell) је стандардни програм отвореног кода стар преко двадесет година који је подразумевано инсталиран уз већину *nix оперативних система. Он је command-line based програм који служи за извршавање команди и скрипата од стране корисника или програма упућених оперативном систему, односно машини коју корисник употребљава. Проблем се јавља у свим верзијама овог програма до верзије 4.3. Можете проверити своју верзију следећом командом:

bash -version

Да ли је ваш Bash рањив, можете проверити покретањем следеће команде, након чега би требало да испише само други коментар, тј. у нашем примеру текст Bash is not vulnerable.

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

Уколико вам је Bash рањив, требало би само да ажурирате верзију командом за debian кориснике:

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

или уколико имате инсталиран aptitude:

aptitude update; aptitude safe-upgrade -y; reboot

или за Red-Hat кориснике:

sudo yum update bash

Као што сте можда могли да приметите из тест примера рањивости, проблем је у томе што Bash дозвољава у одређеним ситуацијама извршавање прослеђене му произвољне команде без икаквих провера. Наиме, познато је да се захтеви које веб сервери добијају, обрађују локално на машини на којој је сервер. У таквим случајевима се обрада захтева препушта локалном CLI-у (енг. command-line interface) који извршава захтев на машини. У већини случајева подразумевани cli је баш Bash. Специфично, Apache сервери који имају mod_cgi и mod_cgid модуле омогућене или openSSH сервери који имају sshd омогућен, јесу рањиви, а такође и DHCP клијенти уколико су повезани са злонамерним DHCP сервером, затим qmail сервери и IBM-ов restricted shell за који је избачен patch : http://goo.gl/AHS2gh, и многи други. Занимљиво је рецимо да су OpenVPN ( http://goo.gl/GbOzJ2 ) и VMWare ( http://goo.gl/U2w9p7 ) такође рањиви, а NGiNX сервери су остали имуни и безбедни. Цела ситуација подсећа много на скорашњи фамозни Heartbleed bug, баш због велике распрострањености програма који се ослањају на Bash и броја уређаја који га користе. Као и код Heartbleed bug-а, коначна листа рањивих уређаја и софтвера се не зна јер је број уређаја који користе Linux у неком облику веома велики и вероватно се броји у хиљадама милиона.

Мада оваква рањивост сама по себи није нова ни напредна, лако је решива, шта више, проблем се лако решава у једном до два корака, било на десктоп рачунарима, било на серверима. Проблем је у распрострањености и веома широкој употреби. Проблем немогућности крпљења (енг. patching) је у самој великој распрострањености уређаја тзв. embedded devices, за које ажурирање не би било ни лако ни једноставно, а да не говоримо о firmware-у. Такви уређаји можда никада неће бити закрпљени, као што ни у овом тренутку после шест месеци није отклоњена Heartbleed рањивост са свих уређаја, и можда никад неће, јер је потребно да се у свакој фирми и кући у свету ажурира софтвер на сваком рачунару или уређају, што није баш изводљиво. Алтернатива ажурирању је замена уређаја за новије, што је свакако финансијски издатак који се не одобрава баш олако.