Suas perguntas específicas
I understand that I obviously can get a virus by downloading and executing a .exe in Windows but how can I get a virus just by accessing a website ?
Seu navegador está executando código o tempo todo (é feito de código). Quando ele faz downloads de páginas da web, esse código está baixando e exibindo dados arbitrários (pixels, caracteres, etc.).
O código também é dado (no nível do processador).
Como o código é dado, se o seu navegador tentar executar os dados (independentemente da extensão ou formato do arquivo), ele poderá ser executado (se for criado corretamente).
Normalmente, o seu navegador não será tão tolo a ponto de tentar executar dados aleatórios baixados. No entanto, isso pode acontecer.
Uma maneira de fazer isso é formar os dados de tal maneira que, quando lidos, eles "vazarão" e sobrescrevam os dados que compõem o programa executável do navegador. Isso requer que o navegador tenha um bug (mais comumente neste caso, permitindo um excesso de buffer ).
Seu navegador também executa programas em cima de páginas da web. Javascript, como você mencionou, é um desses tipos de código. Mas existem dezenas. ActiveX, Flash, add-ons, scripts grease monkey, etc., são todos códigos que você está executando enquanto visita páginas web. Este código pode conter erros que causam calções de segurança.
Do these viruses attack both Windows, Mac and Linux users or are Mac/Linux users immune ?
Nenhuma plataforma que usamos é completamente imune a bugs, porque todos eles estão usando processadores que tratam dados como código. É assim que funciona a nossa arquitetura de computadores existente.
A razão para este mito é que Mac e Linux têm taxas de adoção muito menores em comparação com as máquinas Windows (no nível de desktop). Portanto, o software de desktop nessas máquinas não é um alvo tão comum para os criadores de vírus.
Os vírus não ocorrem por mágica, ou pela evolução da situação (como fazem os vírus biológicos). É um software escrito por indivíduos ou equipes de desenvolvedores. E eles querem atingir a maior fatia de mercado, da mesma forma que os fornecedores regulares de software.
Quanto a se um vírus pode ter várias plataformas; Todos os navegadores estão executando códigos diferentes, então terão diferentes bugs (até mesmo o mesmo navegador em diferentes plataformas). Mas existem algumas bibliotecas de código que são compartilhadas entre plataformas. Se essa biblioteca contiver o bug, é possível que a exploração possa existir em várias plataformas.
Mas, dependendo do tipo de ataque feito, um vírus criado para um Mac não-Intel pode não funcionar em um Mac Intel, e vice-versa, porque eles têm processadores diferentes. Para processadores diferentes, os dados que representam o código têm um formato diferente.
Quando você está falando de uma máquina virtual ou linguagem de script, os ataques podem ser independentes da plataforma. Isso nos leva à próxima pergunta ...
Are the viruses programmed in JavaScript?
Alguns vírus são. As informações que mencionei acima (sobre explorações de buffer overrun) normalmente seriam usadas como um ataque fora do Javascript, mas poderiam se aplicar igualmente a um vírus criado para atacar uma exploração em um interpretador de Javascript.
O Javascript também terá seu próprio conjunto de explorações, em um nível operacional que está acima do buffer overruns. Há toda uma série de maneiras de atacar qualquer parte do software. Quanto maior o software (linhas de código), mais variedades de entrada do usuário (nesse caso, tipos de código) é provável que recebam e mais erros podem conter.
Além disso, quanto mais exposto um software em execução (por exemplo, software executando um servidor), mais vulnerável é o ataque.
Em geral, isso é chamado Attack Surface
Explorações em geral
A Microsoft tem um mnemônico para os tipos comuns de exploits, e todos eles têm suas próprias propriedades interessantes e diferentes níveis de software que podem atacar - STRIDE , que significa:
Spoofing (of user identity)
Tampering
Repudiation
Information disclosure (privacy breach or Data leak)
Denial of Service (D.o.S.)
Elevation of privilege
Alguns deles são mais propensos a serem usados em um ataque baseado em Javascript do que outros, alguns em servidores, alguns em arquivos de dados (como imagens).
Mas a segurança é um campo grande e em evolução. Existe muita informação para responder completamente a todas as suas perguntas.