Heh.
Yritykseemme tuli pari kuukautta sitten työkokeiluun 40 vuotias ”WordPress – osaaja”. Hän ei ollut kerennyt asentaa palvelimelle kuin kolme sivustoa kunnes web – serveri murrettiin WP - captcha plugarin kautta. Palvelimeen oli uploadattu switch.php – niminen tiedosto, jonka avulla hyökkääjä pystyi mm. ladata ja lisätä tiedostoja palvelimelle tietyin rajoituksin.
Hyökkääjä oli mm. ylläpitänyt phishing – tyyppisen palvelun kotisivun seassa. Temmellyksessä selvisi samalla kuinka kauheaata paskaa WP:n koodi todellisuudessa on.
"WordPress developers", give me a break.
Lisäys:
Heh, pienellä Google hackingilla (inurl) löysin 17833 WP sivustoa jotka käyttävät kyseistä captcha plugaria. Jep jep.
Äkkiseltään sanottuna väitän että WP:n itsensä tietoturva ja korkkausherkkyys ei ole edes lähellä sitä leveliä missä valtaosa plugineista laahaa. En muista lähdettä, mutta tyyliin kahdeksan iskua kymmenestä johtuu extrakoodista tjms.
Muuhun WP-koodiin en ota enempää kantaa, muuta kuin sen verran että WP toimii PHP 5.2:lla ja on tiettävästi pirun hyvin taaksepäin yhteensopivaa ;)
Ongelma on lähestulkoon aina ulkopuolisten plugareissa. Surkuhupaisinta tässä tapauksessa lienee se, ettei ihan ensitöikseen tulisi mieleen, että captcha-plugarissa olisi mitään tietoturvaa heikentäviä toimintoja...
Avoimen koodin projekteissa kannattaa kantaa oma korsi kekoon ilmoittamalla plugarin kehittäjälle haavoittuvuudesta (tai antaa sen nelikymppisen osaajan tehtäväksi).
Positiivisesti voi ajatella, että räikeät bugit ehkä herättävät pomoja tai asiakkaitakin ajattelemaan, että koodaamiseen tarvitaan googlaamisen lisäksi lähdekritiikkiä tai jopa omaa ohjelmointitaitoa.
qeijo kirjoitti:
”WordPress – osaaja”
Ehkä häneltä katkesi ajatus, kun WP:n ja osaamisen välissä oli noin pitkä väli ja ajatusviivakin.
Onneksi voitte palkata vahinkoja korjaamaan Putkasta jonkun nuoremman web developerin, jonka Retina-näytöltä WP-plugarien bugitkin näkyvät tarkemmin.
dailywtf on täynnä erilaisisten osaajien tempauksia.
Kaikki eivät ole hyviä koodareita ja joskus löytyy kehityksen takia syntynyttä kuolutta koodia, ajatusvirheen takia pöljyyksiä ja toisinaan jopa osaamattomuus johtaa kummallisuuksiin.
Tämän takia on syytä tutustua siihen koodiin, lukea se ja kysyä joka syötteen kohdalla, että mites nyt. Pääseekö jokin karkuun, parsitaanko tätä jotenkin hassusti jne. Samoin jokaiselta if-lauseelta kysytään entäs jos ei.
Hyvin nopeasti tulee selville, että minkälainen koodari on kyseessä ja tyyli auttaa kovasti. Silti sinne jää vikoja. Reikiä ei välttämättä. Itse otan todella hitaasti uusia palikoita käyttöön juuri tämän prosessin takia. Toisinaan kun ei riitä, että se nyt taas toimii.
Oma käsitykseni on, että he jotka koodaavat C:tä ja muita osoittimellimillesillisia kieliä, osaavat koodata myös PHP:tä, JS:ää ja muutenkin webbiä. Ne taas joiden ensimmäinen Hello world on ollut selaimessa, tuntuu olevan jokin kummallinen käsitys, että jee tää toimii ja sitten ollaan huuli pyöreänä kun ei hetken päästä toimikaan. Tämä liittyy jotenkin ohjelman rakenteeseen ja sen logiikan toteutukseen.
Mutta katsokaa se koodi. Se kuvastaa uskomattoman paljon kirjoittajan ajatuksen juoksua.
Wordpress -osaajakaan ei välttämättä osaa itse koodata, vaan hän leipoo sivupohjan (valmis, valmiista muunnellun, tai luo tyhjistä), jonka jälkeen vain nappaa plugarikirjaston suosituimpien laajennusten perusteella sivustolle toimintoja.
En nyt varsinaisesti pidä koodaajan vikana, jos suositusta vendor -pluginista löytyy tietoturva-aukko. Enpä taida tuntea ainuttakaan koodaria, joka kävisi esimerkiksi kaupallisten plugarien koodit läpi ja etsisi tietoturva-aukkoja, saatika että lähdekoodeja edes välttämättä luovutettaisiin.
En myöskään pidä WP:n (enkä muunkaan cms:n) tietoturva-aukkoja koodaajan vastuulla. Hotfixit ja muut luonnollisesti pitää asentaa kuin moiset aukot tulee ilmi. Eihän aukkoja edes olisi, jos jokainen koodari kävisi aina läpi vendor koodit sillä tasolla, mitä aukkojen löytäminen ylipäätään vaatii.
WordPressin teemat ja plugarit koostuvat aika pitkälti wanhanaikaisista php-skripteistä. Kaikki tietoturvan koodaaminen niihin jää moduulin kehittäjän omalle vastuulle. Api tietysti tulee WP:n puolelta mutta jos selaimella voi surffata munscripti.php:hen, niin mitään turvamekanismeja ei ole, ellei niitä ole juuri siinä skriptissä itse käytetty.
Jos palkkaa ihmisen site builderiksi niin sellaiselta ei kannata odottaa mitään koodin auditointia. Eikä huono tietoturva varsinaisesti ole kyseisen ihmisen vika muutenkaan. Tietysti WP-osaajan pitäisi osata koodatakin ja ymmärtää tietoturvallisesta php-koodaamisesta, koska WP itsessään on kasa paskaa ja vaatii site builderiltakin sellaista osaamista.
Joku toinen systeemi, jossa teemat eivät olisi itsenäisiä ohjelmia ja jossa kustomoinnit voisi tehdä webbikäyttöliittymässä näppäilemällä, olisi jo lähtökohtaisesti paljon tietoturvallisempi ratkaisu.
Juurikin samaa mieltä alkemistin kanssa.
Ja esimerkiksi GPL, mutta kaikki muutkin sanovat saman asian:
GPL kirjoitti:
THERE IS NO WARRANTY ... FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU.
Joten kaikki on käyttäjän vastuulla. Tämä unohdetaan ja sitten ihmetellään kun on tuulimyllyssä lantakasa.
Usein olen miettinyt, että kenen vastuu on käyttää muiden koodeja ja jos niissä on vikaa. Pystyisikö itse tekemään paremman. Ja miten sitoa se läjä maahan, ettei se lähde lentoon. Tähän auttaa secure by design järjestelmät, mutta helppokäyttöisiä, muokattavia ja monipuolisia ei pahemmin ole.
Oisipa edes sellainen hyvä ja selkeä server-client rajapintakirjasto (tai työkalu), jolla serveripuolelta tarjoiltaisiin dataa järkevään muotoon clientille ja toisaalta clientin datat tulisivat julmasti validoituna.
Aihe on jo aika vanha, joten et voi enää vastata siihen.