URI è acronimo di Uniform Resource Identifier: un indirizzo che, in forma compatta, consente di identificare una qualsiasi risposta come una pagina web, un documento, un’immagine, un indirizzo e-mail e così via.
Gli URI sono definiti utilizzando una specifica sintassi, facente riferimento all’uso di differenti protocolli.
URL (Uniform Resource Locator) e URN (Uniform Resource Name) possono essere considerati sottoinsiemi di URI.
L’indirizzo https://www.ilsoftware.it
è un URI che identifica una risorsa – ovvero la home page de IlSoftware.it – e che implica la possibilità di ottenere una rappresentazione della risorsa stessa (in questo caso una serie di tag HTML che consentono di comporre la struttura della pagina principale del sito) attraverso l’uso del protocollo HTTP.
Il termine “indirizzo Internet” che molto spesso utilizziamo quotidianamente non può essere definito in modo formale: viene solitamente utilizzato, in modo inpreciso, come sinonimo per URL o URI e, generalmente, ci si riferisce all’utilizzo dei protocolli http: o https:.
Uno URN è un particolare URI che consente di individuare una risorsa mediante un nome, memorizzato in un particolare dominio denominato “namespace” (spazio dei nomi, appunto). Uno URN permette di riferirsi ad una risorsa senza dare informazioni sulla sua collocazione o sulla sua rappresentazione, differentemente rispetto a quanto visto con gli URL.
Uno URI si compone di più parti: uno schema che fornisce informazioni sul protocollo usato (ad esempio, http:, ftp:, mailto:) ed una serie di dati, aggiunti in successione, che dipendono dallo specifico schema.
Sintassi e semantica di queste ultime informazioni sono determinate dalle specifiche dello schema che viene impiegato.
Gli schemi degli URI mantenuti dallo IANA – organismo che tra l’altro si occupa dell’assegnazione di indirizzi IP a livello mondiale -, sono consultabili facendo riferimento a questa pagina.
Alcuni software possono utilizzare e registrare sul sistema altri protocolli utilizzando un proprio schema URI, ad esempio il callto: di Skype.
In queste settimane si è sollevata una polemica relativamente alle responsabilità relative a bug collegati con la scorretta gestione degli URI. In particolare, Juergen Schmidt, ricercatore presso Heise Security, ha fatto presente come secondo lui Internet Explorer 7 trasmetta URI non validi e potenzialmente pericolosi a Windows XP. In particolare, Schmidt ha spiegato come Internet Explorer 7 accetti da altre applicazioni URL contenenti il simbolo percentuale (“%”).
Il carattere percento viene utilizzato in un meccanismo di codifica quando in un URI è necessario rappresentare un carattere che assume un significato speciale in determinati contesti e che quindi creerebbe problemi. Un punto esclamativo può essere codificato, per esempio, in %21, un apostrofo in %27, i due punti con %3A.
A causa di una lacuna nella gestione degli URI, diversi ricercatori hanno verificato come, ad esempio, utilizzando un URI contenente il carattere non valido %
(mailto:test%../../../../windows/system32/calc.exe".cmd
), l’applicazione “vulnerabile” esegua un comando non richiesto dall’utente (in questo caso verrebbe avviata la Calcolatrice di Windows).
Interessate dal problema sono apparse applicazioni conosciutissime come Adobe Acrobat 8.1, Miranda 0.7 e Netscape 7.1.
Si è quindi accesa una discussione tra Microsoft, i vendor di alcune applicazioni e i ricercatori protagonisti della scoperta. Di chi è la responsabilità? Chi deve controllare che un URI sia valido e non potenzialmente nocivo?
Con un suo bollettino, da poco pubblicato online, Microsoft ammette di aver scoperto un espediente che può essere utilizzato da parte di malintenzionati per compiere azioni potenzialmente dannose sul sistema dell’utente.
Sebbene il contenuto del bollettino appaia abbastanza vago, un articolo pubblicato sul blog del Microsoft Security Response Center (MSRC) risulta decisamente più chiarificatore.
Il team di Microsoft ha dichiarato infatti di aver individuato una possibile metodologia di attacco basata sull’utilizzo di URI “malformati”: questi indirizzi vengono generalmente rigettati da Internet Explorer 6 allorquando siano ricevuti da un’altra applicazione installata su un sistema Windows XP mentre vengono invece presi in considerazione dal più recente Internet Explorer 7.
IE7 è stato sviluppato per andare “a braccetto” con Windows Vista e sfruttare il nuovo livello di protezione insito nel sistema operativo. Evidentemente misure similari non sono poi state reintrodotte per quanto riguarda la versione del browser compatibile con Windows XP.
Durante i test dei tecnici Microsoft si è provveduto ad utilizzare l’identificatore di risorsa mailto://
che è stato proprio utilizzato dal ricercatore Petko D. Petkov per eseguire codice arbitrario da file PDF. Il video sottostante, sebbene non sia qualitativamente eccellente, mostra come – aprendo due file in formato PDF – vengano eseguiti, rispettivamente, la calcolatrice di Windows ed il Blocco Note. Un aggressore, com’è ovvio, utilizzando la medesima tecnica potrebbe, anziché avviare applicazioni benigne, lanciare comandi estremamente pericolosi.
“Quando un’applicazione si trova a gestire un URI, decide autonomamente come questo debba essere trattato”, spiega il team di Microsoft. Nel caso dei protocolli considerati per anni come “sicuri” (ad esempio, mailto://
oppure http://
), le applicazioni solitamente effettuano solamente una verifica del prefisso invocando poi la funzione di Windows ShellExecute()
per la loro esecuzione. Internet Explorer 6 è stato sviluppato integrando alcune verifiche aggiuntive che permettono di “stralciare” URI sospetti o comunque contenenti caratteri speciali (come il simbolo del percento). In alcuni casi, come per l'”accoppiata” IE7-Windows XP, può accadere che i controlli non avvengano nel modo adeguato e che vengano trasmessi alla funzione ShellExecute()
URI che poi potrebbero essere tratatti come file locali, così come se fossero lanciati o comunque richiesti dall’utente.
Il team di Microsoft ha iniziato a suggerire alle varie software house (compresa, evidentemente, Adobe), di contare meno sulle funzionalità di base di Windows ed effettuare un filtraggio degli URI anche in forma autonoma.
Secondo quanto dichiarato dal colosso di Redmond, inoltre, l’azienda starebbe già lavorando per rivedere le modalità con cui la funzione ShellExecute()
gestisce gli URI in modo tale che i controlli effettuati siano più severi.
Quello degli URI “maligni”, collegato all’utilizzo di una o più applicazioni che non ne prevedono un’adeguata gestione, è purtroppo destinato a diventare uno dei grimaldelli preferiti per aggressori e sviluppatori di malware.