di  -  mercoledì 1 Ottobre 2008

Qualche giorno fa’ ci siamo occupati delle “miracolose” prestazioni ottenute dal neobrowser di casa Google.
Lo sviluppatore Scott Hanselman, dopo aver ha spiegato i vantaggi della libreria Open Source Microsoft “WTL” utilizzata proprio da Chrome, affrontava un ultimo ed interessante tema: per ottenere determinati risultati e funzionalità è stato disassemblato Windows?

In realtà all’interrogativo non era stata data una risposta definitiva, anche perché si tratterebbe di un’affermazione carica di significati e rischi, in considerazione del fatto che l’EULA Microsoft vieta esplicitamente questa pratica.
La disponibilità del codice sorgente unita ai dubbi giustamente sollevati ha però provocato un moto di interesse all’interno della Rete, ed in particolare in quella schiera di sviluppatori, utenti etici, addetti ai lavori o semplici “curiosi ficcanaso”, determinati a scovare qualche indizio sostanziale delle ipotesi stilate all’interno dell’articolo di Hanselman.

Tra questi, Arstechnica ha spinto l’analisi ancor più in profondità.
Partiamo da lontano.
Come sappiamo ormai tutti e piuttosto bene, Google Chrome all’apertura di ogni nuovo tab (la scheda che sostituisce la vecchia finestra e che visualizza un sito) fa coincidere la creazione di un nuovo processo.
Il medesimo procedimento è replicato anche in presenza di plugin ed è stata inoltre reso indipendente il funzionamento dell’interfaccia dal motore di rendering e parte dedicata al processing dei dati.

Una feature senz’altro comoda ma che nasce anche da attente analisi sui fattori di rischio riguardo l’uso di un browser oggigiorno.
Se infatti l’incauto internauta si dovesse imbattere in qualche sito creato ad hoc per immettere codice maligno client-side e far crashare l’applicazione, il risultato sarebbe circostanziato al solo sito incriminato, lasciando intatto l’utilizzo delle altre parti dell’applicativo stesso.
Un’architettura che viene definita modulare, con un approccio di tipo sandbox.

In realtà era stata Microsoft stessa ad innalzare il livello delle policy utilizzate dai browser, prima con IE7 (dove era vietato esplicitamente il poter mescolare le aree di sicurezza con lo stesso processo, ad esempio Intranet ed Internet) e poi con IE8, attualmente in Beta release e che utilizza lo stesso concetto di Chrome: un tab per un’istanza dell’applicazione.
Un’altra funzionalità di cui si avvale Internet Explorer è La Data Execution Protection, utilizzata ormai da qualche anno nei processori della famiglia X86 (per la precisione con gli Athlon64 e il bit NX) e che sostanzialmente previene gli attacchi che fanno uso del buffer overflow.

Proprio nella gestione di questa feature, arrivano i “problemi”.

Per adattarsi infatti alle varie versioni di Windows, che non fruiscono allo stesso modo della DEP (le Win32 API la mettono a disposizione ancor prima che le cpu l’avessero introdotto, ma poi negli anni, come abbiamo già anticipato, sono stati apportati dei cambiamenti), gli sviluppatori si sono trovati di fronte al problema di non avere nemmeno la documentazione necessaria per poter beneficiare e così si sono trovati “costretti” a disassemblare lo stesso kernel di Windows come possiamo notare da questa porzione di codice:
// Completely undocumented from Microsoft. You can find this information by
// disassembling Vista’s SP1 kernel32.dll with your favorite disassembler.
enum PROCESS_INFORMATION_CLASS {
ProcessExecuteFlags = 0x22,
}

Una palese violazione del contratto di cui riportiamo un estratto:

  • work around any technical limitations in the software;
  • reverse engineer, decompile or disassemble the software, except and only to the extent that applicable law expressly permits, despite this limitation;
  • use components of the software to run applications not running on the software;
  • make more copies of the software than specified in this agreement or allowed by applicable law, despite this limitation;

E il lato paradossale della vicenda è che l’EULA stessa di Chrome usa i medesimi vincoli.
E’ interessante notare come, dopo l’analisi tecnica, seppur ci siano diversi particolari piuttosto definiti e che non lasciano molto spazio ad interpretazioni (ovvero che Google avrebbe effettivamente disassemblato parte del kernel di Windows) l’accento si sposti su un altro tema.
Peter Bright, il redattore di Arstechnica e curatore dell’articolo afferma infatti quasi la necessità tavolta di queste azioni, causate dalla volontà di Microsoft di rilasciare una solamente documentazione base (e di non fornire una lista ad esempio una lista di funzionalità de facto messe a disposizione dalle API, il cui elenco, ad esempio, viene aggiornato sì però solo con la release successiva), ma che non soddisfa evidentemente le esigenze degli sviluppatori che vogliono ottenere qualcosa di più dalle proprie applicazioni: in questo caso, quel “qualcosa” è rappresentato dalle politiche di sicurezza del browser Google.

Questa vicenda avrà delle ripercussioni legali tra i due colossi oppure aprirà gli occhi sul fatto che se a monte si stabiliscono meno forzature, ne beneficiamo tutti noi, tra utenti finali, programmatori e le stesse software house?

Ai posteri l’ardua sentenza, noi vi terremo comunque informati :)

14 Commenti »

I commenti inseriti dai lettori di AppuntiDigitali non sono oggetto di moderazione preventiva, ma solo di eventuale filtro antispam. Qualora si ravvisi un contenuto non consono (offensivo o diffamatorio) si prega di contattare l'amministrazione di Appunti Digitali all'indirizzo info@appuntidigitali.it, specificando quale sia il commento in oggetto.

  • # 1
    UALR
     scrive: 

    “in considerazione del fatto che l’EULA Microsoft viola esplicitamente questa pratica” va in “in considerazione del fatto che l’EULA Microsoft VIETA esplicitamente questa pratica”

  • # 2
    Jacopo Cocchi (Autore del post)
     scrive: 

    ups lapsus freudiano.
    Grazie della segnalazione :)

  • # 3
    blackshard
     scrive: 

    Mi ricorda tanto quella simpatica multa commissionata dalla UE alla Microsoft per via delle API e delle feature non documentate pubblicamente, ma disponibili solo per uso interno alla Microsoft.
    In ogni caso, il fatto che sia presente quel commento non significa che google abbia disassemblato kernel32.dll. Può essere un commento copiato dal codice scritto da terzi, oppure un commento scritto da uno sviluppatore di google che però ha trovato informazioni su un documento scritto da terzi…

  • # 4
    Jacopo Cocchi (Autore del post)
     scrive: 

    Sulla multa ci torneremo.
    L’articolo è stato scelto anche per questo motivo, perché si incastra con quello precedente e su un nuovo caso di cui, spero, parlerò in questo paio di giorni.

    Per quanto riguarda il commento, hai senz’altro ragione.
    Però lo devi vedere nell’ottica del complesso (ed è quello che ho provato a mettere in chiaro).

    Cioè per avvalersi di quelle funzionalità, che sono più avanzate dello stesso Internet Explorer 7 pur girando in ambiente WindowsXP (dove il driver model e + in generale l’architettura utilizzata non era così sicura dal punto di vista della sicurezza) hanno per forza di cosa utilizzato funzionalità non documentate delle librerie MS.

    Se poi ci sia arrivato qualcun’altro prima di loro e il frammento del sorgente di Google sia frutto di opera di altre persone, questo non possiamo saperlo se non ce lo dirà qualche fonte interna a Google :)
    Il risultato però, ovvero l’applicativo, è quello che abbiamo tutti sotto gli occhi

  • # 5
    nodith
     scrive: 

    fosse successo l’inverso, sarebbe scoppiato il finimondo…

    solo che google è riuscita ad aggiudicarsi il titolo di prima multinazionale al mondo “umana”, quindi a tutti va bene cosi…

    del resto, in una società dove il 90% della gente ragiona via pubblicità, la monopolista della pubblicità online ha vita facile

  • # 6
    Ilruz
     scrive: 

    Oppure hanno potuto dare uno sguardo al sorgente di windows, che qualche anno fa si rese disponibile sul circuito da pera a pera. Ne parlarono tutti i giornali specializzati: qualche sito pubblico’ anche una discussione che verteva sul fatto che Office aveva delle API “speciali” a cui poteva accedere solo lui, etc.

    Illazioni di cui non ho competenza ne voglia per affermare o smentire, mi limito a riportare per memoria.

    Oppure hanno isolato la kernel32.dll e altre, e iniziato a fare delle API che fanno esattamente la stessa cosa di quelle native di windows, ma in modo piu’ rapido ed efficente. Del resto, esistera’ anche un modo di incartare la cioccolata, migliore di quello della famosa marmotta.

  • # 7
    Jacopo Cocchi (Autore del post)
     scrive: 

    anche io ho la stessa sensazione, cioè sulla percezione che l’utenza ha di Google e in generale di alcune compagnie e/o prodotti…ne ho accennato nell’altro articolo, ma sarebbe interessante ragionarci in un pezzo a sé stante.

    Ci penso :)

  • # 8
    Jacopo Cocchi (Autore del post)
     scrive: 

    x Ilruz

    il codice sorgente “leaked” fu quello di Windows2K.

    Sul discorso di Office non mi ricordo anche se è abbastanza normale che io detentore del prodotto e del sorgente mi lasci spazio di manovra rispetto agli altri che si vogliono “interfaccia” con il prodotto stesso.
    Il problema è sempre stabilirne il come e il quanto.
    Nei sistemi come quelli moderni dove la chiave è sempre più l’interoperabilità, protezioni molto rigide rischiano di diventare più dannose che benefiche anche perché ne pagano le conseguenze gli sviluppatori stessi (quelli terzi) che sono le persone, in definitiva, che hanno fatto il successo della piattaforma Windows.

    Non dico di diventare lassisti improvvisamente e mettere a rischio il propri business core ma magari ogni tanto adottare qualche via di mezzo.
    Insomma i casi di OOXML, le estensioni pdf e xps, la JVM, al di là delle multi antitrust, sono stati piuttosto lampanti.

    Proprio in memoria dei precedenti scontri con altri big sarà interessante vedere come si comporterà la MS, dato che questa volta è lei la “vittima”, perché l’EULA violata è la sua.

  • # 9
    roberto
     scrive: 

    uhm, apple usa continuamente api non documentate di webkit per avvantaggiare safari e nessuno si è lamentato :)

    marketing FTW!!!

    http://arstechnica.com/news.ars/post/20080229-finding-a-worm-in-the-apple-secret-apis-in-mac-os-x.html

  • # 10
    Jacopo Cocchi (Autore del post)
     scrive: 

    Lo fanno un po’ tutti se vi è la necessità e se lo facesse solo una SWHouse l’appello alla fine e la critica di Bright sarebbero stati inutili.

    Capisci anche tu però che se lo fa una multinazionale che è già in competizione con quella che ha sviluppato le API in questione, a cui ha forse disassemblato il sorgente del suo sistema operativo e con cui è entrato in competizione anche col nuovo browser che gira sempre sul sistema operativo di cui sopra ( è contorto ma le cose stanno così in soldoni)…capisci che non è ESATTAMENTE la stessa vicenda di Apple ;)

    e non può averne il medesimo peso, per quanto sicuramente interessante (se Ars ci fa un articolo non è per perderci tempo)

  • # 11
    Francesco Biacca blog » Google Chrome: reverse engineering sui prodotti Microsoft? Problemi con la EULA
     scrive: 

    […] appuntidigitali.it) (via arstechnica.com) Tags: arstechnica, eula, google, google chrome, IE7, IE8, Internet […]

  • # 12
    Sergio
     scrive: 

    Ottimo articolo ;)

    entrando nel merito, trovo che Google, nella sua visione espansionistica, dimentichi delle regole fondamentali, la proprietà intellettuale (cosa in cui credo fortemente).

    Microsoft non sopporta che una “sua creatura” sia sfruttata meglio da terzi. Chrome non è altro che l’applicazione di concetti e brevetti già esistenti, forse mescolati meglio che da altri, ma resta il fatto che dal punto di vista tecnologico non rappresenta un’innovazione sostanziale.
    Un pò come AJAX nel mondo delle applicazioni web, concetti ben noti sfruttati in modo più consono.

    Tornando al problema in se, credo che Google giochi molto sul consenso delle masse. Tutto quello che crea è cool per definizione… aspettiamo di vedere quanti brevetti hanno violato con Android…

  • # 13
    Jacopo Cocchi (Autore del post)
     scrive: 

    Thx :)

    fa piacere l’abbiate trovato interessante (vuol dire che quel che interessa a me interessa anche a voi :D…o almeno in parte :P)
    Su Google hai indubitabilmente ragione, non è un caso che le due IT company che hanno le azioni con il rating più alto sono (o almeno lo erano fino a poco tempo fa’) proprio Google e Apple.
    La seconda però può contare su una solida base di utenti fidelizzati oltre che la vendita HW, quindi è chiaro che Google in qualche modo sia riuscita a vendere la sua immagine come multinazionale oltre che qualitativamente valida (i suoi servizi li usano in tanti) ma anche “buona”.

    L’innovazione nei browser è difficile perché il mondo delle applicazioni web è in continuo cambiamento ed è difficile precorrere i tempi. Si tende a lavorare ex post oppure prendere, giustamente, ispirazione dai concorrenti.
    Forse al momento è Opera il prodotto che spinge più in là l’asticella (oppure alcune estensioni di Firefox). Chrome si è fatto notare soprattutto per la scelta di un’interfaccia minimalista che si distacca dai tradizionali browser: assomiglia quasi + a un lettore di schermo.

    Il paragone di AJAX ci sta soprattutto per l’hype che lo circonda…poi bisogna vedere nel concreto come lo si utilizza. Lavorandoci e fruendone da utente penso di poter tranquillamente dire che spesso se ne potrebbe fare a meno, pur ottenendo gli stessi risultati ma con il plus di avere un sito al 100% accessibile.

  • # 14
    Com’è nato il logo di Chrome? at AppleCow
     scrive: 

    […] chi non lo sapesse Google è stata accusata di Reverse Engineering delle API di Windows. « Il punto su […]

Scrivi un commento!

Aggiungi il commento, oppure trackback dal tuo sito.

I commenti inseriti dai lettori di AppuntiDigitali non sono oggetto di moderazione preventiva, ma solo di eventuale filtro antispam. Qualora si ravvisi un contenuto non consono (offensivo o diffamatorio) si prega di contattare l'amministrazione di Appunti Digitali all'indirizzo info@appuntidigitali.it, specificando quale sia il commento in oggetto.