Povzetek
Drupal Security Team je konec marca 2018 objavil kritično ranljivost, ki omogoča oddaljeno izvajanje kode v več podsistemih Drupal različic 7.x in 8.x [1] [2].
Drupal vnose v obrazec, z omogočeno AJAX razširitvijo, katera je del Drupal Form API (FAPI) in omogoča dinamično posodabljanje vnosov brez ponovnega nalaganja spletne strani, obdeluje brez ustreznega preverjanja parametrov, kar napadalcu omogoča vnos zlonamerne kode v katero od vnosnih polj obrazca.
Napadalec tako lahko izvrši katerikoli sistemski ukaz in prevzame polni nadzor nad Drupal strežnikom.
Popravki, ki omenjeno ranljivost odpravljajo so že na voljo.
Ranljivost je prisotna tudi v Drupal 6, ki mu je podpora potekla že februarja 2016. Popravek, ki kritično ranljivost odpravlja je na voljo za člane projekta Drupal 6 Long Term Support [3] [4].
Sistem za upravljanje vsebin (CMS) Drupal je uporabljen kot okvir za več milijonov spletnih strani po vsem svetu, okoli 1600 pa jih je dostopnih pod .si domeno. Med njimi so spletne strani državnih organov, organizacij in podjetij.
Izkoriščanje CVE-2018-7600 za rudarjenje kripto valut
Ranljivost napadalci izkoriščajo tudi za podtikanje nekoliko spremenjene različice JavaScript knjižnice za rudarjenje kriptovalute Monero, ki jo je razvil Coinhive. Ta omogoča rudarjenje Monera z izkoriščanjem procesorske moči obiskovalcev tako zlorabljenih spletnih mest. Slovenska spletna mesta, osnovana na ranljivih verzijah Drupal CMS, seveda pri tem niso bila izjema.
V osnovi je bila Coinhive koda zamišljena kot alternativna metoda oglasom, za ustvarjanje prihodka lastnikom spletnih strani, se pa pogosto pojavlja na zlorabljenih spletnih mestih, kar seveda ni omejeno le na tiste, osnovane na Drupal ampak tudi WordPress, Joomla, ipd.
Analiza
Napadalec preko POST zahteve strežniku pošlje spremenljivke, ki se na strežniški strani ne “očistijo”.
Zaradi neustreznega preverjanja vhodnih parametrov lahko napadalec preko vrednosti ključa #post_render spremenljivke mail poda strežniku navodilo za izvedbo poljubnega ukaza, v tem primeru je to exec.
Parameter, ki ga vstavi v funkcijo, je podan preko ključa markup spremenljivke mail. V danem primeru je to ukaz za prenos datoteke s Coinhive kodo.
V drugi četrtini leta smo obravnavali posamezne primere zlorabljenih slovenskih spletnih mest, med katerimi so bili strežniki, izobraževalnih zavodov, javnih ustanov ter tudi zasebnih podjetij. Glede na vzorec so napadalci izbirali žrtve po ključu ranljivosti, ne pa posamične žrtve. Analiza je pokazala, da je bila zlonamerna koda v vseh primerih podtaknjena v “jquery.once.js” datoteko z istim Coinhive ključem. Iz tega sklepamo, da je šlo v vseh obravnavanih primerih za istega napadalca.
V datoteki jquery.once.js se je nahajala koda, ki je bila z namenom otežitve analize in protivirusne zaznave zakrita. V tem primeru je bila koda zamaskirana s prestavitvijo znakov prek pripadajočih šestnajstiških števil, npr. “\x64\x6f\x63\x75\x6d\x65\x6e\x74” se prevede v “document” .
Iz razkrite kode je razvidno, da vodi na spletno mesto http://vuuwd.com/t.js.
Obisk http://vuuwd.com/t.js razkrije prilagojeno Coinhive kodo, ki prepreči 100% obremenitev procesorja, kar je razvidno iz nastavljene vrednosti parametra throttle: 0.2. Tako se zmanjša možnost, da bi prišlo do opaznega vpliva na zmogljivost sistema ter s tem zaznave s strani uporabnika , da se nahaja na spletni strani, na kateri je podtaknjena koda za rudarjenje.
Ukrepi
Izvedba posodobitve Drupal CMS na različico:
- Drupal 7.x na verzijo 7.5.8
- Drupal 8.x na verzijo 8.5.1
Zaključek
Izkoriščanje ranljivosti CVE-2018-7600 v Drupal CMS ni zgolj omejeno na podtikanje Coinhive kode za rudarjenje kriptovalut, ampak napadalcu omogoča popolni prevzem nadzora nad spletnim mestom.
Ranljivost se lahko, med drugim, izkoristi za odlaganje zlonamerne programske kode, kot so npr. izsiljevalski virusi ali izvedbo phishing napadov.
Tudi na tem primeru vidimo, da je redno vzdrževanje in posodabljanje CMS sistemov ter uporabljenih vtičnikov nujna za stabilno in varno delovanje spletnih mest. Več informacij za lastnike spletnih mest najdete v priročniku, ki smo ga pripravili skupaj z registrom slovenskih domen (Register.si).
Viri
[1] https://www.drupal.org/sa-core-2018-002
[2] https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-7600
[3] https://www.drupal.org/project/d6lts
[4] https://cgit.drupalcode.org/d6lts/tree/common/core/SA-CORE-2018-002.patch?id=9fb2ea24e32e100cee0f271105f08e019e1b8b8c