Malware e architettura
Da tempo speravo di dedicare un post alla questione malware, la cui definizione è più fumosa di quanto si possa immaginare. Si è trovato in difficoltà persino il grande Mark Russinovich quando ha dovuto decidere se la protezione usata da Sony fosse un rootkit o meno. L’approccio generale su cui una buona maggioranza di persone sembra essere d’accordo è una questione praticamente tecnica.
Ad esempio se una applicazione nasconde dei file al sistema è di fatto un rootkit, indipendentemente dal fatto che l’applicazione lo faccia per il bene dell’utente o meno. Notare la sottile differenza tra “nascondere dei file al sistema” e “nascondere dei file all’utente”.
La stessa cosa si potrebbe fare per definire malware: tutto ciò che gira di “nascosto” rispetto all’utente. Wikipedia è molto chiara:
Malware, a portmanteau from the words malicious and software, is software designed to infiltrate or damage a computer system without the owner's informed consent.
Una volta definito cos’è il malware possiamo cominciare a fare una distinzione tra due tipi fondamentali di malware:
- malware che richiede l’interazione dell’utente con un inganno (clicca qui per vedere il porno)
- malware che non richiede nessuna interazione dell’utente
Questo va combinato con un’altra distinzione:
- malware che si replica
- malware “statico”
Ed infine un’altra ancora, molto artificiale ma valida:
- malware che richiede permessi amministrativi per portare a compimento la sua opera
- malware che non richiede nessun permesso speciale
- malware in grado di fare escalation di privilegi
Combinando tutte le possibili permutazioni si ottengono 12 tipi diversi di malware. Però con l’espediente della suddivisione si tratterà di capire cosa si può fare discutendo un numero inferiore di casi.
Nel caso della prima distinzione, un OS può fare ben poco. Di fronte all’intenzione dell’utente di eseguire un “free porn” il sistema non ha nessun’altra scelta che eseguire. Questo indipendentemente dal sistema. Quindi qualsiasi affermazione che *nix sia sotto questo aspetto migliore di Windows è palesemente falsa. Per il malware che non richiede nessuna interazione dell’utente (worm) si può fare qualcosa (ad esempio usando un processo di scrittura del software che riduca la possibilità di bachi wormable) ma l’utente ha ancora un grosso peso nell’ecosistema. Se non installa tutte le patch disponibili in maniera tempestiva la battaglia è persa. TUTTE le più grandi pandemie informatiche degli ultimi anni sono state causate da bachi già sistemati diverse settimane prima delle prime avvisaglie di problemi.
Anche nel secondo caso un OS può fare molto poco. L’unica strategia è quella di contenere in qualche modo l’infezione riducendo in qualche modo la superficie di attacco. In questo senso Vista/*nix è molto meglio di XP nella configurazione “standard”. Vale la pena notare che “configurazione standard” non ha niente a che vedere con le “capacità del sistema” (le tanto fomentate fondamenta). Ovvero loggarsi sotto Linux come root ha gli stessi effetti di loggarsi sotto XP come amministratore, ma con una fondamentale differenza: per XP loggarsi come amministratore è l’impostazione di default per motivi totalmente irrilevanti al contenuto di questo post. Un esempio lampante dell’impossibilità dell’OS nel limitare i danni è tutto quel malware che sfrutta le macro di Office/OpenOffice per diffondersi ad altri documenti.
Nel terzo caso però un OS ed i setting di default possono fare tutta la differenza del caso. Perché nel caso in cui il malware arrivi sul PC con l’inganno o quasi (bachi nel browser) il sistema può limitare i danni di parecchio. L’idea va all’uso di UAC (Vista/OSX/Linux) e di sandbox (IE7 su Vista, Chrome) quando si opera con applicazioni che si interfacciano con Internet, browser in primis.
Pertanto la seguente affermazione è palesemente falsa:
The Mac is designed with built-in technologies that provide protection against malicious software and security threats right out of the box.
Non solo il design di MacOS non ha niente di speciale rispetto a qualsiasi Windows/Unix/OS moderno. Ma alcuni setting di default sono molto spostati verso il massimo dell’usabilità rispetto alla sicurezza e il pensiero va a Safari in primis per svariati motivi:
- decisione di scaricare automaticamente i file sul desktop; basta scaricare una applicazione con l’icona di “My Computer” per gabbare alcuni utOnti
- decisione di scompattare automaticamente i file compressi scaricati. Basta un file .zip malizioso ed un baco nel codice di scompattamento e la remote execute è servita
- decisione di montare automaticamente i file immagine (ISO, DMG, ecc.) per lo stesso motivo di cui sopra
Questo atteggiamento ricorda tanto la funzionalità AUTORUN introdotta con Windows95: basta inserire un CD appositamente preparato per far partire l’applicazione designata. Molto comodo per gli utOnti (inserisci il CD e segui le istruzioni) ma molto molto comodo per gli scrittori di malware. Nel frattempo sono passati 13 anni e dal rilascio di Windows XP SP2 l’applicazione non parte più automaticamente senza l’intervento dell’utente. Apple con i setting di default di Safari fa quasi[1] la stessa cosa di Windows 95.
Un’ultima nota storica: il malware è cambiato tantissimo negli ultimi 25 anni. Parlare di 160 milioni di miliardi di virus oltre ad essere storicamente irrilevante è perlomeno inaccurato. Però vorrei spezzare una lancia in favore della piattaforma Apple: qualcuno dice che scrivere malware per MacOS è tecnicamente più difficile. Tale affermazione – per le mie impressioni personali – pecca per difetto. In generale scrivere software per Mac è tecnicamente più difficile e quindi lo è anche scrivere malware. Ho provato a cercare informazioni su come scrivere un Keyboard hook per Mac ed i risultati sono desolanti: non un singolo pezzo di codice che si possa copia/incollare, ma forse sono solo incapace di cercare nella maniera giusta
Rimango dell’idea che un antivirus sia inutile sia su Mac che su Windows se e solo se si usa la testa. Se si passa a Mac per smettere di usarla è un altro paio di maniche.
-quack
[1] Non ho ancora esplorato le possibilità di AutoRun di MacOS però questo sembra promettente: MacOSX does allow you to set a background image (you can even use a pdf) so you could create a nice welcome screen at least. (fonte)