Info:

twitter

Ultimi commenti: Comment feed

Tags:

Sponsor:

Archivio 2018:

Feb Gen

Archivio 2017:

Dic Nov Ott Mag Apr Mar Feb Gen

Archivio 2016:

Dic Nov Ott Ago Mag Mar Feb Gen

Archivio 2015:

Nov Ott Set Mar Gen

Archivio 2014:

Dic Nov Ott Set Lug Giu Mag Apr Gen

Archivio 2013:

Dic Nov Set Ago Lug Giu Mag Apr Feb Gen

Archivio 2012:

Dic Nov Ott Set Ago Giu Mag Apr Mar Feb Gen

Archivio 2011:

Dic Nov Ott Set Ago Lug Giu Mag Apr Mar Feb Gen

Archivio 2010:

Dic Nov Ott Set Ago Lug Giu Mag Apr Mar Feb Gen

Archivio 2009:

Dic Nov Ott Set Ago Lug Giu Mag Apr Mar Feb Gen

Archivio 2008:

Dic Nov Ott Set Ago Lug Giu Mag Apr Mar Feb Gen

Archivio 2007:

Dic Nov Ott Set Ago Lug Giu Mag Apr Mar Feb Gen

Archivio 2006:

Dic Nov Ott Set Ago Lug Giu Mag Apr Mar Feb Gen
Linux più sicuro di Vista?

 

A questa domanda proverò a dare una risposta analizzando alcuni fatti.

Innanzitutto Linux non è un sistema operativo (OS), ma un kernel, ovvero la parte più importante dell'OS: Linux internals (riprendendo dal testo di Tanenbaum) definisce kernel tutto ciò che su architettura x86 gira su ring0 (in alcuni casi -1) ovvero con più alto livello di privilegio. Quindi confrontare Vista a Linux è già sbagliato in partenza: sarebbe come confrontare una Alfa 145 con il motore Wankel. Infatti 'Linux' non è installabile così com'è ma solo attraverso le distro. Questa differenza è fondamentale per capire alcuni concetti esposti in seguito.

L'ideale sarebbe comparare Vista con Ubuntu, mia distro preferita giudicata da tantissimi la più usabile (la cui prossima versione della distro sarà rilasciata in Aprile).

Quando Windows viene buildato (terribile neologismo) viene creata un'immagine DVD contenente sia il kernel sia il resto dell'OS. Il lavoro invece di creazione di una distro è leggermente diverso perché somiglia molto di più all'assemblaggio di pezzi diversi di origine diversa (il kernel proviene da qui, openoffice da qui, ecc.). Il lavoro di chi produce una distro - nel caso considerato il team di Ubuntu - è quello di verificare che tutti i pezzi siano fondamentalmente compatibili fra di loro, compilare i vari flavor (x86, amd x86, x64, ecc.), aggiungere varie raffinerie© (font, sfondi, suoni, icone) e distribuire online.

Prima fondamentale differenza: nel caso di Vista, un'unica entità commerciale - Microsoft(MS) - è responsabile di tutta la "filiera" (come il team Ferrari corse Smile): a cominciare dal kernel per finire con il campo minato. Nel caso di Ubuntu la responsabilità è un po' distribuita. Cosa succede se si trova un baco di sicurezza in campo minato? Nel primo caso bisogna aspettare che MS prepari la patch; nel secondo caso bisogna aspettare che i campo-minato-linux-boys preparino la patch, la passino a quelli di Ubuntu, che a loro volta testeranno, ricompileranno la build e genereranno anche loro una patch.

Update 15 Aprile 2007: A dimostrazione che quello che ho scritto non è pura demagogia cito questo passaggio:

"You may be vulnerable if you do not manually patch your MadWi-Fi driver," said Butti. Before making it public, he shared the flaw with the MadWi-Fi development team, who have released a patch. However, not all Linux distributions have yet built the patch into their code, said Butti.

In poche parole è stato trovato un baco nello stack Wi-Fi (simile a quello per Mac o più antico per Windows), la patch è pronta, ma le distro non tutte l'hanno già inclusa. Fonte.

Seconda fondamentale differenza: Windows viene compilato usando gli ultimi ritrovati in termini di sicurezza sul fronte dei compilatori. Il Service Pack 2 di XP (SP2) è un esempio: sono stati introdotti nuovi flag nel compilatore C++ (ad esempio /GS), e secondo quanto descritto in questa presentazione:

Most critical Windows components have been recompiled in SP2 using the /GS switch

  • Components included in network facing processes
  • Components that operateon un-trusted input

All other files required for the installation of SP2 have been recompiled with /GS switch

 

In Ubuntu avviene qualcosa di simile, ma siccome il compilatore è gestito da un'altra entità tale sinergia non è sempre possibile soprattutto in maniera così pervasiva.

Il fatto che la gestione del codice di Windows sia centralizzata ha permesso poi l'uso massiccio delle annotazioni SAL (Standard Annotation Language). SAL è una tecnologia interessante introdotta nei nuovi compilatori C/C++ (vedi punto precedente) che permette di descrivere meglio l'input-output delle funzioni. La documentazione è qui; ma è spiegata chiaramente anche qui. In breve le annotazioni SAL (che hanno la forma di macro C++) descrivono meglio al compilatore le caratteristiche importanti (come la larghezza del buffer) dei parametri sia in ingresso che in uscita delle funzioni: se ad esempio si prova a scrivere in un buffer dichiarato come input (__in) il compilatore genera un errore; stessa cosa se qualche linea di codice potrebbe scrivere in un buffer di output (__out) oltre la sua lunghezza dichiarata.

A questo punto è facile - tramite flag di compilazione - forzare l'uso di SAL nel codice di Windows.

Ad ulteriore prova che tali policy funzionano bene è questo post, che spiega perché una vulnerabilità critica in VML non si manifesti anche in Vista (e ciò nonostante il pezzo di codice incriminato sia presente anche in Vista!!!). Provate ad immaginare cosa accadrebbe se il team Ubuntu volesse imporre a tutto il codice che viene incluso nella distro l'uso forzato di simili costrutti!

Ma SAL non è l'unico miglioramento in termini di sicurezza. Mi limito a riciclare la tabella:

Inoltre la centralizzazione del controllo sul codice permette l'implementazione del Security Development Cycle (SDL). Per rilasciare qualcosa di mastodontico come Windows Vista, bisogna passare per un ciclo di sviluppo raffigurato qui sotto (l'immagine è riciclata da questo post dove è riportata la fonte):

In breve: il personale viene formato tramite corsi di sicurezza obbligatori basati su testi canonici e corsi in aula; il codice scritto - oltre ad essere compilato con i flag di sicurezza attivati - deve superare i "controlli di qualità" (tools automatici che spulciano il codice alla ricerca di API 'proibite' e altro). Viene poi ulteriormente analizzato, verificato per la sicurezza insieme agli esperti interni del settore ed affidato a review esterne. In cima a tutto ciò si sono aggiunte features di sicurezza come UAC (descritta più sotto).

Per contro si capisce bene che chi mette semplicemente insieme i vari pezzi (Ubuntu) non ha nessun controllo sul livello di qualità di chi li scrive e li mantiene (non voglio denigrare, ma gli estimatori dell'open source indicano spesso tra i vantaggi che chiunque possa contribuire e ciò va nella direzione opposta).

I risultati del SDL si son già visti con il SP2, Windows 2003 ed ora con Vista. Il SDL ha anche portato al design di nuove features come l'UAC (User Account Control) e tante altre (*). Nonostante però qualcuno paragoni UAC a Sudo, ci sono tre fondamentali differenze:

  1. Se ci si logga come amministratori UAC a differenza di Sudo non richiede la password ma solo una conferma (Apple ha provato a prendersi gioco di questo usando da suo stile la menzogna come mezzo di marketing: questo post in inglese spiega un po' la realtà delle cose).
  2. A differenza di tutte le altre implementazioni, sia la richiesta di password, che quella di conferma, avvengono su un desktop separato (Secure Desktop). Questo impedisce che qualcunque software possa in qualche modo interferire maliziosamente con tale richiesta (spoofing).
  3. Sudo usa un meccanismo di ticketing. Una volta inserita la password, si rimane 'full administrator' per 5 minuti (durata di default). Durante quell'arco di tempo tutte le operazioni che richiedono pieni privilegi verranno automaticamente autorizzate. Ciò significa ad esempio che se qualcuno dovesse manomettere 'notepad', e notepad venisse eseguito subito dopo un comando che richiede sudo, la porta è aperta ad eventuali disastri. Al contrario Vista richiede l'intervento dell'utente per ogni processo diverso. Qualcuno ha persino suggerito di disabilitare UAC: non fatelo, UAC è come una cintura di sicurezza.

Evito di ripetermi sul fatto che molti considerano l'OpenSource intrinsecamente più sicuro: qui e qui ci sono miei due post sull'argomento.

Bottom line: Vista è - in quanto a sicurezza - decisamente all'avanguardia. Consiglio caldamente a tutti quelli che usano Windows XP di fare l'upgrade. Non fatevi spaventare da problemi di appcompat perché si superano facilmente o da fantomatiche cazzate che si sentono in giro (1 2 3 4 5)!

A questo punto la risposta alla domanda posta nel titolo a me sembra ovvia. Ognuno però creda quel che vuole.

-quack

(*) altre tecnologie di sicurezza introdotte in Vista sono indicate in questo articolo di Russinovich.


UPDATE: coincidenza delle coincidenze, durante la pausa pranzo ho avuto modo di comprare il numero di Aprile 2007 di Linux Magazine che spiega perché - secondo l'autore Scott Granneman - Vista è meglio di Linux. Nello stesso articolo indica anche 10 ragioni opposte e tra le 10 (in cui Linux sarebbe meglio di Vista) vi figura la security per i seguenti tre motivi:

  • UAC perché implementato male menzionando la pubblicità Apple (incredibile che l'autore creda alla pubblicità Apple e la riporti come fonte rilevante)
  • Il firewall di Vista per motivi spiegati su C|Net. Cosa strana è che le mie prove su Ubuntu hanno dato gli stessi esiti di Windows. Le porte outbound sembrano aperte di default.
  • Bitlocker è figo, ma è solo per Business/Ultimate. Per Linux invece c'è TrueCrypt che è gratis ed equivalente e quindi meglio. Mia opinione:
    a) La differenza tra Bitlocker e TrueCrypt è abissale, in quanto per BitLocker c'è bisogno di un minimo di supporto nel kernel in modo tale che anche i file dell'OS possano essere criptati.
    b) TrueCrypt è disponibile anche per Windows Vista.

In generale ho avuto l'impressione che il tono della rivista fosse dilettantesco. Altre due perle:

  • DRM in Vista: per il DRM si fa riferimento all'articolo di Gutmann ampiamente criticato da tutte le direzioni (Gutmann ci tiene a far sapere che Vista non l'ha provato)
  • Sulla para-virtualizzazione in RHEL 5 un altro autore ci tiene a far sapere che il vantaggio della para-virtualizzazione sta nel fatto di non richiedere hardware specializzato a differenza della virtualizzazione vera e propria che richiede "something that's only been available in the most recent AMD and Intel CPUs". Che questo sia falso lo sanno anche le pietre

 

Technorati tags: , ,

Pubblicato giovedì 22 marzo 2007 alle 8:21 AM - 29 commenti so far
Archiviato in: Windows, Security, Linux

Dove sta telnet?

Una delle applicazioni più utili per quanto riguarda il debugging TCP/IP è telnet. Se però si digita da command prompt, in una installazione di default di Vista, ci si becca il triste ed infame messaggio:

'telnet' is not recognized as an internal or external command,
operable program or batch file.

Dov'è finito? Semplicemente non c'è più (*): o perlomeno, non è installato di default. Ma se ci si arma di pazienza e DVD di installazione lo si installa facilmente in due modi (via blog di Shamit Patel); scegliere tra i due quale si preferisce:

  1. via Control Panel/Programs, Turn Windows Features on or off, scrollare un po' e scegliere Telnet Client. Si clicca OK e l'installazione parte...
  2. Lanciare da riga di comando:
    start /w pkgmgr /iu:"TelnetClient"  (oppure TelnetServer per il server)

Eccolo in tutto il suo splendore:

Enjoy!

-quack

(*) già immagino le varie teorie paranoiche se davvero telnet fosse stato eliminato Smile

Technorati tags:

Pubblicato mercoledì 21 marzo 2007 alle 11:30 AM - 4 commenti so far
Archiviato in: Windows

18 Marzo: il giorno degli animali

Ore 11.00, una papera mi attraversa la strada nel parcheggio di casa (*).

Ore 11.30, uno scoiattolo attraversa 3 corsie su 4, nota sopraggiungere una macchina, si spaventa e le riattraversa per tornare indietro.

Ore 19.20 è la volta di un cerbiatto. Da lontano sembra un cane, solo molto alto. Il poco traffico - per fortuna sua - si blocca e lui raggiunge il Marymoor Park.

Quasi non ci credo. Bah.

(*) la papera sembra aver trovato il suo habitat naturale nel parcheggio. Mi impressiona che se ne stia lì in beata solitudine

Pubblicato mercoledì 21 marzo 2007 alle 2:03 AM - 2 commenti so far
Archiviato in: Cazzate

Vista: event viewer completamente rifatto

Un'altra di quelle cose che adoro in Vista è il nuovo event viewer, completamente rifatto.

Così era in Windows XP:

Così è invece in Vista:

Moltissime nuove funzionalità sono state aggiunte. Una molto carina è la possibilità di lanciare un task quando un determinato evento viene loggato (scopi paranoici: mandare una mail per ogni tentativo di logon fallito, ecc.).

Altrettanto utile sono alcune informazioni che si trovano nella chiave "Applications and Services". Questo post ad esempio spiega come utilizzare tali informazioni per capire quali driver affliggono le performance di boot/standby/resume.

-quack

Pubblicato martedì 20 marzo 2007 alle 8:33 AM - 2 commenti so far
Archiviato in: Windows, Link

Virtual PC, HD differenziali e undo disks

Ho già parlato in passato di usi convenienti di Virtual PC con Windows XP: per l'appcompat, per la "paranoia" (ovvero un PC virtuale intero su cui scaricare allegramente tutto il malware possibile) e per nostalgia (vuoi mettere far girare windows 3.1 in una VM?). Io stesso ne ho creati per ora due, uno appunto per l'appcompat, l'altro per la mia personale paranoia. Il motivo per avere due VPC separati, sta nella sicurezza aggiuntiva di poter installare qualche applicazione più importante in quello destinato all'appcompat. Per non sprecare quintalate di bytes sull'HD, si possono usare un paio di features di Virtual PC: gli HD differenziali e gli undo disks.

Gli HD differenziali sono HD virtuali collegati ad un HD virtuale padre. Nel file dell'HD differenziale verranno scritte solo le differenze tra il disco padre e il disco figlio. L'idea è di creare un disco padre comune a tutte le VPC e tanti dischi figlio contenenti solo il delta in modo da avere una occupazione di spazio inferiore.

Gli undo disks sono molto simili agli HD differenziali: quello che fa VPC in questo caso è creare un drive differenziale temporaneo per tutta la durata d'uso del virtual PC. Durante qualsiasi momento sarà possibile decidere se tenere eventuali modifiche (merge) oppure buttare tutte queste modifiche temporanee e ricomiciare da capo (discard). Questo è molto utile nel lancio di software sospetto: si fa il merge, si lancia il software e poi si decide se tenere le modifiche o buttarle via; molto comodo anche in caso di debug per "memorizzare uno stato del PC"

Nel mio caso, quello che voglio implementare è una cosa del genere:

In questa figura XP "Vanilla" - azzurro - rappresenta l'HD virtuale padre (e che alla fine non sarà associato a nessuna virtual machine), mentre i due HD a destra  -rossi - rappresentano due HD differenziali entrambi derivati da Vanilla. L'asterisco sta ad indicare l'uso dell'undo disks feature.

La prima cosa da fare, supponendo di avere appena installato Virtual PC 2007, è quella di creare una macchina virtuale temporanea per installarci XP. Al momento della creazione di tale macchina, si crea un HD virtuale chiamato Vanilla; ci si installa XP da CD, magari dopo aver snellito il CD di installazione attraverso nlite, e il software che sarà il massimo comun denominatore tra tutte le macchine virtuali (roba tipo acrobat reader, Virtual Machine Additions, etc.). In caso di dubbi si può seguire questo wizard (in inglese).

La seconda cosa da fare, se si vuole fare davvero i tirchi sullo spazio, è quella di deframmentare/pre-compattare/compattare l'hd Virtuale prima di usarlo come "padre".

Per deframmentare qualsiasi tool va benissimo. Questo step è opzionale ma garantisce ottimi risultati. Io in passato ho usato questo (come suggerito pure da codinghorror.com)

Per pre-compattare ci sono due possibilità:

  1. usare il tool gratuito incluso nel pacchetto; questo porta ad una compressione un po' minore, ma è gratis.
    Per fare ciò basta installare l'immagine CD (via menù CD nella virtual machine) contenuta in:
    <Program Files>\Microsoft Virtual PC\Virtual Machine Additions\Virtual Disk Precompactor.iso
    Questo farà partire all'interno della VM un software di precompattamento che riempe lo spazio vuoto nell'HD virtuale di "zeri"
  2. usare il tool Invirtus VM Optimizer; demo gratuita scaricabile presso il loro sito (la demo è ottima allo scopo ma richiede codice di abilitazione, registrazione online, ecc.)

Io ho semplicemente usato il tool in 1. e alla fine della precompattazione è apparso questo messaggio:

Appena finita la precompattazione è consigliabile fare shutdown della VM (pena mandare a monte il lavoro di precompattazione).

Passo successivo è la compattazione vera e propria. Per compattare l'HD virtuale bisogna scegliere l'opzione edit Virtual Disk Wizard nel pannello di controlo di Virtual PC:

e poi l'opzione Edit an existing virtual disk:

A termine di tutta questa fase preparativa si avrà un HD virtuale già utilizzabile da cui differenziare.

Per creare un HD differenziale bisogna rifare lo stesso wizard scegliendo stavolta "Create a new virtual disk". Cliccando poi next si arriverà in questa schermata:

Scegliendo differencing il wizard ci guiderà nella creazione del primo HD differenziale (da chiamare APPCOMPAT). A questo punto la stessa procedura sarà seguita per creare un secondo HD differenziale (PARANOIA).

Allo stato iniziale questi drive differenziali occuperanno solo una manciata di KB.

Infine, una volta creati i tre drive virtuali, possiamo cancellare la prima VM (VANILLA). Cancellare la VM non vuol dire cancellare l'HD associato (infatti Virtual PC ci avvisa che l'operazione è completamente indolore):

Rimossa Vanilla, possiamo creare ora le due VM necessarie: APPCOMPAT e PARANOIA che utilizzando come dischi virtuali i rispettivi file .VHD

Infine, prima di passare a godere delle due VM, attivo l'opzione di Undo Disks nella VM PARANOIA (altrimenti che paranoia sarebbe?):

A questo punto ho due (o più) VM che occupano uno spazio molto inferiore della somma di tutte le VM.

Happy VM'ing!

-quack

Technorati tags:

Pubblicato lunedì 19 marzo 2007 alle 3:42 PM - 6 commenti so far
Archiviato in: Link, Virtualizzazione