Il blog di Gianni Giaccaglini

Blog su VBA e VSTO
Gianni Giaccaglini

My Links

News

NB - V. anche gli ARTICOLI (in fondo a questa barra)
Solo quesiti validi a: giannigiac@tin.it
Il mio Best seller su VBA
(v. www.hoepli.it)


Il mio ultimo libro su Open XML
(v. www.FAG.it):



La mia nipotina ELISA

Foto con dedica a ME di
Bill Gates giovanissimo
nei mitici anni 80!

Categorie Post

Categorie Articoli

Archivio

Immagini

Blog Stats

Istruzione VBA KILL. Pericolosa? Sì ma non è una falla...

Dibattito sull’istruzione Kill

La possibilità di utilizzare in una macro VBA di Excel o Word un’istruzione come Kill indicata nel mio testo Excel e Office VBA (Ed. Hoepli) su computer differenti dal proprio ultimamente mi è stata messa in dubbio da diversi interlocutori. Uno di costoro si è addirittura scandalizzato dichiarando che “se fosse vero Microsoft avrebbe ammesso la presenza di una falla clamorosa nel VBA!”.

Gente ma non avete mai sentito parlare di “virus da macro” contro i quali i produttori di antivirus promettono protezioni adeguate? Perché mai, se il rischio non ci fosse? E come si spiega la creazione, dopo Office 2007, di file di estensione diversificata – xlsx/xlsm, docx e docm? La cosa assicura che quelli senza la m finale sono privi di macro ma se si apre un modello Excel o un documento Word del secondo tipo nulla garantisce (salvo azioni più o meno miracolose degli antivirus, sempre che installati) che un’istruzione criminosa non venga eseguita, magari automaticamente e a tradimento all’apertura del file (macro di auto avvio Document_Open in Word, Workbook_Open in Excel). Per non parlare di file xls e doc dotati cioè del formato precedente, tuttora prevalenti.

Un’obiezione più sensata (ma solo in apparenza)

Mi è pervenuta recentemente. La riporto direttamente qui sotto, in corsivo, alternando le mie controdeduzioni in carattere normale.

Sembrerebbe che Vba e il mondo Excel permettano di creare magari casualmente e senza volerlo virus che a questo punto avrebbero già messo in ginocchio l'informatica. Infatti sembrerebbe che l'istruzione scritta sul mio computer per fare un po’ di pulizia da vecchi file finirebbe per diventare un virus se passato al mio vicino di casa.

Nell'era della comunicazione globale ciò risulterebbe una catastrofe.

Secondo me certe istruzioni potenzialmente dannose come Kill o analoghe funzionano solo se il loro autore e l'amministratore del sistema coincidono. Così se le eseguo sul computer di casa mia funzionano, ma se le metto in un file excel e le passo ad un amico e lui le fa girare sul proprio computer non sortiranno nessun effetto sulla sua macchina perché quel file non ha diritti amministrativi sulla macchina del mio amico.

Purtroppo non è come lei spera (o si illude?). Non escludo (ma ne dubito assai) che i sistemi connessi in rete possano avere qualche protezione intrinseca del tipo che ipotizza, ma su PC normali l'istruzione di eliminazione file sembra proprio che funzioni tranquillamente. L'ho verificato sulle due macchine che ho in casa, dotate per giunta di s.o. differenti, Win XP e Win 7 addirittura con una chiavetta USB sulla quale ho creato una directory fasulla E:\Uccidi, contenente un file Kill.xls nella radice E: più diversi altri archivi Excel in E:\Uccidi. Orbene l'istruzione Kill "E:\Uccidi\*.*" compie regolarmente la sua missione omicida in entrambi i computer. E con file "presi" tanto dal primo che dal secondo computer.

Il punto è che, per quanto perigliosa, Kill è un'istruzione come tante, e limitarne l'utilizzo creerebbe solo confusioni. Anche perché sarebbe sempre possibile anche dall'umile VBA accedere a DLL di livello più basso che fanno altrettanto.

NOTA – Beninteso stiamo parlando di archivi normali, ossia la maggioranza. E quelli di sistema? Chi ne ha voglia verifichi se sono protetti contro la cancellazione (nel qual caso temo che si possa sempre sproteggerli anche con del codice...).

Il problema mi sembra di capire sta proprio nel muoversi all'interno di una penna che il sistema non riconosce come un hard disk di sua proprietà ....

Provi ad "aggredire" direttamente i file di un pc (c:\percorso) con la kill creata in un altro pc ... È lì che secondo me si perdono i diritti di amministratore....D'altronde se si entra nel profilo guest e da lì si lancia una Kill si viene immediatamente bloccati, a dimostrazione di quanto sostengo.

A parte il fatto che un'insidia proveniente da una banale chiavetta sarebbe comunque una falla imbarazzante, secondo il suo punto di vista, ..."vista" la sua ostinazione ho fatto la prova copiando il file omicida nella radice del disco C: del mio secondo PC. Esso ammazza tranquillamente e senza proteste tutti i file di una C:\percorso, riempita con file sia del primo che del secondo PC, nuovi o vecchi.

Riepilogando, sono due le cose da puntualizzare:

1) gli archivi NON recano nessuna traccia relativa al PC ove sono stati creati e comunque Windows, né credo altri sistemi operativi, fanno distinzioni sull’origine dei file (sarebbe troppo complesso e fonte di confusione);

2) il profilo Guest la trae in inganno; esso è relativo a un ESTRANEO cui pertanto sono vietate operazioni varie (*), ma noi stiamo parlando dell'utente "legittimo", il quale può fare quello che vuole (ci mancherebbe!), a suo rischio e pericolo.

NOTA (*) Anche la copia di file, nei sistemi aziendali ben protetti (ma ci sono sempre le spie e/o gli impiegati "venduti" che cedono le password, perché contro la disonestà non c'è difesa...)

Sia dia pace: nihil novi sub sole e la storia, se riflette, appartiene ai normali casi dell'esistenza. Pensi ai coltellacci da cucina. Le cronache sono piene di uxoricidi o, semplicemente, infortuni compiuti con tale strumenti, indispensabili a macellai come a normali massaie. Sarà opportuno nasconderli ai fanciulli ma di più non si può fare...

Già che ci sono, le descrivo a parole un possibile procedimento maligno che trasforma in spazzatura un certo MioBellArch, utilizzando due file gemelli Spazz e SpazzBis (contenenti porcherie o, magari, file .xls virali):

1. Rinomina MioBellArch => MioBellArchBis

2. Elimina MioBellArchBis (addio, mio bell’addio!)

3. Rinomina Spazz => MioBellArch ("risuscitato” come spazzatura!)

4. Copia SpazzBis => Spazz

Ciclando il procedimento in tutti gli archivi di una o più directory o il disastro sarà completo. Per carità che NESSUNO lo metta in atto!

Sarebbero poi da considerare le insidie facilmente inseribili nelle routine di Excel relative a eventi come Change  o SelectionChange. Una macro innocua ma fastidiosa (e facilmente implementabile) potrebbe essere la seguente:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim Insulti, NumInsult As Integer
    Insulti = Array("Scemo!", "Deficiente!", "Vergognati!")
    NumInsult = UBound(Insulti) + 1
    MsgBox Insulti(Int(Rnd * NumInsult))
    ActiveCell = Insulti(Int(Rnd * NumInsult))
End Sub

che pgni volta che il malcapitato seleziona un'altra cella lo tormenta con messaggi insultanti che vanno anche a sporcare la cella attiva. Anche qui mi raccomando: non speditala nemmeno al vostro capo più antipatico...  

NOTA. A volte a me, come ad altri, è capitato di non ricevere e/o di non riuscire a recapitare attachment xls, anche privi di macro. Si tratta palesemente dell’intervento del firewall di un server di posta vicino o remoto, un comportamento censorio antipatico quando idiota. Infatti basta rinominare l’estensione in .zip...

Considerazioni eretiche sugli antivirus

Qui sotto incollo infine una mia replica a un lettore che aveva sollevato lo stesso angoscioso dubbio.

L’istruzione VBA Kill non rappresenta una falla di Windows. Tutti i sistemi operativi hanno istruzioni del genere che sono rispecchiate dai vari linguaggi di programmazione. Eliminarle equivarrebbe a una "censura" che limita le possibilità del s.o. come degli sviluppatori. E ce ne sono altre, meno evidenti, ma ancor più insidiose, ad esempio quelle che sostituiscono con file di contenuto fasullo degli archivi più o meno importanti (catalogati come "sensibili", ovvero vitali per un utente o un'intera azienda).

Il punto è che è l'INFORMATICA E' FRAGILE PER SUA NATURA, altrimenti come potrebbero esistere i virus e il malware? Quanto agli antivirus, si tratta di arnesi che fanno molte promesse, mantenendone pochissime, come dimostrano le ultime inchieste che sanciscono in modo impressionante il loro fallimento. La balla più clamorosa è il vanto dei sistemi "proattivi" o "preventivi", e il caso di istruzioni palesemente pericolose ma che nessun antivirus rileva è solo uno dei tanti. Restando al tema di questo dibattito, basta creare un file xls dotato di macro di auto avvio con eloquenti istruzioni Kill e sottoporlo a un antivirus per rendersi conto che... non fa una piega.

A un'obiezione del genere produttori titolati mi hanno replicato che "prevedere tutto sarebbe troppo costoso e fonte di FALSI POSITIVI". Sarà anche vero ma la conseguenza è che il lavoro principale di tali prodotti consiste nel catalogare le cosiddette "firme" di virus GIA' SCOPERTI, come dire chiudere la stalla quando i buoi sono scappati.

A mio personale parere, infine, almeno per gli utilizzatori singoli ,di fatto i rischi sono esagerati (dalla non disinteressata propaganda dei vari Simantec, Kasperski, McAfee ecc.). Occorre e basta una grande prudenza, eliminando e-mail sospette, visitando siti sicuri e così via. A fronte della scarsa o nulla protezione che tali prodotti offrono rispetto a nuovissimi attacchi nonché del fastidio che danno (rallentamento all'avvio per caricare vagonate di nuove firme - sospetto che alcune siano inventate... -., segnalazione di falsi positivi) e del loro COSTO, io ho deciso di non usarli più!

Ovviamente non sto incitando nessuno a seguirmi su questa strada. Faccia ognuno come

crede e... preghi la Madonna.

 

?>

?>

?>

posted on venerdì 11 marzo 2011 11.22