Home
Codice rubato Microsoft, disastro o montatura?

18 Febbraio 2004

Codice rubato Microsoft, disastro o montatura?

di

Molta confusione e voci non confermate intorno alla fuga di porzioni del codice sorgente di alcuni prodotti Microsoft. Il punto della situazione con i dati concreti attualmente disponibili

Cosa è successo?

Parti del codice sorgente riservato di Microsoft Windows NT4 e Windows 2000 sono comparse sui circuiti di scambio file peer-to-peer (Kazaa e affini) e nei circuiti di chat come IRC. L’annuncio della presenza del codice è stato dato da Neowin.net e confermato da Microsoft il 12 febbraio. Il codice risale a luglio del 2000, ma è stato in parte riutilizzato nelle versioni più recenti di Windows.

Perché è importante?

Come regola generale, avere a disposizione il codice sorgente rende molto più facile studiare i meccanismi interni di un programma. Questo significa, per esempio, che i vandali informatici potrebbero essere agevolati nel trovare dei difetti nella sicurezza del codice di Windows e sfruttarli per realizzare attacchi informatici estremamente dannosi. Il rischio potenziale interessa anche gli utenti XP, perché il codice di Windows XP deriva da quello di Windows 2000 e NT. In effetti è già stata annunciata su Securitytracker.com una falla molto grave, scoperta proprio grazie al codice trafugato. La falla, tuttavia, vale soltanto per Internet Explorer 5; la versione 6 ne è esente.

A parte i problemi di sicurezza per gli utenti, la fuga del codice sorgente è sicuramente fonte di imbarazzo per Microsoft per quattro motivi fondamentali. Il primo è che dimostra che Microsoft, pur avendo insistito che la segretezza del proprio codice è un dogma irrinunciabile la cui violazione causerebbe catastrofi, non riesce a garantirla. Questo, insieme alle frequenti falle annunciate e lasciate irrisolte per mesi o addirittura semestri e agli attacchi informatici che le hanno sfruttate (Blaster, per esempio), suscita anche nell’utenza comune sempre più dubbi sull’effettiva competenza di Microsoft in campo di sicurezza, nonostante le sue campagne sul trustworthy computing, ossia “l’informatica degna di fiducia”.

Il secondo motivo è che l’incidente fa naufragare il principio della security through obscurity (è sicuro perché è segreto) che Microsoft ha ripetutamente sostenuto in questi anni, arrivando a situazioni piuttosto paradossali come la dichiarazione che ci sono parti del proprio codice che non possono essere divulgate per ragioni di sicurezza perché sono dei colabrodo, come ha testimoniato Jim Allchin di fronte a una corte federale USA, ma che questo comunque non è un pericolo e non c’è fretta di ripararle, perché tanto sono e resteranno segrete. Non sembra che queste parti vitali siano incluse nel codice in circolazione, ma se la fuga è accaduta una volta, potrebbe accadere ancora.

Il terzo motivo è che la disponibilità del codice sorgente, sia pure incompleto, consente alle società concorrenti senza scrupoli di realizzare illegalmente software alternativo che duplica il funzionamento di Windows o si integra meglio con il sistema operativo Microsoft, e questo indebolisce la posizione commerciale del colosso di Redmond. Prima di questa fuga, l’integrazione era possibile soltanto con il benestare di Microsoft, perché il codice sorgente era concesso in visione soltanto a partner selezionati.

La quarta ragione di imbarazzo è che il codice trafugato consente a chiunque, e non più soltanto agli addetti ai lavori vincolati da accordi di riservatezza, di vedere il “dietro le quinte” di come lavora (o meglio lavorava) Microsoft. Dalle righe di commento, ricchissime di turpiloquio (cosa in sé abbastanza comune anche in altri sorgenti), emerge un quadro ben poco professionale di programmatori oberati e insonni, tiranneggiati da direttive contrastanti e costretti ad ammettere che ci sono vari punti del software Microsoft che ricorrono a espedienti molto discutibili pur di funzionare (“the fucking alpha cpp compiler seems to fuck up the goddam type “LPITEMIDLIST”, so to work around the fucking peice of shit compiler we pass the last param as an void instead of a LPITEMIDLIST”). Leggere questo codice sorgente è insomma una sorta di reality show per smanettoni.

Inoltre la visione del codice sorgente toglie di mezzo la carrozzeria lustra del prodotto finito e rivela le bielle e manovelle che lo fanno andare. Lo spettacolo risultante ha molti momenti di cui non è facile essere orgogliosi: la cosiddetta “spaghettizzazione” del codice di Windows, che è il risultato ingarbugliato di anni di sviluppo per sedimentazioni successive, senza momenti in cui si riparte da capo per mettere ordine. Ora è più facile capire quanto di vero ci sia nelle dichiarazioni di Microsoft fatte durante il processo antitrust, stando alle quali il codice di Internet Explorer è talmente embricato con quello di Windows da rendere impossibile la sua completa rimozione, come richiesto a suo tempo.

In altre parole, più che un problema immediato di sicurezza per gli utenti, la fuga del codice è un grave danno d’immagine per Microsoft.

Niente panico, allora?

È troppo presto per dirlo: dipende da cosa si annida dentro il codice scappato. Di certo la conoscenza del codice sorgente facilita il lavoro dei vandali, ma gli episodi recenti e meno recenti dimostrano che non è certo indispensabile una conoscenza così profonda di Windows per causare disastri.

La maggior parte degli autori di virus e worm non si prende la briga di svolgere analisi così sofisticate: usa il martello invece che il bisturi, oppure fa leva sull’ingenuità degli utenti usando espedienti psicologici. Tuttavia basta che un solo vandalo determinato pubblichi la propria analisi del codice sorgente perché tutti gli altri vi si buttino a pesce, con ovvie conseguenze.

Il codice sorgente di Linux è liberamente disponibile da anni, quindi Linux è più vulnerabile di Windows?

No. La segretezza o meno del codice sorgente è soltanto uno dei fattori che determina se un programma o un sistema operativo è più vulnerabile o meno rispetto ad altri. La divulgazione del codice di Windows è un problema di sicurezza soltanto se il suo codice è insicuro in partenza. Se invece il codice sorgente è scritto bene, leggerlo non offre appigli ai vandali, come dimostrato per esempio dalla conta assai modesta delle vulnerabilità critiche di Linux o del server web Apache (di gran lunga il server più utilizzato al mondo), e si limita a essere un semplice problema di proprietà intellettuale violata.

È noto che Microsoft sta effettuando da tempo una profonda revisione del proprio codice per eliminare questi appigli: routine che non controllano la lunghezza delle stringhe o le dimensioni dei buffer o che non gestiscono correttamente situazioni anomale o input imprevisti, come il codice “%[email protected] che immesso in un indirizzo manda in crisi Internet Explorer 6 non patchato, e altre delizie del genere. Nel software open source, questo tipo di controllo può essere effettuato da chiunque, perché il codice sorgente è pubblico; nel software Microsoft, soltanto chi è autorizzato da Microsoft può effettuarlo legalmente e quindi il processo è più lento. È quindi comprensibile che ci sia una certa apprensione: qualcuna di queste falle potrebbe essere ancora presente nel software attuale ed essere rivelata dal codice trafugato.

Che c’entra la ricetta della Coca-Cola?

Molti giornali non specializzati hanno paragonato la fuga del codice sorgente di Windows al furto della ricetta della Coca-Cola. È un paragone poco calzante, perché se la ricetta della Coca-Cola diventasse pubblica, la massima conseguenza sarebbe che chiunque potrebbe produrre la celebre bibita. Di certo non consentirebbe di creare un veleno che agisca su chiunque beva la Coca-Cola, mentre la conoscenza del codice sorgente di un sistema operativo può facilitare la creazione di virus micidiali.

Un paragone più calzante è, perlomeno per i patiti di Guerre Stellari, la sottrazione dei piani della Morte Nera: l’arma superpotente dei cattivi sembra invulnerabile per i minuscoli caccia ribelli, ma l’analisi dei suoi piani di costruzione rivela una piccola falla che gli eroi sfruttano per distruggerla. Se la Morte Nera fosse stata progettata bene, averne i piani sarebbe stato del tutto inutile.

Se preferite un paragone meno fantascientifico, pensate allo schema dell’impianto antifurto di casa. Se l’impianto è ben fatto, saperne marca, modello e disposizione dei sensori non aiuterà il ladro; ma se l’impianto non copre una finestra perché si fa conto sul “chi vuoi che lo venga a sapere”, la conoscenza dello schema sarà preziosissima.

È un evento senza precedenti come lo dipingono certi giornali?

Non esattamente. A ottobre del 2000, degli intrusi penetrarono nei sistemi informatici di Microsoft, ottenendo accesso in lettura al codice sorgente di alcuni prodotti in via di sviluppo. Inoltre alcuni anni fa presero il volo parti del codice sorgente dell’MS-DOS 6.22, ma l’incidente non fece molto scalpore perché si trattava di un sistema operativo ormai obsoleto.

A parte questo, le versioni prototipo di Windows vengono copiate e messe in circolazione da sempre, come è già avvenuto anche per la prossima versione del sistema operativo Microsoft, denominata Longhorn; si tratta però di codice compilato, dal quale è difficile decifrare il funzionamento dettagliato del software.

Cosa c’è nel codice “rubato”?

Il codice sorgente trafugato di Windows 2000 è l’unico di cui si abbiano al momento dei dettagli; Microsoft tuttavia ha dichiarato che sono disponibili in Rete anche parti non precisate del codice di Windows NT4.

Nel caso di Windows 2000, si tratta di circa 200 megabyte compressi, che si espandono a circa 600 megabyte. Secondo Microsoft, questo rappresenta circa il 15% del codice sorgente totale, che dovrebbe ammontare a circa 40 gigabyte. Ma qui inizia un balletto di cifre: secondo Betanews il codice in circolazione ammonta a 30.915 file, per un totale di 13,5 milioni di righe, contro un totale stimato di 35-50 milioni di righe del sorgente completo. Vnunet stima invece che la percentuale corretta sia inferiore al 2%.

Si sa invece per certo che il codice di Windows 2000 è datato 25 luglio 2000, ossia dopo l’uscita della versione ufficiale di quel sistema operativo. Nel frammento in circolazione ci sono librerie, file di testo, script e programmi eseguibili. Sull’autenticità del codice non sembrano esservi molti dubbi: è ricco di riferimenti a Whistler (il nome interno di Windows XP), a bug molto specifici, a dipendenti Microsoft, e contiene tabelle di marcia e organigrammi interni di Microsoft, oltre a file grafici per Windows 2000 e Internet Explorer 5.0.

Fonti attendibili indicano inoltre che il codice contiene tutto il necessario per compilare il Blocco Note, cosa di certo non entusiasmante né preoccupante sul versante della sicurezza, ma secondo Thor Larholm di PivX Solutions la lista dei file trafugati contiene anche riferimenti a protocolli di rete, parti di Internet Explorer, routine di gestione dei certificati digitali e parti del kernel: in tal caso, la fuga potrebbe avere conseguenze gravissime in fatto di sicurezza.

Indubbiamente emergeranno altri dettagli interessanti e potenzialmente imbarazzanti, ma per il momento spiccano di certo due cose: il linguaggio da caserma già accennato e il nome del probabile quanto involontario colpevole.

Sono stati gli “hacker”?

Dipende da cosa s’intende per hacker. I giornalisti generalisti usano questo termine impropriamente per indicare i vandali informatici, ma il suo vero significato è equivalente all’italiano “smanettone”; gente curiosa ma innocua.

Più propriamente, si può dire che nella fuga del codice sono coinvolti degli aggressori informatici che hanno ottenuto un accesso non autorizzato a un computer della Mainsoft che ospitava legalmente (ma in modo assai poco protetto), grazie all’iniziativa Shared Source di Microsoft, la porzione di codice Windows resasi uccel di bosco. Mainsoft è una società che collabora con Microsoft allo sviluppo di versioni Unix native di applicazioni Windows come Windows Media Player e Internet Explorer. O forse dovremmo dire collaborava, dopo questa figuraccia.

L’origine della fuga è emersa rapidamente grazie ad alcune tracce molto eloquenti. Il nome Mainsoft compare un po’ dappertutto nel codice sorgente in circolazione. Indagini riportate da Securityfocus puntano ancora più precisamente al fatto che il computer colabrodo era usato da Eyal Alaluf, Director of Technology di Mainsoft, dato che i file trafugati contengono il suo indirizzo di e-mail e altra corrispondenza a lui riferibile.

L’ironia della faccenda è che il computer di Alaluf contenente il preziosissimo codice sorgente era una macchina Linux, come indicato dalla presenza di un core dump, ossia un file generato da Linux quando un suo programma va in crash. Vi sono oltretutto indicazioni sul meccanismo usato per penetrare nella rete di Mainsoft: un server ftp (circle.mainsoft.com) che usava una versione non patchata del noto software wu-ftpd. Sarà consolante, forse, per Microsoft poter dichiarare che la fuga è avvenuta tramite un computer Linux insicuro.

È un complotto?

La frangia paranoica degli informatici si è subito lanciata in ipotesi di complotto: la fuga sarebbe stata orchestrata, dicono, per consentire a Microsoft di castrare il temuto concorrente Linux. L’ipotesi è questa: se il codice sorgente di Windows diventa fortunosamente accessibile a chiunque, compresa la comunità Linux, Microsoft potrebbe accusare Linux di contenere codice Windows copiato o — e qui sta la trappola ipotizzata — semplicemente ispirato grazie a questa fuga (anche la semplice ispirazione è legalmente perseguibile).

Questo è esattamente il gioco iniziato quasi un anno fa da SCO, che mette i bastoni tra le ruote alla diffusione di Linux seminando paura, dubbi e incertezze perché accusa la comunità degli sviluppatori di Linux di aver infilato in Linux del codice di SCO (accusa ancora tutta da dimostrare). L’interminabile pasticcio legale che nascerebbe da un’accusa analoga lanciata da Microsoft potrebbe paralizzare lo sviluppo di Linux quanto basta per consentire alla società di Bill Gates di arrivare al 2006, quando uscirà il successore di Windows e si avranno i primi risultati del discusso progetto NGSCB, peggio noto come Palladium.

L’altra teoria che circola è che facendo trapelare i codici di Windows 2000 e NT e quindi rendendoli più vulnerabili, Microsoft voglia indurre gli utenti preoccupati a una migrazione verso i sistemi operativi più recenti (XP e Server 2003) e non compromessi, le cui vendite non sono entusiasmanti. Ma XP e Server 2003 hanno molto codice in comune con i loro predecessori, per cui un giochetto del genere non avrebbe senso e verrebbe sbugiardato in fretta.

Insomma, le ipotesi di complotto hanno un innegabile fascino, ma l’esperienza insegna che non occorre scomodare la cospirazione quando basta la semplice incompetenza. Al momento, non ci sono indicazioni che puntino al complotto. Tutto sembra indicare che qualcuno ha semplicemente commesso un’imprudenza e il codice è uscito dalla finestra.

Anzi, in realtà c’è da stupirsi che una fuga di questo genere non sia avvenuta molto prima. Microsoft condivide parti del codice sorgente di Windows 2000, XP e Server 2003 con circa tremila fra clienti, partner e governi da circa tre anni tramite la Shared Source Initiative, come segnalato in una dichiarazione di Microsoft citata da Vnunet. Le uniche parti non condivise riguardano l’attivazione del prodotto, la crittografia e i sorgenti forniti a Microsoft da terzi. Era insomma soltanto questione di tempo prima che qualcuno inciampasse e qualche pezzo di codice spiccasse il volo.

Dove si scarica?

Domanda inevitabile con risposta inevitabile: lasciate perdere. Scaricare o copiare il codice sorgente è altamente illegale, anche se fatto per scopi “educativi” o “cultura personale”. Nota personale per gli avvocati Microsoft: so dove andarlo a prendere, ma non l’ho fatto e non intendo farlo.

Inoltre, se avete in mente un giorno o l’altro di fare programmazione per lavoro, non guardate il codice trafugato e dite di no a chi ve lo offre: potreste compromettere le vostre possibilità d’impiego. Se si viene a sapere che l’avete visto, esporrete i vostri clienti al rischio di una lite legale con Microsoft, che potrebbe accusarvi di aver tratto ispirazione dal suo codice per scrivere software per i vostri committenti. Una volta “bruciati” dalla visione del mistico codice, l’unica società per la quale potreste lavorare senza angosce sarebbe proprio Microsoft.

Infine, considerata la spaghettizzazione del codice sorgente di Windows, c’è ben poco da imparare, a meno che siate vandali informatici. E non lo siete, vero?

E adesso?

Sarebbe molto bello se questa fuga di codice inducesse Microsoft a riesaminare la propria politica schizofrenica di segretezza del codice come chiave di volta della sua sicurezza da un lato, e di condivisione del medesimo codice dall’altro: è evidente che più gente conosce un segreto, più è facile che il segreto trapeli, e non si può avere la botte piena e la moglie ubriaca.

Inoltre sarà opportuno trovare presto una risposta plausibile all’inevitabile domanda che questo incidente suscita negli utenti: come mai Linux o Apache possono permettersi di pubblicare il proprio codice e Microsoft no? Dopotutto, anche se il codice Microsoft fosse pubblicato, sarebbe comunque tutelato dalle leggi sulla proprietà intellettuale, esattamente come un brevetto rende pubblica un’invenzione ma al tempo stesso la tutela.

Da queste considerazioni nasce il sospetto che si stia in realtà usando la segretezza come uno strumento di controllo del mercato. La visione del codice viene concessa soltanto alle società “amiche”, a patto che non creino prodotti concorrenti; gli altri produttori di software vengono ostacolati, perché senza accesso al codice non possono ottenere l’interoperabilità e la perfetta integrazione e sfornano quindi prodotti inferiori. A Redmond non saranno forse delle cime in fatto di programmazione, ma sanno benissimo come si crea e si mantiene un monopolio.

L'autore

  • Paolo Attivissimo
    Paolo Attivissimo (non è uno pseudonimo) è nato nel 1963 a York, Inghilterra. Ha vissuto a lungo in Italia e ora oscilla per lavoro fra Italia, Lussemburgo e Inghilterra. E' autore di numerosi bestseller Apogeo e editor del sito www.attivissimo.net.

Vuoi rimanere aggiornato?
Iscriviti alla nostra newletter

Novità, promozioni e approfondimenti per imparare sempre qualcosa di nuovo

Gli argomenti che mi interessano:
Iscrivendomi dichiaro di aver preso visione dell’Informativa fornita ai sensi dell'art. 13 e 14 del Regolamento Europeo EU 679/2016.