Ваші конкретні запитання
Я розумію, що я, очевидно, можу заразитись вірусом, завантаживши та виконавши .exe в Windows, але як я можу отримати вірус, просто зайшовши на веб-сайт?
Ваш браузер постійно виконує код (він складається з коду). Під час завантаження веб-сторінок цей код завантажує та відображає довільні дані (пікселі, характеристики тощо).
Код - це також дані (на рівні процесора).
Оскільки код - це дані, якщо ваш браузер намагається виконати дані (незалежно від розширення чи формату файлу), він може фактично запуститися (якщо правильно створений).
Зазвичай ваш браузер не буде настільки нерозумним, щоб спробувати запустити випадкові дані, які він завантажив. Однак це може статися.
Один із способів зробити це - сформувати дані таким чином, що при прочитанні вони "просочуться" та перезапишують дані, що становлять виконувану програму браузера. Це вимагає, щоб у веб-переглядача з'явилася помилка (найчастіше в цьому випадку, допускаючи перевищення буфера ).
Ваш браузер також запускає програми на вершині веб-сторінок. Як ви вже згадали, Javascript є одним з таких типів коду. Але є десятки. ActiveX, Flash, додатки, мастильні сценарії мавп тощо - це все коди, які ви виконуєте під час відвідування веб-сторінок. Цей код може містити помилки, які спричиняють порушення безпеки.
Ці віруси атакують і користувачів Windows, Mac та Linux, або користувачі Mac / Linux захищені?
Жодна платформа, яку ми використовуємо, не захищена від помилок, оскільки всі вони використовують процесори, які трактують дані як код. Так просто працює наша існуюча архітектура комп’ютера.
Причиною цього міфу є те, що Mac та Linux мають значно нижчий рівень прийняття порівняно з машинами Windows (на робочому столі). Тому програмне забезпечення для настільних ПК на цих машинах не є настільки поширеною метою для виробників вірусів.
Віруси не трапляються за допомогою магії чи еволюції подій (як це роблять біологічні віруси). Це програмне забезпечення, написане окремими особами або командами розробників. І вони хочуть орієнтуватися на найбільшу частку ринку, як це роблять звичайні постачальники програмного забезпечення.
Що стосується того, чи може один вірус націлити на кілька платформ; Усі браузери мають різний код, тому будуть різні помилки (навіть один і той же браузер на різних платформах). Але є деякі бібліотеки коду, які спільно використовуються на різних платформах. Якщо така бібліотека містить помилку, можливо, експлуатація може існувати на декількох платформах.
Але, залежно від типу атаки, вірус, написаний для не-Mac Mac, може не працювати на Intel Mac, і навпаки, оскільки вони мають різні процесори. Для різних процесорів дані, що представляють код, мають різний формат.
Якщо ви говорите про віртуальну машину чи мову сценаріїв, атаки можуть бути незалежними від платформи. Це призводить нас до наступного питання ...
Чи програмуються віруси в JavaScript?
Деякі віруси є. Інформація, яку я заявляла вище (про подвиги буфера), зазвичай використовується як атака за межами Javascript, але однаково може бути застосована до вірусу, створеного для атаки на експлуатацію в інтерпретаторі Javascript.
У Javascript також буде власний набір подвигів на робочому рівні, який перевищує перевищення буфера. Існує маса способів атаки на будь-яку частину програмного забезпечення. Чим більше програмне забезпечення (рядки коду), тим більше різновидів введення користувачем (у цьому випадку типів коду) воно, ймовірно, отримує, і тим більше помилок воно може містити.
Крім того, чим більше піддається дії програмного забезпечення (наприклад, програмне забезпечення, на якому працює сервер), тим більш вразливим є атака.
Взагалі це називається Attack Surface
Подвиги взагалі
Корпорація Майкрософт має мнемонічний характер для поширених типів експлуатації, і всі вони мають свої цікаві властивості та різні рівні програмного забезпечення, на яке вони можуть атакувати - STRIDE , який розшифровується як:
Spoofing (of user identity)
Tampering
Repudiation
Information disclosure (privacy breach or Data leak)
Denial of Service (D.o.S.)
Elevation of privilege
Деякі з них швидше використовуються в атаці на основі Javascript, ніж інші, деякі на серверах, деякі на файлах даних (наприклад, зображення).
Але безпека - це велике і розвивається поле. Дійсно занадто багато інформації, щоб повністю відповісти на всі ваші запитання.