Il verso di scrittura usato come vettore di attacco

La diffusione dei computer al di fuori degli Stati Uniti e dell’Europa occidentale aveva iniziato a porre il problema degli alfabeti non latini.

La soluzione a questo problema si chiama Unicode, un sistema di codifica dei caratteri che dovrebbe permettere, nel lungo termine, di mappare tutti gli alfabeti passati e presenti della Terra. La codifica Unicode prevede anche uno spazio dedicato, la Private Area, che può essere utilizzato per mappare alfabeti di fantasia, come, ad esempio, il klingon.

Per poter mischiare vari tipi di alfabeti o per soddisfare le necessità di alfabeti che, come l’arabo, hanno una parte scritta verso sinistra e una parte verso destra, Unicode prevede alcuni caratteri di controllo che segnalano il cambio di verso di scrittura.

Tutto bene, finché il cambio di verso non viene utilizzato come vettore di attacco per costringere l’utente ad aprire quello che lui crede essere un file di dati, mentre, in realtà, è un eseguibile.

Questo tipo di attacco funziona solo con Windows; altri sistemi operativi utilizzano dei metadati del file per discriminare i file di dati da quelli eseguibili. Windows, invece, si basa sugli ultimi quattro caratteri del nome del file, la cosiddetta estensione, un termine coniato nella notte dei tempi dell’informatica.

Uno dei caratteri di controllo di Unicode è RTLO (Right To Left Override, 0x202e), che forza, da quel punto in avanti, la scrittura verso sinistra.

Immaginiamo di avere un file che si chiama COD.OPPIP.EXE, a tutti è chiaro che si tratta di un file eseguibile.

Ma se come primo carattere del nome del file viene inserito il codice Unicode RTLO, il nome sarà {RTLO}COD.OPPIP.EXE, ma Windows interpreta il comando RTLO e il nome del file visualizzato sarà EXE.PIPPO.DOC

Naturalmente il sistema operativo continua a trattare quel programma come un eseguibile, ma l’utente lo crede un documento, specialmente se chi ha creato l’eseguibile ha avuto l’accortezza di assegnargli un’icona analoga a quella del documento con cui viene mascherato il file.

Ci sono dei fattori mitiganti, quale, per esempio, il fatto che l’attacco si basa sul nome del file visualizzato, non su quello effettivo; quindi i sistemi di posta elettronica che utilizzano l’estensione per discriminare il tipo di un file riescono comunque a bloccare l’eseguibile.

Al contrario, se un eseguibile mascherato in questo modo venisse passato su una chiavetta USB, un utente poco accorto potrebbe non accorgersi che Windows riconosce il file come eseguibile. (via Norman, dc414 [PDF])


Pubblicato

in

da

Tag:

Commenti

4 risposte a “Il verso di scrittura usato come vettore di attacco”

  1. Avatar alberto
    alberto

    Vorrei capire meglio come si fa a sfruttare questa debolezza, potreste illustrare un esempio? Perchè cercando di modificare il file con l’hex non trovo la parte offset della modifica.

    1. Avatar Luigi Rosa

      Gli esempi sono nei link citati a fine articolo.

      Per ricreare il problema avrei dovuto creare con un programma un file nel cui nome c’era il codice RTLO e, sono sincero, non avevo voglia. 😉

      Non e’ possibile introdure quel codice da Gestione Risorse, che io sappia, bisogna crearlo con un programma ad hoc.

  2. Avatar afullo

    Naturalmente solo il nome visualizzato cambia, anche nella colonna “tipo di file” la denominazione risulta essere quella giusta (“Applicazione” e non qualcosa di altro), o sbaglio?

    Io tra “icone”, “elenco” e “dettagli” ho sempre preferito la terza visualizzazione, se già solo gli utenti facessero uso di quella, plausibilmente si eviterebbe una certa percentuale di questi incidenti…

    1. Avatar Luigi Rosa

      Esatto. Il tipo di file e’ “Applicazione” anche se applicazione non sembrerebbe. Il sistema operativo e la shell, ovviamente, riconoscono il file come applicazione, anche perche’ altrimenti non potrebbero eseguirlo.

      Ecco perche’ nell’ultima frase ho messo “poco accorto”. 😉

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *