Le tue domande specifiche
Capisco che ovviamente posso ottenere un virus scaricando ed eseguendo un file .exe in Windows, ma come posso ottenere un virus accedendo a un sito Web?
Il tuo browser esegue codice continuamente (è fatto di codice). Quando scarica pagine Web, quel codice scarica e visualizza dati arbitrari (pixel, caratteri, ecc.).
Il codice è anche dati (a livello di processore).
Poiché il codice è un dato, se il tuo browser tenta di eseguire i dati (indipendentemente dall'estensione o dal formato del file), potrebbe effettivamente essere eseguito (se realizzato correttamente).
Normalmente il tuo browser non sarà così sciocco da provare a eseguire dati casuali scaricati. Tuttavia, questo può succedere.
Un modo per farlo è quello di formare i dati in modo tale che, quando letti, "filtrino" e sovrascrivano i dati che compongono il programma eseguibile del browser. Ciò richiede che il browser abbia un bug (più comunemente in questo caso, consentendo un sovraccarico del buffer ).
Il browser esegue anche programmi nella parte superiore delle pagine Web. Javascript, come hai detto, è uno di questi tipi di codice. Ma ce ne sono dozzine. ActiveX, Flash, componenti aggiuntivi, script Grease Monkey, ecc. Sono tutti codici che stai eseguendo mentre visiti le pagine web. Questo codice può contenere bug che causano problemi di sicurezza.
Questi virus attaccano sia gli utenti Windows, Mac e Linux o gli utenti Mac / Linux sono immuni?
Nessuna piattaforma che utilizziamo è completamente immune ai bug, poiché utilizzano tutti processori che trattano i dati come codice. Questo è semplicemente il modo in cui funziona la nostra architettura informatica esistente.
La ragione di questo mito è che Mac e Linux hanno tassi di adozione molto più bassi rispetto ai computer Windows (a livello desktop). Quindi il software desktop su queste macchine non è un obiettivo così comune per i produttori di virus.
I virus non si verificano per magia o per evoluzione dell'occorrenza (come fanno i virus biologici). È un software scritto da singoli o team di sviluppatori. E vogliono raggiungere la più grande quota di mercato, allo stesso modo dei normali venditori di software.
Per quanto riguarda se un virus può colpire più piattaforme; Tutti i browser eseguono codice diverso, quindi avranno bug diversi (anche lo stesso browser su piattaforme diverse). Ma ci sono alcune librerie di codice condivise tra piattaforme. Se tale libreria contiene il bug, è possibile che l'exploit possa esistere su più piattaforme.
Ma, a seconda del tipo di attacco effettuato, un virus scritto per un Mac non Intel potrebbe non funzionare su un Mac Intel e viceversa, poiché hanno processori diversi. Per processori diversi, i dati che rappresentano il codice hanno un formato diverso.
Quando si parla di una macchina virtuale o di un linguaggio di scripting, tuttavia, gli attacchi potrebbero essere indipendenti dalla piattaforma. Questo ci porta alla prossima domanda ...
I virus sono programmati in JavaScript?
Alcuni virus lo sono. Le informazioni che ho dichiarato sopra (sugli exploit di sovraccarico del buffer) verrebbero normalmente utilizzate come attacco al di fuori di Javascript, ma potrebbero ugualmente applicarsi a un virus creato per attaccare un exploit in un interprete Javascript.
Javascript avrà anche una propria serie di exploit, a un livello operativo superiore ai sovraccarichi del buffer. Esistono molti modi per attaccare qualsiasi software. Più è grande il software (righe di codice), più varietà di input dell'utente (in questo caso, tipi di codice) è probabile che riceva e più bug può contenere.
Inoltre, più esposto è un software in esecuzione (ad esempio software che esegue un server), più è vulnerabile agli attacchi.
In generale, questo si chiama Attack Surface
Sfrutta in generale
Microsoft ha un mnemonico per i tipi di exploit comuni e tutti hanno le loro proprietà interessanti e diversi livelli di software che possono attaccare: STRIDE , che significa:
Spoofing (of user identity)
Tampering
Repudiation
Information disclosure (privacy breach or Data leak)
Denial of Service (D.o.S.)
Elevation of privilege
Alcuni di questi hanno maggiori probabilità di essere utilizzati in un attacco basato su Javascript rispetto ad altri, alcuni sui server, altri sui file di dati (come le immagini).
Ma la sicurezza è un campo grande ed in evoluzione. Ci sono davvero troppe informazioni per rispondere completamente a tutte le tue domande.