####################################################################### Luigi Auriemma Applicazione: RealArcade http://www.realarcade.com Versioni: <= 1.2.0.994 Piattaforme: Windows Bugs: A] integer overflow nei file RGS B] rimozione arbitraria di files attraverso i file RGP Exploitation: locale (o remoto via browser) Data: 08 Feb 2005 Autore: Luigi Auriemma e-mail: aluigi@autistici.org web: aluigi.org ####################################################################### 1) Introduzione 2) Bugs 3) The Code 4) Fix ####################################################################### =============== 1) Introduzione =============== RealArcade e' un software/portale sviluppato da RealNetworks per lo scaricamento e l'acquisto dei giochini arcade. ####################################################################### ======= 2) Bugs ======= -------------------------------- A] integer overflow nei file RGS -------------------------------- Il problema riguarda la gestione dei file RGS, infatti esiste un integer overflow nel valore a 32 bits che specifica la grandezza della stringa di testo contenente il GUID ed il nome del gioco che si vuole installare. Quando un utente lancia un file RGS puo' scegliere se proseguire nella installazione oppure no. Il bug si verifica con entrambe le scelte sovrascrivendo l'indirizzo di ritorno della funzione vulnerabile e permettendo ad un attacker di eseguire codice malevolo sulla vittima. ------------------------------------------------------ B] rimozione arbitraria di files attraverso i file RGP ------------------------------------------------------ Il secondo problema invece permette ad un attacker di cancellare qualsiasi file nel disco della vittima semplicemente utilizzando un file RGP contenente un tag seguito dal nome di un file con un percorso a ritroso (directory traversal) proprio come questo pezzo di file RGP: ... 950258D1-7ABD-4afc-8886-449B98CE8224 1.0 Demo RGI demo Puzzle and Board ../../windows/calc.exe ... Per essere esatti il problema e' nella prima operazione fatta sul file, ossia quando RealArcade cerca il file pre-esistente con lo stesso nome e lo cancella immediatemente (sia che esso esista o no). Nel passo seguente invece (lo scaricamento del file dal web) tutto funziona correttamente, e' per questo che e' possibile soltanto cancellare un file locale e non sostituirlo con uno malevolo causando danni maggiori. Lo sfruttamento del bug e' immediato, quindi il semplice doppio click su un file RGP porta alla cancellazione istantanea del file senza alcun messaggio di conferma o allerta. Una nota un po' inutile riguardo l'utilizzo dello slash o del backslash nel percorso del file: sembra che in vecchie versioni anche il backslash avesse lo stesso effetto mentre in quelle vulnerabili recenti solo lo slash e' accettato. ####################################################################### =========== 3) The Code =========== A] http://aluigi.org/poc/rna_bof.zip B] http://aluigi.org/poc/rna_deleter.zip questo secondo proof-of-concept sovrascrive il file: ../../../../../../folder/myfile.txt (usually c:\folder\myfile.txt) quindi e' necessario avere o creare questo file e questa cartella per assissere allo sfruttamento del bug. ####################################################################### ====== 4) Fix ====== No fix. Una patch sara rilasciata "probabilmente" il 10 Febbraio ma io ne dubito visto che e' dall'inizio di Gennaio che ogni settimana gli sviluppatori dicono di rilasciare la patch la "settimana dopo". In ogni caso io ho riportato i bugs ai programmatori esattamente il 31 Ottobre 2004 (quindi oltre 3 mesi fa') e mi dispiace davvero di non aver rispettato pienamente la mia policy visto che questo advisory andava rilasciato almeno 2 mesi fa' evitando tutto questo orribile e vergognoso spreco di tempo da parte degli sviluppatori. #######################################################################