lunedì 27 agosto 2012

Rendere OpenX più sicuro e smettere di diffondere virus dal proprio sito


OpenX, il famoso adserver open source, è spesso preso di mira da vari tipi di attacchi informatici per la sua natura di "distributore di contenuti" (solitamente banner) su vari siti ed in grandi quantità.

Questi attacchi sfruttano diverse vulnerabilità del software per iniettare codice all’interno di ogni banner mostrato. In questo modo l’attaccante (o più comunemente il virus creato allo scopo) può includere un iframe o inserire javascript per poi cercare di sfruttare le vulnerabilità del browser ed infettare anche l’ignaro utente che sta visitando il vostro sito.

Vediamo come, in una installazione comune di OpenX, ci si può difendere contro questi attacchi.


Perchè è un problema grave
Ritrovarsi con il proprio adserver compromesso non è una cosa piacevole: come prima cosa ci si può accorgere del problema dopo diverso tempo perchè, come tutti i virus moderni, hanno interesse a nascondersi per diffondersi il più possibile anzichè provocare danni visibili.
I browser o gli antivirus più attenti possono bloccare la navigazione al vostro sito con una pagina di avvertimento molto poco rassicurante: pensare che un utente venuto sul vostro sito veda una scritta tipo “Attenzione questo sito diffonde virus” (il concetto espresso è questo) non è proprio una bella cosa.


Inoltre non è un buon indicatore di qualità per il vostro sito web, e vi assicuro che appena se ne accorgono i vari motori di ricerca verrete penalizzati fortemente anche dopo la soluzione del problema.


Come avviene l’attacco

L’attacco avviene sfruttando delle vulnerabilità che periodicamente vengono scoperte dai malintenzionati, e permettono di eseguire delle query sul vostro database. Mi auguro che abbiate degli account MySQL distinti per ogni software sul vostro server, per cui al massimo potranno agire sull’installazione di openx, perchè altrimenti potreste ritrovarvi compromesso l’intero sistema.
Queste query solitamente cercano di fare modifiche non facilmente visibili, e nello specifico consistono nell’usare due campi, “append” e “prepend” dei banner e delle “zone”.
I campi append e prepend servono semplicemente ad aggiungere dell’html a vostro piacere prima o dopo il banner, ed essendo una caratteristica usata solo in casi particolari o in realtà professionali (circuiti di scambio banner, media agency ecc) per vederla bisogna andare su una pagina apposta del vostro pannello di controllo.
Quello che viene inserito in questi campi è un iframe o del javascript che poi richiamerà a sua volta altre pagine che cercheranno in qualche modo di penetrare nel computer dell’utente provando ogni exploit noto per quel browser o i suoi plugin (java, flash etc).

Come proteggersi
Se ricadete nei casi più comuni per cui non usate nessun html personalizzato nei campi append e prepend, vi consiglio di bloccarli a livello di database. Questi campi sono di tipo TEXT, ma se non li usate potete anche ridurli ad un ENUM (non dovete rimuovere i campi dalla tabella!) con un solo valore possibile, ovvero stringa vuota. Tutto qui. ci vogliono 20 secondi e potrete dormire sonni (più) tranquilli.
Se invece utilizzate quel campo, ed il codice che inserite è sempre lo stesso, potete usare sempre un ENUM elencando i vari valori possibili, anche se non potete specificarne troppi per limiti di altro tipo. Ricordate di fare questa cosa sia sulla tabella dei banner, sia su quella delle zone perchè entrambe hanno questi campi ed entrambe vengono usate dagli attaccanti.


Vale comunque sempre la regola di controllare ed aggiornare periodicamente la vostra installazione di OpenX.


Ricordate inoltre una cosa importante: assicuratevi che i file php NON SIANO SCRIVIBILI dall’utente sotto cui gira Apache (o chi per lui). Se volete essere conservativi rendeteli non scrivibili da nessuno (sotto linux con un comando tipo chmod -R a-w /percorso/installazione/openx) e cambiate l’owner (chown -R nomeutente:nomegruppo /percorso/installazione/openx). Questo serve ad evitare attacchi più complessi, ma comunque possibili. Inoltre è una buona regola per ogni tipo di software che avete sul vostro server.

Nessun commento:

Posta un commento