Quando si parla di sicurezza, alla fine esce sempre questa balla :i programmi Open Source sono più sicuri di quelli closed perchè chiunque ne può vedere il codice.

Ma questo vale solo per gli algoritmi di criptazione ! I normali programmi sono scritti male (quelli open e quelli closed), pieni di bug, spesso da gente inaffidabile o inesperta, programmatori che non hanno certo volgia di controllare il codice se non da prolemi.

C’è una certa caccia al baco grosso per poter dire l‘ho scoperto io, ma nessuno fa di questa caccia un mestiere.

Nella realtà i programmi open source sono molto più facilmente craccabili di quelli closed.

Però, tutte le volte che si parla di questi argomenti esce fuori qualcuno che comincia a dire che Windows ha i virus e Linux no e quindi l’open è sicuro. Ma il fatto che windows sia progettato male non dimostra niente, windows non è il campione del closed, come linux non è il campione dell’open.

Allora proviamo ad immaginare di craccare un sito di prenotazioni alberghiere che gira su RedHat, e usando solo la Sql injection

In pratica si tratta di scrivere codice SQL nel campo login e password, è una tecnica semplice, conosciuta e poco efficace, per questo penso di poterne scriverne liberamente.

1° Scenario, il software del sito è closed source :

La prima cosa che faccio è identificare il prodotto e cercare in rete : troverò il sito del costruttore, scoprirò il linguaggio, il database e probabilmente l’elenco delle patch. Non troverò però molte informazioni sulle vulnerabilità aperte perchè la società farà di tutto (comprese azioni legali) per evitarne la diffusione.

C’è la lista dei clienti, ma non quella delle loro richieste di assistenza, non c’è la lista dei bug aperti, c’è una demo ma è una versione light diversa da quella di produzione.

Non ci sono molti altri appigli, farmi assumere sarebbe complesso, e la società fornitrice risulta essere un muro impermeaile.

Quindi, non avendo altre informazioni su quale istruzione SQL è efficace: dovrò tornare sul sito e provarle tutte, in tutte le pagine, sperando che fuzioni. Così facendo però farò scattare tutti i meccanismi di difesa presenti nel sistema ed il webmaster verrà avvertito dei miei tentativi. Ma non ho scelta, non posso fare altro.

 

2° Scenario, un sito open source :

Anche in questo caso identifico qual’è il prodotto ma andrò sul sito di  una community, qui troverò : i sorgenti, il forum dell’assistenza, la lista dei bug aperti ed un link per contribuire al progetto.

Con i sorgenti potrò cercare un errore, un caso non previsto, magari nelle ultime funzionalità aggiunte. Il prodotto sarà un libro aperto per me, conoscerò trappole e sistemi di allarme, architettua e parti accessorie, password di default, nomi delle tabelle e dei campi.  In questi progetti il codice è scritto a molte mani, da programmatori volontarii. Certo non ci sarà un errore nella login, ma in qualche plugin o in qualche pagina meno usata scritta con i piedi ho buone probabilità di trovarne.

Con il forum dell’assistenza potrei avere fortuna e trovare le domande che ha fatto proprio il webmaster del sito da craccare, potrebbero contenere informazioni utili.

Scorrendo la lista dei bug aperti, che solitamente in questi progetti è pubblica, posso cercarne uno non corretto che mi aiuti. 

Nell’incredibile caso che non abbia trovato neppure una falla nel codice scritto, mi rimane sempre un’ultima ratio : contribuire al progetto.

I progetti open sono aperti, accoglienti, accettano contributi o quanto meno plugin. Spesso non c’è nessuno che controlla approfonditamente il codice o delle procedure rigorose di qualità o dei software che vigilano sul codice.

Posso contribuire ed inserire io stesso un campo non protetto, che magari correggerò subito dopo averlo sfruttato per entrare nel mio obbiettivo.

Con il progetto open andrò a colpo sicuro, userò una SQL injection funzionante, aggirando gli eventuali sistemi di sicurezza, che conosco perfettamente.

 

L’esempio è pensato come se esistesse solo la SQL injection, è rozzo e forse un po’ impeciso, ma efficace nel chiarire che il sorgente aperto è uno strumento in più di attacco, non una sicurezza. E che il modello community è per sua natura una porta aperta ai malintenzionati.

Il problema è che i sostenitori dell’open, specie quelli interessati, usano argomenti come le differenze tra windows e linux come dimostrazione delle loro tesi con persone non del settore, che non hanno elementi per  contestarle.

Ma cos’è più sicuro, l’open source linux o il closed source AIX di IBM usato in tutte le banche ? L’open source MySql o il closed source Oracle ?

Riferimenti 

How Closely is Open-Source Code Examined?

Security through obscurity

Mozilla Firefox serve codice infetto

Bello Cromato

2 settembre, 2008

Il browser da cui sto scrivendo è  (che io sappia) il primo software completo open source rilasciato da Google.

Tanto per iniziare ho sbirciato nei sorgenti. Che dire, come al solito Google ha fatto un ottimo lavoro, sono puliti e ben commentati


 // Change "www." to "clients1." in the hostname. If no "www." was found, just // prepend "clients1.". const std::string base_host(base_url.host());

Ma non è solo questo, sono facilmente raggiungibili e coredati da una documentazione che fa apparire tutto facile, in perfetto stile Google.

Ma veniamo all’esperienza di utilizzo di Chrome : diversa. Non c’è niente da dire, la mancanza di bordo a desta e a sinistra, i tab in alto, i pulsanti ed i colori diversi, fanno apparire questo browser più come un sistema operativo virtualizzato che come un programma di windows. E credo che non sia un caso. 
E’ veloce e piacevole da usare. 


Da notare che è stato sviluppato con visual studio 2005 SP1 e che è disponibile solo per windows. Google come al solito si dimostra molto pragmatica e si concentra sulla piattaforma più diffusa.
Questa volta BigG non aveva scelta, lo doveva rilasciare open, visto che per scriverlo ha preso a piene mani dal lavoro di Apple e del gruppo di KDE.

A proposito di Apple, chi sa come sarà felice di vedere il suo webkit open source adotatto da tutti i concorrenti (Nokia, Android.. ) !

 

Sviluppa per me, ti prego

27 agosto, 2008

E’ celebre l’incitazione Developer ! Developer ! Developer ! di Steve Balmer, l’attuale capo di Microsoft. Forse esagerava, ma sicuramente aveva capito che la razza eletta andava coccolata, curata, attirata.

Perchè il computer è solo una scatola vuota, una scatola che ha bisogno di creatività, di tecnica e di istruzioni ben fatte, in una parola di programmi.

I programmi li scrivono i programmatori, tutti gli altri lavoratori IT sono di supporto, aiutano talvolta a mettere in contatto programmatori tecnici con gli utilizzatori (analisti), oppure danno supporto, correggono e sorvegliano programmi che non funzionano bene da soli (sistemisti), oppure si occupano di tutte quelle faccende gestionali come l’organizzazione del personale, il budget e la gestione di impresa.

Oggi però assistiamo a due diversi interessanti fenomeni :

– I linguaggi di sviluppo sono diventati gratuiti.  Un tempo, i compilatori e gli strumenti per programmare si pagavano. Adesso invece le grandi multinazionali regalano gli strumenti per scrivere applicazioni. Apple regala tutto quello che serve per scrivere applicazioni per iphone, pubblica corsi ed esempi. Lo stesso fa Microsoft e Google e SUN. Sanno che gli sviluppatori renderanno i loro sistemi vivi, e che tra loro potrebbe esserci qualcuno con l’idea giusta per la prossima killer application.  Apple in questo ha l’enorme vantaggio di aver trovato un modo per dividere gli utili con i propri sviluppatori.

– I programmi si stanno dematerializzandosi. Un programma non è soltanto fatto di BIT, per scriverlo era necessaria una azienda, apparati, computer, collegamenti costosi ed in caso di applicazioni web server, firewall ecc.. Oggi le applicazioni stanno migrando nel cloud computing. Google con il suo app engine permette di scrivere solo l’applicazione e tralasciare server, database, connessioni e quindi sistemisti ed investimenti hardware. Di più, con la pubblicità online permette di saltare i commerciali, con il checkout permette di fare vendite online senza impiegati amministrativi, con la pubblicità permette di avere un minimo di ritorno per il proprio lavoro.

Proviamo ad immaginare un futuro con il browser come unica porta di accesso ai programmi che risiedono in una cloud, immateriale, con poche grandi società che offrono risorse di computing, database e spazio e che attirano programmatori offrendo strumenti, corsi, strumenti per la vendita ecc.

In questo caso sarebbe conseguente la scomparsa o il fortissimo ridimensionamento del settore dei DataBase, dei sistemi operativi server e client, dei mail server, del ruolo e del lavoro del sistemista installatore, la diffusione di client leggeri e mobili, lo snellimento delle software house ecc.

Un futuro tutto sommato auspicabile, faccio il tifo per Google, per i web service di Amazon e per l’application store di Apple.

Ti denuncio

3 luglio, 2008

“Ti denuncio per discriminazione e offese pesanti verso un gruppo di persone che non la pensano come e te.”

“Se entro questa sera il testo di questo articolo non scompare io faccio una segnalazione sul sito della polizia postale.”

Questi sono i commenti che ricevo dopo il post Sodoma, che non contiene nessuna parolaccia o offesa o paragone, ma solo una simpatica parabola per spiegare perchè uso wordpress.

A quanto pare, per qualcuno, gli ideali di apertura e condivisione del software open non sono in contrasto con la repressione, con la censura e con le minacce.

Andiamo bene.

Sodoma

30 giugno, 2008

In un tempo lontano, vicino alla città di Sodoma, viveva un pastore retto e giusto.

Egli possedeva molte greggi e grande era la sua famiglia e pieni i suoi granai.

Un giorno, il suo carro si spezzò, allora il pastore disse al figlio :

“Tu, che sei il mio figlio maggiore, mi accompagnerai a Sodoma affiche tu veda i Sodomiti e tu mi protegga da loro.”

Giunti a Sodoma, il figlio vide la perversione dei Sodomiti e grande fu il suo sdegno.

Allora disse al padre : “Padre mio, tu hai cresciuto me e i miei fratelli nell’onestà e nella rettitudine e adesso io vedo questi uomini e grande è la loro depravazione, se userai uno dei loro carri ti renderai complice dei loro peccati e la nostra famiglia ne sarà corrotta. Lascia a loro i loro carri e costruiamocene uno da soli.”

Allora il vecchio pastore rispose : “Un carro è solo un carro, anche il precedente fu costruito da Sodomiti, ma con esso ho allevato te ed i tuoi fratelli nell’onestà e nella rettitudine.”

Il figlio allora disse : “Ho capito ! E’ un po’ come usare wordpress per parlare male dell’open source, non importa chi lo ha scritto, l’importante è che funziona bene.”

E il padre : “Esatto, non è che un programma porta sopra un marchio di infamia a secondo del produttore. Prendi linux, non è che linux è l’open source. Linux è un buon unix like, si può apprezzare ed usare linux e contemporaneamente criticare l’open”

“Ma certo, in fin dei conti linux è una cosa, l’importante sarebbe liberare i programmatori, sarebbe bello se potessero proteggere la loro creatività, se potessero essere pagati per il loro lavoro e non a ore come prostitute per l’assistenza.”

“E’ già, speriamo che i posteri imparino a non farsi sfruttare, speriamo figlio mio”

I 4 dell’Open Source

20 maggio, 2008

Il religioso : Sono quelli che ci credono davvero. Sono programmatori e scrivono o hanno scritto codice per progetti open source.

All’interno di questa categoria si presentano diverse sfumature, ma possiamo identificare 2 grandi correnti :

religioso-pragmatici (come Linus Toward ) : credono che l’open source sia il miglior modo ingegneristico di scrivere software. Prima viene il programma e poi la licenza, si tengono fuori da dispute ideologiche, per loro un programma è un programma.

religioso-talebani (come Stallman) : credono nell’indipendenza del software. Per loro il software deve essere libero, cioè si deve poter usare, studiare, modificare, copiare e ridistribuire. Che tradotto vuol dire gratis e senza copyright, se non è così ? Semplicemente non va usato, a prescindere dalla qualità.

Il Proselito : Sono quelli che seguono e aiutano i religiosi. Ci credono, ma non sanno scrivere codice e quindi al massimo fanno le iconcine e segnalano bug. Spesso si riuniscono in circoli chiamati LUG, o associazioni o altro.

Non sono molti, ma fanno un gran baccano. Sui media, sui blog, nelle commissioni parlamentari, ovunque è un fiorire di proseliti che parlano di software senza averne mai progettato uno.


Il Profittatore : E’ un dirigente, possiede una software house o è un venditore. Ha qualcosa da guadagnare dal lavoro gratuito dei programmatori. Non esita ad abbracciare la filosofia FLOSS, anche la più estrema se gli permette di aggredire il mercato e vendere dove mai venderebbe. Sa attirare la benevolenza dei proseliti e spesso degli organi di governo.

Fanno parte di questa categoria molte corporation che promuovono l’open source, ma non rilasciano i loro programmi Open. Diciamo che sostengono l’open source, ma quello degli altri !


Il Mucco : E’ un profano, non sa niente di programmazione, quando gli parli di formati aperti ti guarda come le mucche guardano un treno.

Gli puoi raccontare quello che vuoi : che i programmi li scrive la community, che sono più sicuri perchè li testano in tanti, che sarà un uomo più felice se avrà i sorgenti, che tutto il mondo sta adottando l’open source e che lui stesso è un oppresso e che vuoi siete li per liberarlo dalla schiavitù.

Solitamente quando sente la parola gratis si converte e allora cominciano i veri problemi :

Se è un utente casalingo, si pentirà rapidamente ma rimarrà dell’opinione che “è meglio“, e che “è troppo più sicuro” e altre falsità del genere, però lui intanto torna al Mac o a Windows.

Se invece è un dirigente o un imprenditore crederà di aver trovato il santo Graal del risparmio e convertirà tutta l’azienda tranne il suo portatile Macbook Air all’open source, precipitandola così nel medioevo tecnologico, rione delle consulenze infernali.

Tu chi sei ?