OpenX 2.8.7 vulnerabile a una SQL injection?

Prima Speedtest.net, poi Kickasstorrents (www.kat.ph) sono stati colpiti da attacchi mirati a compromettere le rispettive installazioni di OpenX. A riportare le compromissioni del banner management system è stato il blog di Armorize (qui si parla di Speedtest mentre qui di kat.ph).

Dal momento che almeno la versione installata da Kickasstorrents è OpenX 2.8.7 e moltissimi utenti continuano a riportare compromissioni anche con questa versione (basta leggere i commenti al post) sembra che ci possa essere una SQL injection sfruttabile da attaccanti remoti per iniettare codice JavaScript nei codici zona dei banner.

Controllando in giro mi pare che l’unica vulnerabilità nota in OpenX 2.8.7 e precedenti sia una vulnerabilità Cross Site Request Forgery (CSRF) sfruttabile soltanto con utenti loggati all’amministrazione di OpenX, inutile dunque per portare a termine infezioni su larga scala di installazioni di OpenX.

Gli sviluppatori di OpenX, come al solito, non offrono alcuna indicazione in merito dunque per ora l’unica via per rendere più sicura la propria installazione consiste nel proteggere l’area amministrativa con un .htaccess bloccandone l’accesso ad IP (come fatto da speedtest.net dopo la compromissione dell’installazione di OpenX su ads.ookla.com) o ad utenti che non effettuino login (come spiegato nel forum di supporto).

Se siete stati infettati consiglio di seguire le indicazioni sulla pulizia di OpenX che ho dato tempo fa ma aggiungerei anche due consigli per individuare la presenza di codice JavaScript iniettato utilizzando questa query sql suggerita sul blog di OpenX:

SELECT bannerid, append, prepend FROM banners WHERE append != '' OR prepend != '';
?SELECT zoneid, append, prepend FROM zones WHERE append != '' OR prepend != ''

oppure per individuare utenti amministratori nascosti:

SELECT u.user_id, u.contact_name, u.email_address, u.username FROM users AS u, account_user_assoc AS aua WHERE u.user_id=aua.user_id AND aua.account_id = (SELECT value FROM application_variable WHERE name='admin_account_id');