{"id":51,"date":"2014-09-25T20:45:32","date_gmt":"2014-09-25T20:45:32","guid":{"rendered":"https:\/\/patryk.rzski.com\/?p=51"},"modified":"2016-02-28T20:48:44","modified_gmt":"2016-02-28T20:48:44","slug":"shell-shock-impact-analysis","status":"publish","type":"post","link":"https:\/\/patryk.rzski.com\/?p=51","title":{"rendered":"Shell shock &#8211; impact analysis"},"content":{"rendered":"<p>The article below is my publication for the Polish IT magazine IT Wiz.<\/p>\n<p><b>Cisza po burzy?<\/b><\/p>\n<p>Wraz z nieustaj\u0105cym rozwojem oprogramowania, rozwija si\u0119 r\u00f3wnie\u017c jego bezpiecze\u0144stwo. Luki o charakterze krytycznym nie pojawiaj\u0105 si\u0119 ju\u017c tak cz\u0119sto, jak mia\u0142o to miejsce chocia\u017cby dekad\u0119 temu. Id\u0105c tym tokiem, dzisiaj administratorzy system\u00f3w mogli poniek\u0105d oczekiwa\u0107 spokojnego zako\u0144czenia bie\u017c\u0105cego roku &#8211; wszak jeszcze niedawno \u015bwiatem wstrz\u0105sn\u0105\u0142 b\u0142\u0105d, kt\u00f3ry dorobi\u0142 si\u0119 swojego kryptonimu \u2013 Heartbleed. Na krytyczne znaczenie rzeczonego b\u0142\u0119du mia\u0142y wp\u0142yw dwa czynniki: po pierwsze, dotyczy\u0142o szeroko stosowanej konfiguracji w warstwie szyfrowania, a wi\u0119c czego\u015b, co de facto nie s\u0142u\u017cy niczemu innemu &#8211; jest narzutem bezpiecze\u0144stwa. Po drugie, powszechno\u015b\u0107 implementacji, gdy\u017c dotyczy\u0142 jednej z popularniejszych wersji szeroko stosowanej biblioteki OpenSSL.<\/p>\n<p>Niestety (albo wr\u0119cz przeciwnie), spokojnego ko\u0144ca roku si\u0119 nie doczekamy. Oto Stephane Chazelas, francuski in\u017cynier informatyki odkry\u0142 luk\u0119, kt\u00f3ra mo\u017ce nie podlega pierwszemu czynnikowi, ale za to mo\u017cna szacowa\u0107 du\u017co wi\u0119ksz\u0105 podatno\u015b\u0107, nie m\u00f3wi\u0105c ju\u017c o \u0142atwo\u015bci eksploatacji. Luka dotyczy tym razem pow\u0142oki systemowej Bash we wszystkich, aktywnie rozwijanych jej ga\u0142\u0119ziach. Problem w tym, \u017ce w\u0142a\u015bciwie ka\u017cda dystrybucja systemu Linux stosuje Bash jako domy\u015bln\u0105 pow\u0142ok\u0119 systemow\u0105 od wielu lat, w tym urz\u0105dzenia typu embedded tudzie\u017c takie, gdzie Linuksa by\u015bmy si\u0119 nawet nie spodziewali. O ile w przypadku Heartbleed mo\u017cna by\u0142o wykra\u015b\u0107 dane poprzez celowy atak, tak tutaj mo\u017cna spodziewa\u0107 si\u0119 powstania skrypt\u00f3w masowo eksploatuj\u0105cych t\u0119 podatno\u015b\u0107 z automatu, tworz\u0105c poka\u017anych rozmiar\u00f3w botnety. Warto doda\u0107, \u017ce botnety na serwerach s\u0105 du\u017co pot\u0119\u017cniejsze z racji cz\u0119sto lepszego dost\u0119pu do sieci. W tym temacie szeroko ju\u017c alarmowa\u0142y media nie-informatyczne, jak chocia\u017cby Reuters.<\/p>\n<p><b>Na czym to polega<\/b><\/p>\n<p>Bash, podobnie jak inne pow\u0142oki, pozwala na definicje zmiennych \u015brodowiskowych. Zmienne takie mog\u0105 zawiera\u0107 definicje funkcji je\u015bli zaczynaj\u0105 si\u0119 od ci\u0105gu znak\u00f3w &#8216;() {&#8216;. Jest to szczeg\u00f3lnie przydatne w przypadku wprowadzania funkcji dla innych instancji pow\u0142oki w danym systemie, jednak w tym wypadku wi\u0105\u017ce sie to z zagro\u017ceniem. Problem w tym, \u017ce interpretacja kodu nie ko\u0144czy si\u0119 wraz z ostatni\u0105 klamr\u0105 definicji. Zatem, do skutecznego wykorzystania podatno\u015bci wystarczy nadpisanie rozpoznawalnej szerzej zmiennej z funkcj\u0105 poprzez dodanie kodu, kt\u00f3ry wykona si\u0119 z takimi uprawnieniami, z jakimi dzia\u0142a instancja pow\u0142oki. B\u0142\u0105d ten jest na tyle krytyczny, \u017ce dorobi\u0142 si\u0119 swojego kryptonimu \u2013 Shellshock.<\/p>\n<p><b>Przecie\u017c nie udost\u0119pniam shella!<\/b><\/p>\n<p>Skala problemu kryje si\u0119 w mnogo\u015bci zastosowa\u0144. W przypadku Heartbleed by\u0142o tego sporo \u2013 nale\u017ca\u0142o namierzy\u0107 ka\u017cd\u0105 implementacj\u0119 biblioteki OpenSSL poprzez identyfikacj\u0119 wszelakich urz\u0105dze\u0144 z mo\u017cliwo\u015bci\u0105 nawi\u0105zywania po\u0142\u0105cze\u0144 szyfrowanych. I tak, do typowych atak\u00f3w na serwery dosz\u0142y wszelkie klienty VPN, a wi\u0119c nawet domowe routery i wiele innych urz\u0105dze\u0144.<\/p>\n<p>W tym wypadku pracy w namierzaniu ewentualnych wektor\u00f3w ataku b\u0119dzie znacznie wi\u0119cej, poniewa\u017c podatne b\u0119dzie ka\u017cde wykorzystanie Basha wi\u0105\u017c\u0105ce si\u0119 z prac\u0105 w \u015brodowisku o zdefiniowanych zmiennych z funkcjami. Zatem nie chodzi tylko systemy wielu u\u017cytkownik\u00f3w. Podatne s\u0105 r\u00f3wnie\u017c systemy, gdzie u\u017cytkownik nie ma mo\u017cliwo\u015bci stworzenia nowych zmiennych \u015brodowiskowych! Ataki mo\u017cna przeprowadza\u0107 wi\u0119c po\u015brednio \u2013 poprzez skrypty CGI chocia\u017cby, a wi\u0119c praktycznie ka\u017cdy serwer http generuj\u0105cy dynamiczne strony, na przyk\u0142ad w PHP. Do tego dochodz\u0105 \u015brodowiska dla skrypt\u00f3w klient\u00f3w DHCP, opcja AcceptEnv w OpenSSH tudzie\u017c SSH_ORIGINAL_COMMAND a tak\u017ce wszelakie skrypty, kt\u00f3re eksportuj\u0105 definicje funkcji, szczeg\u00f3lnie z ustawionym SUID.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The article below is my publication for the Polish IT magazine IT Wiz. Cisza po burzy? Wraz z nieustaj\u0105cym rozwojem oprogramowania, rozwija si\u0119 r\u00f3wnie\u017c jego bezpiecze\u0144stwo. Luki o charakterze krytycznym nie pojawiaj\u0105 si\u0119 ju\u017c tak cz\u0119sto, jak mia\u0142o to miejsce chocia\u017cby dekad\u0119 temu. Id\u0105c tym tokiem, dzisiaj administratorzy system\u00f3w mogli poniek\u0105d oczekiwa\u0107 spokojnego zako\u0144czenia bie\u017c\u0105cego [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/patryk.rzski.com\/index.php?rest_route=\/wp\/v2\/posts\/51"}],"collection":[{"href":"https:\/\/patryk.rzski.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/patryk.rzski.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/patryk.rzski.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/patryk.rzski.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=51"}],"version-history":[{"count":1,"href":"https:\/\/patryk.rzski.com\/index.php?rest_route=\/wp\/v2\/posts\/51\/revisions"}],"predecessor-version":[{"id":52,"href":"https:\/\/patryk.rzski.com\/index.php?rest_route=\/wp\/v2\/posts\/51\/revisions\/52"}],"wp:attachment":[{"href":"https:\/\/patryk.rzski.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=51"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/patryk.rzski.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=51"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/patryk.rzski.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=51"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}