domenica, 15 febbraio 2009

C'è EXE ed EXE

Devo subito premettere che questa volta non posso parlare per esperienza diretta, ma solo per "deduzione" logica, o che perlomeno io considero tale. L'argomento verte sui virus e loro potenziali effetti, ma non avendo un virus sottomano, non mi è possibile dare delle informazioni sicure scientificamente provate. Pazienza, diciamo che questo post è da considerare più come uno spunto di discussione, piuttosto che un agglomerato di nozioni da prendere come oro colato.
Lo stimolo sull'argomento mi è venuto quando mi sono accorto che i programmi sviluppati con piattaforma Mono sono degli "*.exe" proprio come quelli per Windows. Un paio di esempi che ho installato sul mio PC: Gnome-Do e F-Spot. Allora mi sono chiesto se per assurdo potesse esserci anche la più piccola possibilità che questi exe, pur su piattaforma Linux, potessero avere degli effetti deleteri sul mio sistema, così come i "cugini" exe lo hanno sui sistemi Windows.
Immagino che l'esperto GNU-Linux che sta leggendo in questo momento sia già saltato sulla sua sedia:
  • eccone un altro che vuol lanciare allarmi inutili
  • lo sanno tutti che Linux e virus non vanno d'accordo
  • che pere mentali si sta facendo questo qua. Con Linux vai tranquillo, i virus sono per gli altri
e avanti di questo passo.



Però, se la questione fosse così banale in rete si troverebbero domande e risposte chiare a tonnellate, ma ciò non è il caso (provare per credere). Inoltre io non sono un guru Linux, e non sto scrivendo necessariamente per l'elite degli smanettoni, ma anche e soprattutto per l'utente comune. Quell'utente che associa Linux alla sicurezza, al potersi dimenticare dei virus. Cosa rispondere per certo a queste persone che come me in questo momento si chiedono: dove c'è un exe c'è pericolo, o non è sempre vero?

Quelle che seguono sono le mie considerazioni, basate anche sul poco che sono riuscito a trovare in rete.

Quali e quanti tipi di exe possono essere eseguiti su un sistema operativo Linux? A mia conoscenza solo due: gli exe originali di Windows attraverso lo strato di compatibilità Wine, e gli exe ottenuti con la piattaforma di sviluppo Mono.

Bene, concentriamoci dapprima su quelli che sembrano i più pericolosi, cioè gli exe originali di Windows. Innanzitutto cosa intendo quando parlo di "exe originali" di Windows? Semplice: intendo un programma eseguibile creato e compilato per il sistema operativo Windows. Questo exe sarà usabile solo su piattaforma Windows, e non su Mac o Linux, a meno di introdurre l'uso di un emulatore, o di uno strato di compatibilità come Wine. Grazie a prodotti come Wine è dunque possibile installare ed eseguire programmi originali Windows, cioè gli stessi exe, senza alcuna modifica, che troviamo su un PC con Windows.
Ed ecco che sorge spontanea la fatidica domanda: se l'exe su Windows può essere attaccato dai virus, o peggio ancora, lui stesso può essere veicolo di un virus, cosa succede al mio sistema Linux se lo uso tale e quale mediante Wine? Non è che anche la mia bella Ubuntu inizia a fare pazzie? Mi avete sempre detto che con Linux vado tranquillo, e poi mi fate usare questi "cavalli di troia" provenienti direttamente da Windows? Come la mettiamo?

Tanto per cominciare dobbiamo dire che un virus può attaccare un sistema operativo che conosce. Solitamente i virus conoscono perfettamente Windows, ma per niente Mac OS-X e Linux. Si legge qualche sparuta notizia di esperimenti con virus multi piattaforma, cioè di virus che a seconda di dove si trovano agiscono di conseguenza, ma mi pare di capire che siano solo esperimenti di laboratorio. Su questo fronte quindi la nostra Ubuntu può stare tranquilla. I virus che tanto fastidio e tanti danni fanno a Windows, non possono fare altrettanto su Linux.
Unica eccezione potrebbe essere il disco "C:\" simulato in ambiente Wine. Chi usa Wine sa che questo strumento "fa vedere" delle cartelle tipo quelle di Windows con il suo bel disco C (ovviamente per finta). Il tutto allo scopo di far trovare a casa loro gli exe originali che così credono di essere eseguiti su un normale disco C. Se mai un virus può agire è proprio all'interno di questo sistema simulato di cartelle perché anche lui crede di essere a casa sua. Di conseguenza, nella peggiore delle ipotesi, la cartella contenente i programmi installati con Wine potrebbe subire danni da un virus, ma tutto finisce lì. Tutto ben circoscritto.
Ci sono anche ipotesi di danni maggiori che potrebbero essere causati dall'eseguire Wine da utente amministrativo root. Ammesso e non concesso che queste ipotesi siano vere, in questo caso posso solo dire: chi è causa del suo mal, pianga se stesso.


Passiamo ora agli exe creati con Mono. In questi ultimi tempi hanno sempre più successo i programmi creati con la piattaforma di sviluppo Mono. Si tratta in buona sostanza della versione libera degli strumenti di sviluppo ben noti nel mondo Windows (.NET, C#). Mono permette di creare programmi per tutte le maggiori piattaforme: Windows, Linux, Mac OS-X. Da questo si deduce come l'estensione "exe" derivi probabilmente dalla tradizione Microsoft, più che da un motivo tecnico. Un exe compilato in Mono per Linux o per Mac funzionerà perché compilato per la specifica piattaforma, non perché termina con exe. [vedi commenti in fondo al post per l'informazione corretta]
In effetti agli amanti del Pinguino può risultare strano vedere che sul proprio PC ci sono degli exe in esecuzione, ma non per questo bisogna impallidire. Tralascio volutamente qui ogni accenno alle infinite discussioni fra fautori e oppositori all'entrata di tecnologia Microsoft nel mondo open. Il discorso sui virus e sugli exe in questo ambito è ancora più chiaro che non quello già fatto in precedenza con Wine. Nel caso di Mono abbiamo come risultato finale un exe per convenzione, ma si tratta pur sempre a tutti gli effetti di un eseguibile nativo Linux, fatto per Linux. Un exe compilato per Linux non funzionerà mai su Windows e viceversa. Da questo deduciamo nuovamente che un virus, ammesso e non concesso che possa finire in un exe Mono compilato per Linux, non potrà mai fare danni alla nostra Ubuntu. [vedi commenti in fondo al post per l'informazione corretta]


Questo è quanto riesco a dedurre io secondo logica (la mia almeno). Se qualcuno ha informazioni più precise, smentite, prove scientifiche che confermano o smentiscono, lo faccia sapere, così ci potremo finalmente fare un quadro completo sull'argomento.

In aggiunta a quanto ho descritto sopra, che può senz'altro essere giudicato superficiale e poco preciso in alcune sue parti, ma tant'è io arrivo fino a lì, vi elenco qui di seguito qualche articolo sull'argomento malware e virus che ho trovato e letto sul blog Guiodic. Ho trovato questi articoli molto ben scritti, dove traspare la conoscenza dell'autore infinitamente più approfondita della mia. Complimenti a lui e buona lettura:


2 commenti:

guiodic ha detto...

Mi spiace contraddirti anche perché mi hai citato.
Un programma Mono è un programma .net.
In generale è possibile eseguire un exe di mono su .net e un exe di .net su mono.
Io stesso a volte lo faccio con programmi .net per Windows.
.Net e Mono sono come Java.

romeo ha detto...

Ti ringrazio molto guiodic per la tua precisazione. Lo spirito del mio post era proprio quello di mettere sul tavolo un argomento sul quale non sono molto ferrato e sul quale sentivo la necessità di fare maggiore chiarezza. Il fatto di non aver colto completamente l'analogia fra Java e Mono/.NET lo sta a dimostrare.
Lo scopo è però raggiunto. Io ho esposto dei concetti in parte errati e tu hai corretto dove necessario. Ora finalmente il quadro è più
chiaro per me, e soprattutto per tutti quegli utenti "normali" che capiteranno a leggere il post. Ho adeguato il testo del post dove sono presenti le inesattezze in modo da rimandare il lettore a questi commenti chiarificatori.

Come valore aggiunto di tutto ciò mi appare ora più chiara anche la lotta in corso fra giganti per ottenere la supremazia degli standard di fatto sul web e non. Per fare un paio di esempi allo stato attuale abbiamo i seguenti prodotti multi-piattaforma che si contendono il mercato:
- Java contrapposto a .NET/Mono [Oracle-SUN contro Microsoft]
- Flash contrapposto a Silverlight/Moonlight [Adobe contro Microsoft]