Nemali broj OpenX korisnika ove je godine ostao neugodno iznenađen dobrodošlicom “Reported site attack!” na upadljivoj crvenoj pozadini. Ili upozorenjima antivirusnih programa o pronađenom malwareu prilikom pristupanja svojim web stranicama. Dva razloga zbog kojih su web stranice ovih nesretnih korisnika kompromitirane su sigurnosne rupe u OpenX-u i, onaj važniji, lijenost/zaboravljivost webmastera zbog koje aplikacija nije nadograđivana.
OpenX i sigurnosni propusti
Svaka web aplikacija ima određene sigurnosne propuste, a one popularne privlače znatno veću pozornost napadača. OpenX, trenutno najpopularniji oglašavački server otvorenog kôda, u ovoj priči ne predstavlja iznimku. Štoviše, OpenX se ove godine našao na udaru neugodnih SQL injection propusta, koji su mnogim webmasterima zadali velike glavobolje.
U posljednje vrijeme smo u nekoliko navrata svjedočili takvim napadima. U OpenX-ovu bazu podataka ubacili su nestašni JavaScript kôdovi, koji su nakon prikaza bannera posezali za dodatnim sadržajem s udaljenih, zaraženih servera.
Ako koristite OpenX za prikazivanje bannera na svojoj stranici, u nastavku ovog članka pronaći ćete nekoliko SQL upita kojima možete provjeriti je li u vašoj bazi podataka završio neželjeni sadržaj.
Napomena: prije bilo kakvog rada na bazi podataka, preporučujemo vam da napravite backup. Iako je ovaj članak napisan u dobroj namjeri, odgovornost za eventualnu štetu preuzimate na sebe.
Ispis podataka u append i prepend poljima unutar tablica ox_banners i ox_zones.
SELECT bannerid, append, prepend
FROM ox_banners
WHERE append != ''
OR prepend != '';
SELECT zoneid, append, prepend
FROM ox_zones
WHERE append != ''
OR prepend != '';
Ispis svih korisnika s administratorskim ovlastima.
SELECT u.user_id, u.contact_name, u.email_address, u.username
FROM ox_users AS u, ox_account_user_assoc AS aua WHERE u.user_id=aua.user_id
AND aua.account_id = (SELECT value FROM ox_application_variable
WHERE name='admin_account_id');
Ako primijetite da se negdje spominje sumnjiv JavaScript kôd, kojeg niste sami dodali, trebali biste ga obrisati. Na primjer, naišli na maliciozni kôd u append poljima unutar tablice ox_banners gdje se spominje adresa zaražene stranice www.virus.com.
SQL upit koji možete iskoristiti za čišćenje svih polja u kojima se spominje www.virus.com glasi:
UPDATE `ime_baze`.`ox_banners` SET `append` = ''
WHERE `ox_banners`.`append` LIKE '%www.virus.com%';
Naravno, umjesto ime_baze, upisat ćete naziv svoje baze, a umjesto www.virus.com, upisat ćete dio malicioznog JavaScript kôda na kojeg ste naišli.
…slika ementalera je savršena. Smijem li ju koristiti za neke ilustracije?
Pozdrav, B.