Clusit-Associazione Italiana per la Sicurezza Informatica
Il mio profilo su Linkedin
Il mio spazio su YouTube
Joomla Italia
Il mio profilo su vololibero.net
 
Album Picasa
 
XBFA - Una nuova vulnerabilità italiana PDF Stampa E-mail
Urla dalla coscienza
Domenica 08 Maggio 2011 14:43
Il primo principio di Aldo (Giovanni & Giacomo) dice: "Osservando l'iterazione tra due entità si può capire come iterano, fino a riuscire ad iterare con loro".
E così è stato, e visto che sono un serio professionista rilascio la public disclosure.

Application: Somebody
Version: 2.0 e precedenti (penali)
Version name: Monocratic-Monkey
Rischio: Alto
Scenario: Qualsiasi situazione in cui si vogliono trarre vantaggi di qualsiasi natura/specie/tipo da una persona.
Target: Sicuramente tutte le persone presenti al Palasharp ieri, 7 maggio 2011, ad ascoltare il discorso di Berlusconi per le amministrative, Tutti quelli che non applicano di default le patch suggerite al termine dell'articolo.
Patch: Ripulire la memoria, riavviare usando solo la propria e aggiornare il firewall con qualche lettura culturale e applicare lo script sotto.
Disclosure: premetto che non vorrei sembrarvi un lamerottolo, la vulnerabilità in realtà esiste ed è causata da un virus: Wiki
Diciamo che io ho scoperto questo modo di applicarla denominandola XBFA (Cross Brain Forging Answers) e mi sono fermato ad analizzarla.

Prima che si possa verificare l'esploit sono necessarie alcune Requests e relative Answers.
Se volete usarlo (non fate danni!) è necessario sostituire alle stringhe in corsivo le vostre variabili d'ambiente, farò esempi commentati.

Attacker: Hello, Bunga Bunga!
Victim: Hello papi!
Attacker: Ci sono un magistrato, un giudice e uno di sinistra ....
Victim: Lol! ...rotfl...
Attacher: Volete pagare più tasseeee?
//-> Il venditore di immobili dirà: volete pagare cara la vostra casaaa?
//-> Il pizzaiolo dirà: volete pagare più cara la pizzaaaa?
//-> etc.
Victim: Noooo!
Attacker: Volete che i magistrati spiino le vostre telefonateeee?
//-> Il venditore di immobili dirà: volete che i vicini vi origlino ai muriiii?
//-> Il pizzaiolo dirà: volete mangiare al tavolo con sconosciutiiii?
//-> etc.
Victim: Noooo!
Attacker: Volete la sinistra che vi fa pagare l'ICIiii?
//-> Il venditore di immobili dirà: volete la casa accanto dove si paga 1 euro per entrareeee?
//-> Il pizzaiolo dirà: volete andare altrove dove pagate anche i tovaglioliii?
//-> etc.
Victim: Noooo!

ATTENZIONE perchè è da questo punto in poi che si può tentare l'esploit, io lo tento subito, voi potete continuare a lanciare request a piacimento ormai l'algoritmo lo avete capito!

Attacker: Volete meee?
//-> Il venditore di immobili dirà: volete questa casaaa?
//-> Il pizzaiolo dirà: volete la mia pizzaa?
//-> etc.
//-> Inaspettatamente il target cambia risposta:
Victim: Siiii!

powned! ... semplice no? Dove sta la vulnerabilità?
Beh, ci sono un po di concause, alcune persino attribuibili alla persona che ospita il cervello e all'ambiente esterno.
Principalmente è avvenuto perchè non è stata filtrata la variabile "meee": si sarebbe dovuto verificare cosa realmente conteneva.
//->Domanda per venditore di immobili: si vabbè ma comè e quanto costa la tua casa?
//->Domanda per il pizzaiolo: si ma com'è la tua pizza? Quali sono gli ingredienti? Quanto costa?
//-> etc.
Anche un buon antimalware avrebbe aiutato poichè si sarebbe accorto del pattern malevolo.
Sarebbe stata una buona idea far passare ogni richiesta all'apparenza innocua in una funzione filtro, es:

/* Questa funzione si occupa di verificare che ciò che ci viene detto corrisponda alla propria realtà onde evitare richieste Cross Brain */

function filter_Populism($string='Volete che i magistrati spiino le vostre telefonateeee'){
// Se $string è vuota uso il default
// Recupero i fatti miei -> array
$me=$this->me;
// Uso la funzione che trova il pattern nelle stringhe
$key=findkey($string);

foreach($me as $anche_a_me_succede){
// Se anche a voi capita o potrà mai capitare la stessa cosa
if($anche_a_me_succede[$key] == $string){
return true;
}
}
// stabilito che a voi non succede
return false;
}

Questa potete usarla come filtro, implementarla in funzioni di IDS o semplicemente inserirla in altre classi che già possedete, ad esempio vi impedirà di credere che dietro il vostro numero di cellulare ci sia uno che ascolta il pacco di cazzate che state dicendo con il vostro amico a meno che:
- Il vostro amico non sia un noto criminale
- Il vostro amico si occupa di cose che la legge non permette
- Hanno vostro malgrado beccato il vostro poco pulito amico e hanno trovato il vostro numero.
 

Commenti  

 
#1 jap 2011-05-11 12:20
Stupendo articolo, bravo ed intelligente meno male che sei su joomla
ciao
jap
Citazione
 
 
#2 anotherbard 2011-05-13 13:12
5 minuti di lettura e puro divertimento :)
grazie
Citazione
 
 
Questo sito è dedicato alla mia ed altrui curiosità, come primordiale bisogno di conoscere, capire nella sua complessità ogni cosa. Questo sito è basato sul framework Joomla1.5.xx!. Ogni contenuto o script pubblicato è di libera consultazione e duplicazione purchè se ne citi la fonte. Clicca qui per votare