La colpa è di Turing
Questi giorni ho imparato una lezione che non dimenticherò mai per tutta la vita. Ha a che fare con l'interoperabilità in sistemi complessi e su come la responsabilità possa essere inequamente distribuita. Lo faccio con due esempi.
a. Il baco dello URI handler di Firefox (e Trillian): In questo caso l'interoperabilità è tra due browser, rispettivamente IE7 e Firefox. Quest'ultimo soffre di diversi problemi tra cui il fatto che permette il passaggio di linee di comando alquanto pericolose (basta dare un'occhiata qui: http://kb.mozillazine.org/Command_line_arguments). IE7 non lo fa. Secondo qualcuno, se IE7 invoca Firefox passando una linea di comando pericolosa dovuta ad una concatenazione di stringhe non voluta, la colpa è di IE7. Lo stesso qualcuno ha proposto di disabilitare completamente gli URI handler, visto che sono pericolosi (per intenderci che brivido può essere un link ftp!). Perché non spegnere completamente Internet e andare tutti a casa? Perché in Firefox sono troppo pigri per pensare alla sicurezza (Protected Mode? Fra un anno. Forse. Revisione della command line? Che c'è da rivedere?). Almeno quegli altri hanno ammesso le loro colpe, anche se hanno dato addosso a chi ha fatto disclosure della vulnerability senza prima avvisarli (mai cominciare col mettere in pratica le elementari nozioni di sicurezza). Morale della favola: la colpa è di qualcun'altro (di IE7 che incidentalmente invoca gli URI handler in maniera identica a Firefox, di Windows, delle RFC, ecc.).
b. Il mio Network Attached Storage (d'ora in poi semplicemente NAS): il mio NAS[1] è un modello che a Settembre troverà un altro felice proprietario per diversi motivi che hanno a che fare con come il protocollo di comunicazione è stato implementato (male) su un sistema operativo non direttamente supportato. Raymond Chen fa una analisi dettagliata di una manifestazione di questo baco che non ha nessuna soluzione possibile. In pratica Windows chiede al NAS se implementa una certa interfaccia, il NAS risponde affermativamente e Windows (solo da Vista in poi) si limita ad usarla. Peccato che poi in realtà il NAS non la implementi correttamente causando non pochi grattacapi agli ignari utenti. Le soluzioni che Raymond analizza per risolvere la situazione sono le seguenti:
- Fare assolutamente niente. Il baco è nel NAS, spetta al produttore risolverlo. L'utente medio penserà che siccome non succedeva con XP il baco è di Vista.
- Windows deve cercare di capire che il NAS è bacato e avvertire l'utente. L'utente si troverà di fronte alla finestra di dialogo che dice "QUESTO NAS È BACATO: TI SCONSIGLIO DI USARLO". L'utente ovviamente penserà che è un baco di Vista (certo con XP tutto funzionava alla perfezione) mentre il produttore del NAS farà causa a Microsoft
- Vista deve dimenticarsi le nuove API e deve limitarsi ad usare le API vecchie; insomma il progresso di Windows deve essere tenuto in ostaggio da qualcuno che ha implementato (male) un protocollo Windows su una piattaforma non Windows. Come chiedere ai WebMaster di non usare HTML 3.x perché il mio browser che ho scritto in 5 minuti supporta solo HTML 1.x. I produttori di NAS veloci "ottimizzati" per Vista daranno la colpa a Vista. L'utente che ha comprato Vista per avere una rete più veloce penserà ovviamente che è un baco di Vista.
- Creare una configurazione da qualche parte che indica se usare le vecchie API. Quale valore usare di default? Se si usa "vecchie API" di default, tutti i NAS che implementano le nuove API correttamente saranno costretti ad usare le "vecchie API" più lente (si veda il punto 3.): la colpa è di Vista. Se si usa "nuova API" l'utente è costretto a capire cosa c'è che non va e come configurare il tutto correttamente quando usa il NAS. Siccome con XP tutto funzionava alla perfezione, l'utente ovviamente penserà che è un baco di Vista.
(nota: ho incorporato due opzioni proposte da Raymond in una; invito a leggere il post originale sull'argomento molto più completo del mio)
La costante di tutte queste quattro soluzioni imperfette è una sola: la "colpa" è dell'ultimo arrivato. Ovviamente una situazione del genere mette il produttore del NAS o chi arriva prima in una posizione di favore; che senso ha faticare per implementare correttamente un protocollo visto poi che l'utente medio darà la colpa a qualcos'altro? L'aveva scoperto a suo modo anche Luca. Ed infatti come volevasi dimostrare non c'è nessun aggiornamento del firmware per il mio NAS nonostante il problema sia stato correttamente risolto a monte (il NAS usa librerie software che sono state in seguito patchate per risolvere il problema, ma il produttore del NAS ovviamente se ne è disinteressato).
Un'ultima nota: questa pratica di usare librerie già pronte senza testarle a fondo (chi le scrive pensa che le testa chi le usa e viceversa) è una pratica perversa molto deleteria e porta scientificamente a diffondere i bachi molto più velocemente di quanto si diffondano le eventuali correzioni.
Anche se può sembrare così, non sto scherzando: la mia fiducia nel NAS è così bassa che ne faccio il backup periodico per evitare brutti scherzi. Per ogni file importante ho ormai tre copie: locale, NAS e backup del NAS. Ammetto che la colpa è pure un po' mia perché guardando la confezione del NAS si scopre che Vista non è neanche supportato. Alla fin fine sono rammaricato perché ho comprato un NAS per avere peace of mind, ma ironia della sorte mi sento tranquillo solo quando è idle. ![]()
La questione del NAS - a differenza della diatriba su FireFox - mi inferocisce in maniera particolare perché lavorando nel campo della backward compatibility, ho scoperto quanto ogni nuova versione di Windows tenda ad essere accomodante rispetto ad applicazioni semplicemente maleducate: figuriamoci cosa possa provare quando vedo che alcune applicazioni creano problemi totalmente irrisolvibili come quello del NAS[2] e quello che leggo in giro è totalmente approssimativo. Poi mi calmo perché penso che questo è un ciclo naturale che si ripete al rilascio di ogni nuova versione del sistema operativo più backward compatibile che c'è: neanche XP in tali occasioni così acclamato riuscì a fare di meglio, senza parlare di quello che si leggeva in giro con il rilascio del SP2.
Infine voglio fare un paio di precisazioni:
- Nessun sistema software è perfetto, meno che mai Vista. Se qualcuno leggendo quanto ho scritto è tentato di pensare ciò, consiglio immediatamente un bel giro su "I miei guai con Vista". C'è pure un post che parla di un baco nel protocollo di rete in questione che sfortunatamente non ha niente a che fare con i problemi cronici del mio NAS. Io stesso ne ho indicato un paio di bachi davvero antipatici.
- Sperare che un ipotetico SP possa risolvere un problema per sua natura irrisolvibile dimostra scarsa comprensione del problema stesso. Il baco del NAS infatti era noto ben prima del rilascio di Vista; la data del post di Raymond è 30 Marzo 2006 e il baco non ammette nessuna soluzione sul lato client che sia diversa da "la colpa è di Vista" (sempre ovviamente per l'utente medio: immagino che quello avanzato si sia già informato e stia comprando un nuovo NAS; perché il software scritto male e con intenzione presto manifesterà i suoi strali sfoderando altri bachi).
- Non è mia intenzione parlare dello specifico prodotto (che in questo post non ho neanche nominato) ma di un certo tipo di atteggiamento disdicevole che segue l'amara scoperta che il prodotto XYZ non è compatibile con il prodotto ABC
Il filo conduttore tra i due esempi è uno solo: se c'è un caprio espriatorio qualcuno ne farà uso; se non c'è qualcuno ne farà uso lo stesso da cui l'assunto che sempre secondo qualcuno è l'informatica ad essere bacata, ad aver drammaticamente fallito creando false promesse: ai buoni e volenterosi non resta che andare a casa tanto la colpa è di Turing. Ma da un post con un titolo del genere che ci si voleva aspettare? ![]()
-quack
[1] che per dirne qualcuna non supporta password più grandi di 8 caratteri, non supporta caratteri speciali nelle password e non supporta neanche file più grandi di 2GB impedendomi di fatto di fare un backup totale e tombale
[2] in la realtà la soluzione c'è: pubblicare un aggiornamento del firmware, ma per l'utente comune che ha diritto a non sapere dell'esistenza di firmware la colpa è sempre di Vista.
Potrebbero interessarti anche:
- Interessante analisi sui cursori mannari
- Windows Live Writer Post Download Plugin
- Touchdown
- Categorie di disinformatici: i ciechi
- Pensiero del giorno


Facebook,
Wikio,
Segnalo.

lunedì 23 luglio 2007 alle 11:44 PM -
"Almeno quegli altri (Trillian) hanno ammesso le loro colpe, anche se hanno dato addosso a chi ha fatto disclosure della vulnerability senza prima avvisarli (mai cominciare col mettere in pratica le elementari nozioni di sicurezza)."
Mah, guarda, qui però non gli do' tutti i torti: ok, hanno sbagliato ad implementare la command line e l'URI handler... Però una persona un attimo seria che scopre la vulnerabilità dovrebbe almeno prima avvisare, no? In fondo, nessuno è perfetto, si può sbagliare, quelli di Trillian lo hanno ammesso, ma mettersi a fare disclosure senza avvisare prima chi di dovere io lo vedo come comportamento scorretto...
Permalink
martedì 24 luglio 2007 alle 12:25 AM -
Ti do ragione, anche se penso che l'intera questione è stata gestita in maniera dilettantesca e Trillian è stata alla fin fine una vittima. Però non si trattano così i ricercatori di sicurezza: quelli poi si vendicano e passano il tempo a cercare le pulci e fare molte più disclosures
Permalink
martedì 24 luglio 2007 alle 1:23 AM -
Guarda, penso pure io che Trillian sia stata una vittima (anche se hanno sbagliato), però a volte uno si deve levare il sassolino dalla scarpa... anche se poi ti attiri le ire di chi è stato scorretto e lo sa...
Permalink
martedì 24 luglio 2007 alle 3:32 AM -
Mah, almeno adesso l'hanno risolto il baco in firefox?
Adesso ha un exploit nel password manager.
Stiamo andando un pò a donnicciole, spero si rimettano in carreggiata.
Per il NAS, io farei così: standard di base sempre attivato (con conseguente velocità lenta) e nelle opzioni, la possibilità per gli utenti avanzati di attivare diverse caratteristiche avanzate.
Penso che sia una buona cosa. Mi ricordo il plug'n'play: se non lo voglio lo disattivo, fine.
Così se ho dei problemi relativi a quella particolare feature, posso pensare di risolverli disabilitandola.
Certo, in fondo disabilitare una feature non è proprio quello che si vorrebbe, no? Dovrebbe farlo e basta. Ma se il problema si nasconde lì, deve essere possibile farne a meno.
Per quanto riguarda chi produce hardware aggiornabile via firmware, lasciamo perdere che ho esperienze raccapriccianti...
Ciao.
Permalink
martedì 24 luglio 2007 alle 10:41 AM -
Perché come pezza non si adotta per il NAS qualcosa di simile alla modalità compatibile? Quando un'applicazione (tipicamente un setup) dà un errore, mi esce scritto se voglio provare ad eseguirlo in modalità compatibile. Magari si potrebbe fare la stessa cosa col NAS, si prova ad utilizzare il protocollo più efficiente, che il NAS dichiara di supportare, ma se ci si accorge di errori, si chiede all'utente se si vuole provare la modalità compatibile, tornando alla modalità utilizzata da XP. Magari poi nelle opzioni avanzate la possibilità di attivare/disattivare manualmente queste funzioni.
Permalink
martedì 24 luglio 2007 alle 11:27 PM -
Rieccomi. Il punto è che il baco si manifesta a metà percorso. Per fare un esempio è come se un Web server fosse bacato ed il browser se ne accorgesse solo a metà quando ha cominciato già a visualizzare la pagina. Per l'utente la frittata è fatta e penserà che è il browser nuovo di zecca ad essere bacato. Dal punto di vista implementativo la soluzione non è neanche semplice. Chi se ne accorge del baco è un pezzo di codice a basso livello, il quale poi deve comunicarlo upstream fino ad explorer e questo deve poi agire di conseguenza: questo deve avvenire ad esempio via nuovo codice di errore che tutte le applicazioni scritte per XP non riconosceranno fino a nuovi aggiornamenti. Come si può vedere un inferno.
Spegnere la nuova feature di default (lasciando magari un'opzione avanzata) è la soluzione che a me piace di meno: non aiuta chi sbaglia a comportarsi meglio, ma punisce chi si comporta bene fin dall'inizio. Se tu fossi il buono (e il buono è la maggioranza delle applicazioni) ti girerebbero fortemente le scatole perché implementare un protocollo correttamente è un grosso investimento che non vuoi veder volare via per colpa di qualcuno meno corretto di te. Il parallelo tra il baco di Firefox e quello del NAS come vedi è molto consistente.
Permalink
venerdì 8 febbraio 2008 alle 12:34 AM -
uhm, quoto in pieno l'articolo....
mi chiedo se quelli di FF hanno risolto il problema...che versione era? la 2?
Per quanto riguarda il secondo problema...beh che dire, succede a tutti. Quando parlo di Linux tra alcuni miei compagni di università tutti son sempre li a dire che "Linux non è compatibile" (ebbene si, c'è gente che lo pensa ancora, i problemi ci sono ma si vive un po' meglio di qualche anno fa ;-)) ignorando completamente che il problema sono i produttori (etc etc, la storia è sempre quella :P)
Leggendo il tuo blog mi rendo conto che alcuni problemi o incompatibilità che si sono presentati non erano sicuramente voluti ma erano conseguenze del fatto che le applicaizoni erano scritte alla cavolo di cane....e in effetti la colpa se l'è beccata windows...
bye
Luca
Permalink
venerdì 8 febbraio 2008 alle 1:50 AM -
@Whitenoise:
"mi chiedo se quelli di FF hanno risolto il problema...che versione era? la 2?"
Se ti riferisci alla gestione balorda degli URI, si, hanno risolto. Mentre il baco del password manager è ancora aperto. Da 6 mesi. Un baco che fornisce login e password in chiaro. Mi chiedo ancora perchè non abbiano provato a risolverlo.
Permalink