Prima di rispondere alla tua domanda alcuni chiarimenti:
Prima di tutto ricordiamo che i virus non rappresentano la totalità dei software malevoli (aka
malwarea) che infestano i computer, anzi negli ultimi tempi stanno scomparendo quasi del tutto in favore di altri tipi di malwares.
Un
virus è essenzialmente un
programma che si replica all'interno di files o altri programmi utente permettendogli di duplicarsi e diffondersi come un normale virus umano (
https://it.wikipedia.org/wiki/Virus_(biologia) ). I virus utilizzano tecniche di code-injection (se attaccano eseguibili) oppure sfruttano vulnerabilità delle app per diffondersi tramite file non eseguibili (basti pensare ai MacroVirus per Microsoft Word ed Excel dei primi anni 2000 oppure ai più recenti che si trasmettono tramite normali file PDF o anche immagini). Un
worm è molto simile al virus ma a differenza di esso si diffonde tramite lo stesso sistema operativo (il famoso "virus" che infettava le pendrive trasformando i files in collegamenti in realtà era proprio un worm che sfruttava le pendrive per diffondersi infettando al contempo ogni PC in cui venivano inserite le pendrive infette). Sia i virus che i worms hanno come scopo principale la loro duplicazione e propagazione, quindi devono per forza sfruttare delle vulnerabilità di altri programmi esistenti, per questo di solito vengono scritti interamente o solo in parte in un qualunque linguaggio compilato (quasi sempre C o assembly, ma anche C++).
Un
trojan horse (quello che credo tu intenda come virus) non ha come scopo principale la sua diffusione a differenza di virus o worm, al contrario deve
stabilirsi ed occultarsi all'interno del computer per rubare informazioni e/o provocare altri danni al computer vittima. Infatti questo tipo di malvare nella
maggior parte dei casi viene inviato tramite mail infette sfruttando eventualmente qualche vulnerabilità del sistema per occultarsi all'interno del sistema ospite. A questa tipologia appartiene la maggior parte dei malware oggi in circolazione (rootkit, ramsonware, ...) e possono essere scritti in quasi qualunque linguaggio di programmazione.
Un
attacco XSS è un pezzo di codice malevolo scritto direttamente sui siti, per questo viene scritto quasi sempre in JavaScript.