Newsgroup: it.comp.sicurezza.varie
Titolo: Virus su bitmap

*** XPost & f/up ***
Son trascorsi pochi giorni dalla notizia della violazione dei sorgenti
di windows NT e 2000 gelosamenti custoditi da Microsoft, che gia' se ne
vedono i primi effetti.
Uno di questi e', com'era prevedibile, la scoperta di nuove
vulnerabilita'. 
Ma quest'ultima, trovata da tal gta e pubblicata su bugtraq e sui siti
specializzati, rende reale uno scenario che molti, a torto, ritenevano
impossibile: la realizzazione di un worm che si diffondesse via bitmap.
Spesso e volentieri qui si e' discusso della possibilita' di realizzare
codice malevolo che fosse trasportato da formati non eseguibili:
immagini, ad esempio.
La risposta standard era: "non se ne sono ancora visti, tuttavia
potrebbe essere possibile, in linea teorica".
Oggi questa non e' piu' (solo) teoria.
In un pezzo di codice pubblicato sull'advisory, e' chiaramente evidente
un integer overflow che permette l'esecuzione di codice arbitrario.
Ricordate il "ping-of-death"? ecco, stessi programmatori, stesse
vulnerabilita'.
Un secondo effetto, molto piu' drammatico, e' questo:
http://www.crn.com/sections/BreakingNews/dailyarchives.asp?ArticleID=48010
"Microsoft Urges Move To IE 6 Service Pack 1 Following Code Leak"
Qualcuno qui e altrove aveva malignato che la fuoriuscita del codice
potesse tornar molto utile a Microsoft, in quanto le voci allarmistiche
riguardo la presunta insicurezza di un sistema in cui i sorgenti siano
disponibili a tutti (cattivi pirati compresi), avrebbero spinto la casa
a suggerire agli utenti di aggiornare i propri sistemi ai nuovi windows
2k3.
Lo scenario si fa ora piu' concreto. Anche se non si puo' colpevolizzare
Microsoft perche' gli utenti ancora utilizzano IE 5.x e IE 4.x[1],
invece di aggiornare i sistemi all'ultima versione disponibile, trovo,
io personalmente, abbastanza comodo da parte loro chiudere il supporto
su questi prodotti, che sono ancora largamente utilizzati. Presto lo
faranno, con la scusa che tutto il sitema e' ormai compromesso. No
buono, questo.
Aspettiamo la prossima mossa.
Intanto chi con la casa di redmond non ci ha a che fare, prende birra e
popcorn...
[1] Pero' d'altra parte anche in linux i kernel 2.4 e 2.2 sono
largamente diffusi, e le patch, il back porting e tutto il resto
continuano ad essere sviluppati, cosi' come apache 1.x, samba 2.x,
eccetera.... perche' questa differenza? serieta', forse?
*** XPost & f/up ***
-- 
*    HappyCactus - Linux User #209744 - BOFH Certified Engineer    *
*           27/11/2003 Rilaciata la prima relase di qixl!          *
*    
http://sourceforge.net/projects/qixl
 : una gui per iSiloXC    *
*  
www.google.com
 / 
groups.google.com
 : cercare prima di chiedere  *

 eccetera.... perche' questa differenza? serieta', forse?
Marketing.
Mancanza di marketing, per l'esattezza.
-- 
           |Save our planet!
    Ciao   |Save wildlife!
   roberto |For your E-MAIL use ONLY recycled Bytes  !!
           |roberto poggi   
rpo...@softhome.net

 eccetera.... perche' questa differenza? serieta', forse?
perche' linux non e' (almeno direttamente) pilotato da aziende che puntano
a far soldi. le differenze di approccio si vedono nei risultati e nelle
utenze dei due sistemi se ci fai caso.
-- 
per leggere e postare su free.it.*:
http://infofreeit.altervista.org/polacco.zip

 eccetera.... perche' questa differenza? serieta', forse?
In parte. Ma in parte anche per pararsi il culo. Il problema non è (a mio 
modesto avviso) la serietà o la buona volontà di mantenere aperto lo 
sviluppo. 
Comunque se non erro Windows 2000 è ancora distribuito (come OEM lo sarà 
fino a fine Marzo, come licenza andrà più avanti) e il supporto andrà 
avanti fino a fine 2005.
 

 risultati e nelle utenze dei due sistemi se ci fai caso.
Io non sono un avvocato, ma credo ci siano anche aspetti giuridici come 
responsabilità oggettiva e simili. D'accordo, nessuno riuscirà mai ad 
inchiodare alla sbarra la microsoft per rispondere di un "danno" causato da 
un suo software, ma in linea teorica essendo la microsoft una figura 
giuridica ben precisa e ciascuna istallazione un contratto di 
compravendita, probabilmente dipende dal danno e da chi lo subisce. 
Probabilmente la scelta di definire un lifecycle per ciascuna versione si 
riferisce anche a questo. La microsoft non è la prima ne l'unica ne 
l'ultima.
La posizione di linux & co. è diversa da questo punto di vista.

 andrà avanti fino a fine 2005.
...finche' cause di forza maggiore (sorgenti in mano ai cattivi?) non
renderanno il rischio "talmente alto" da consigliare un upgrade su tutti
i fronti. Bah.


 La posizione di linux & co. è diversa da questo punto di vista.
come fai a dimostrare che un bug e' nato da dolo o incuria? sono note le
tecniche di programmazione sicura ma anche con quelle non c'e' alcuna
garanzia del risultato.
inoltre il danno e' dovuto di solito ad un agente esterno che sfrutta il
bug per fare danno quindi si puo' ribattere che un baco da solo non e' un
problema (e in effetti spesso e' cosi').


formato mp3 con vittima mpg123.
Parlando di mp3, non c'era anche un bug in una vecchia versione di
WinAmp?
'bye

 Da parte di chi, scusa? da parte di microsoft? 
Si, e in generale di chi produce software commerciale di larga 
distribuzione. Sia chiaro, non sto "difendendo" microsoft ne le sto dando 
ragione; dico che secondo il mio punto di vista potrebbe esserci una 
logica.
Microsoft *vende* il software, microsoft è una figura giuridica ben 
precisa, la compravendita è un contratto, quindi a mio parere esiste una 
responsabilità oggettiva per quanto teorica possa essere. Da quì la 
necessità di definire un lifecycle del software per porre dei limiti 
temporali. Probabilmente nessuno riuscirà mai portare alla sbarra la 
microsoft per un danno causato da un suo software... però in linea teorica 
può accadere (e probabilmente nessuno ci riesce proprio grazie a queste 
strategie studiate a tavolino).
Ripeto, non condivido questa logica, sto solo dicendo che a mio parere 
potrebbe esistere. 

...
Stavo guardando ma non ho capito molto il discorso di come possa essere
sfruttato da un worm che si propaga ad esempio via posta;
Vada per la navigazione, buffer overflow su explorer 5 se clicchi su un
immagine con
una bitmap apposita e in qualche modo il codice arbitrario dal web server lo
puoi aggiungere,
ma via posta?
Clicchi sulla bitmap e crei il buffer overflow ma il codice dannoso come lo
lanci??
Ciao!

 compravendita, probabilmente dipende dal danno e da chi lo subisce. 
Chi ti ha messo in testa che la EULA sia un contratto di compravendita?
Acquisisci il diritto di usare un software cosi' come e', che abbia
buchi, voragini, o leggeri spifferi; non compri proprio nulla.


 in overflow.
Il problema è che
arrivo a capire come
un programma mandato in buffer overflow dal lancio di un eseguibile
possa
"essere comandato arbitrariamente"
dal'eseguibile "cattivo".
mentre non capisco proprio come un programma mandato un buffer overflow dal
lancio di una bitmap
possa
"essere comandato arbitrariamente"
dall'immagine "cattiva"
La porzione di codice da eseguire in quest'ultimo caso,
dev'essere in un altro file non può essere nella bitmap!
o no...?
Ciao!

 buchi, voragini, o leggeri spifferi; non compri proprio nulla.
Perche' dove' e' scritto che un contratto riguarda una compravendita?
E la clausola in cui "il produttore se ne fotte nelle maniera piu' ampia
possibile dei danni che il software ti puo' provocare" bisogna vedere
se e' applicabile.
Il nostro codice civile prevede la firma (ovvero quella cosa fatta a
penna su un pezzo di carta) per l'accettazione esplicita delle clausole
vessatorie: altre forme non ne prevede.
Inoltre non tutte le clausole vessatorie sono ammissibili in un
contratto.
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 dev'essere in un altro file non può essere nella bitmap!
e perche' mai? Quando il codice e' in memoria, puo' essere eseguito se
l'overflow va a sovrascrivere le strutture preposte all'esecuzione
(quindi, indirizzi di ritorno, tabelle delle funzioni virtuali, hooks o
che altro).


WinAmp?
Winamp non so; Windows Media Player con i MP3, si'.
Leonardo
-- 
"Se e' vero che Linux in se' e' gratis, non lo sono le indispensabili
interfacce grafiche (X, KDE ecc.) che consentono alle persone normali
di utilizzarlo."                    -- Jason Matusow, Microsoft Corp.

 WinAmp?
mi ricordo del bug ma non ricordo come funzionasse.. po' esse :P


 buchi, voragini, o leggeri spifferi; non compri proprio nulla.
Hai scritto una frase che contraddice se stessa. Se "acquisisci il 
diritto" non è vero che non compri nulla...

 diritto" non è vero che non compri nulla...
Se io noleggio un video, acquisisco il diritto di usarlo, non diventa
mio.
Se io accetto un contratto di licenza d'uso, non compro nulla, verso un
corrispettivo per poter usare lecitamente quel software.
Il fatto che non abbia una scadenza non trasforma il dirito d'uso in
compravendita.


 o no...?
No.
Schemino ultrasemplificato di buffer overflow:
Chiamata a visualizzazione della bitmap->(pointer a ritorno)
Ritorno:Continuazione programma lecito
visualizzazione: leggi bitmap e mettila in buffer
interpreta header bitmap per sapere caratteristiche immagine
  (parte vulnerabile da buffer overflow)
ritorna a istruzione puntata da: (pointer a ritorno)
Spazio buffer bitmap
--
Dati fasulli header per settare pointer a ritorno su :codicemaligno
--
--
--
codicemaligno:formatta il pc
--
--
--
Fine buffer bitmap
Visto cosi' e' piuttosto semplice, no? :-)


 Fine buffer bitmap
Ok piuttosto semplice concettualmente e teoricamente
quindi "codicemaligno" è all'interno della bitmap
questo non mi era chiaro come...
A riguardo dell'overflow volevo segnalarti un post
su it.comp.sicurezza.windows
relativo alle bitmap (attenzione ai files .bmp)
dove l'ultima risposta nel thread
esprime giuste perplessità a riguardo della possibilità che il
"codicemaligno" vada in circolo.
Ciao!

 "codicemaligno" vada in circolo.
Quello del signed int?  L'ho visto, se mi avanza del tempo nel week end
Analizzo piu' pesantemente, a prima vista mi sembra possano avere
ragione entrambi. :-)
Potrei pure provare ad exploitarmi IE. :-)


che altro).
Questo su que' sistemi dove i dati sono eseguibili, beninteso. Altrove,
appena IP finisce su un segmento classificato "dati", senti un rutto ed
il programma viene stiacciato con infamia.


 eccetera.... perche' questa differenza? serieta', forse?
Centrato! E, in 2 parole: "Software libero"!!!
Ciao,
gc :-)

 Visto che cominci a prendere coscienza, alternative ce ne sono... ;-)
hehe non credo che a HC sia necessario dare questo consiglio :-)
/me anche oggi smanettante con Sarge (e ogni tanto riesce a leggere i 
*niusgrup*).
-- 
SETI@home: 265WU/1.03yrs now on Athlon 2.2+ :-)
La Primavera, in campo la Primavera!

 un rutto ed il programma viene stiacciato con infamia.
Non necessariamente.
Non so se sui sistemi win32 sia fattibile un meccanismo "return into
glibc" (a parte l'ovvio che le glibc non son presenti), ma esistono
diversi articoli (phrack) in cui si illustra come i "non executable
segment" e i sistemi di difesa tipo "stack guard" siano aggirabili.
Nella pratica, per chi non ne avesse mai sentito parlare, lo stack viene
manipolato in modo da far riprendere l'esecuzione all'interno di alcune
chiamate scelte dall'attaccante, senza inserire alcun codice, ma solo
dati nello stack.
In questo caso, l'unico meccanismo di difesa che mi viene in mente e'
rendere l'indirizzo base di rilocazione delle librerie non predicibile.


Non necessariamente.
No no, fidaty ;) f.d.: necessariamente.
Detto questo, rimane vero anche quello che dici tu, ovvero e' possibile
inventarsi un _altro_ tipo di attacco (q.v. Solar Designer, Aleph One),
che non preveda di andare a bracare nei segmenti non eseguibili, ed usi
solo il codice eseguibile gia' presente.
Comunque, benche' non sia il "proiettile d'argento" ed uccida qualsiasi
emissario del Male, il trucco dell'enforcing sul tipo di segmenti e' un
ostacolo in piu' per l'attacco (oltre che un utile strumento per chi va
a sviluppare/debuggare codice).
Questo lo dico non per te ma per certi comuni amici :-), che sostengono
che "siccome e' aggirabile allora tanto vale non averlo".


 sostengono che "siccome e' aggirabile allora tanto vale non averlo".
LOL. Vero. 
Ma quegli stessi comuni amici potrebbero pensare "beh, tanto c'ho
$NON_EXECUTABLE_DATA_PATCH, chissenefrega di aggiornare
$YOUR_FAVOURITE_HEAVILY_BUGGED_PROGRAM".
