Im Allgemeinen funktionieren diese Vektoren, indem sie Schwachstellen in der Software ausnutzen, die zum Lesen/Darstellen von HTML, CSS und JavaScript verwendet wird. In einer perfekten Welt mit perfekt sicheren Browsern/E-Mail-Programmen mit perfekten Sandboxes hättest du recht, dass das Anzeigen einer Seite oder einer E-Mail keinen Virus auf deinem Computer laden könnte. Aber wir leben nicht in dieser perfekten Welt.
Ein Beispiel ist die Schwachstelle "Buffer Overrun": Der Angreifer investiert eine enorme Menge an Zeit und Aufwand, um festzustellen, dass ein bestimmtes Programm einige Ressourcen (z.B. einen CSS-Cursor) in einen Puffer lädt, ohne zu überprüfen, ob die Ressource klein genug ist, um in den Puffer zu passen. Das Programm schreibt also Bytes über das Ende des Puffers hinaus. Puffer befinden sich häufig auf dem Stack, und wenn man sie überschreibt, kann man Dinge wie die Rückgabeadressen für Funktionsaufrufe überschreiben. Wenn man die Daten genau richtig gestaltet, kann man eine Rückgabeadresse dazu bringen, zu Anweisungen in den Daten der Ressource zu springen, die geladen wird. Ab diesem Zeitpunkt sind alle Wetten offen, der Angreifer kann beliebigen Maschinencode ausführen, der in dieser Ressource eingebettet ist.
Weitere Vektoren beinhalten Schwachstellen in der Sandbox, in der das JavaScript auf der Seite ausgeführt wird.