Как работает вирус и откуда берутся дыры в коде

Как это устроено на работе · Обновлено 18 октября 2026 · 14 мин чтения

Вирус — это обычная программа, которую кто-то запустил. Дыра — обычная ошибка в вашей программе, которой воспользовались. Ни то, ни другое не требует гения: достаточно открыть не тот файл или поверить тому, что пришло из формы. Разбираем цепочку заражения, причины дыр и правила, которые закрывают большую часть из них.

Статья для подписчиков: ниже — начало (2 из 8 разделов, около 36 % текста). Полный текст открывается по подписке.

Что ещё в этой статье

Это не страшилки про хакеров

Почти всё, что ломается, ломается не «гениальным взломом», а ошибкой, которую никто не проверил: доверили вводу, оставили открытую админку, положили ключ в код. Поэтому статья не про то, как бояться, а про то, что проверить и в каком порядке.

Вирус — это программа, а не «файл, который летает по интернету»

Пока код не выполнился, он ничего не делает. Лежит себе файл в папке «Загрузки» и совершенно безопасен. Опасным его делает запуск: двойной клик, открытый документ с макросом, установленная «бесплатная» программа, скрипт на странице или расширение браузера.

ШагЧто происходитКак это выглядит
ПопадаетФайл или код оказывается у вас на компьютеревложение в письме, «кряк» к программе, установщик с торрента, расширение браузера, чужая флешка, ссылка в мессенджере, чужая зависимость в проекте
ЗапускаетсяКод начинает исполнятьсявы сами нажали; открыли документ с макросом; браузер выполнил скрипт со страницы; сработала автозагрузка
ЗакрепляетсяПрограмма остаётся после перезагрузкипрописывается в автозапуск (реестр Windows, папка «Автозагрузка», cron на Linux), маскируется под системный процесс, копирует себя в несколько мест
Делает делоНаступает то, ради чего всё былокрадёт пароли, куки и токены; шифрует файлы и требует выкуп; майнит криптовалюту; рассылает спам; оставляет «дверь» для хозяина — бэкдор

Классические файловые вирусы, которые заражали другие программы, сегодня почти вымерли: данные дороже файлов. Поэтому чаще встречаются кража доступа и шифровальщики — им не нужно ломать вашу программу, достаточно, чтобы вы запустили их.

Почему photo.jpg.exe выглядит как photo.jpg

Windows по умолчанию прячет расширения, поэтому файл с двумя расширениями в проводнике выглядит безобидной картинкой. Один двойной клик — и запустилась программа, а не открылась фотография. Это не «глупость пользователя», а честная ловушка интерфейса: подробнее — в уроке про имя файла и расширение.

Откуда берутся дыры

Уязвимость — это не вирус и не «хакер». Это ошибка или допущение в программе, которым можно воспользоваться. Чаще всего дыру даже не взламывают: ею пользуются руками, потому что дверь оставили открытой.

ПричинаКак это выглядитПочему так вышло
Доверие вводупроверка только в браузере; запрос собирается склейкой строк; данные из формы уходят прямо в команду или в запрос«в это поле же не введут ничего плохого» — а поле видят все
Доверие чужому кодубиблиотека «для удобства», пакет с похожим названием, установка без фиксации версиичужой код получает те же права, что и ваш
Настройки по умолчаниюоткрытая админка, база доступна наружу, отладочный режим на сервере, пароль «admin»по умолчанию всё открыто, а закрывать нужно руками
Сложность и измененияновое поле добавили в одном месте, а проверку — нет; старый сценарий остался; «поправили только текст»программа меняется быстрее, чем её проверяют
Секреты в кодепароль в файле, ключ в git, токен в перепискетак быстрее — пока репозиторий не увидел кто-то ещё
Спешка«потом закроем», «выпустим как есть, потом доделаем»сроки давят сильнее, чем мысль о чужом человеке
«Работает — не трогай»два года без обновлений, а дыра в зависимости уже известнаобновление выглядит риском, а не защитой
Предположение об окружении«браузер не даст», «пользователь не подделает запрос», «этот адрес знают только свои»браузер — чужой компьютер, а адрес может открыть любой

Другие статьи раздела

Что ещё есть на сайте

Учиться

  • Уроки — Все уроки трёх траекторий: список, поиск и ваш прогресс.
  • Программирование с нуля — Python с первой команды до своего проекта: 12 модулей.
  • Интерфейсы и сайты с нуля — Кнопки, страницы и мини-игры: результат виден сразу в браузере.
  • Компьютер без страха — Файлы, браузер, пароли, мошенники, документы и деньги в интернете простыми словами. Бесплатно и без оплаты.
  • Если уже случилось — Деньги ушли с карты, пропала симка, взломали аккаунт, потерялись документы — порядок действий по шагам и куда звонить.
  • Какой компьютер нужен — Чек-лист по уровням: для учёбы ничего покупать не нужно, для своего проекта — 16 ГБ и SSD, для работы — 32 ГБ. Плюс нейросети и устаревание железа.
  • Без кода: ставить задачу — Как объяснить задачу программисту и принять работу. Кода нет ни строчки.
  • Конструктор описания задачи — Собрать описание по полям и получить готовый текст для исполнителя.

С чего начать

Потренироваться

  • Практикум: задачи из жизни — Та же команда урока — на работе, дома и в документах. 63 задачи с проверкой вывода и без регистрации.
  • Игры-тренажёры — Найти ошибку в чужом коде, прочитать, что делает программа, и увидеть, что случится, если нажать клавишу.
  • Симулятор: от задания до сдачи — Пройти путь целиком: папка, терминал, файл, сохранение, запуск, проверка по критерию приёмки. Два сценария и две системы.
  • Мастерская экрана — Проверить цвета и раскладку страницы: контраст, шаблоны, конструктор.
  • Колесо фортуны — Одна прокрутка в день: скидка на подписку или дни доступа.

Словари и юмор

Сайт, оплата и помощь

  • Родителям — Возраст, время на уроки, безопасность в сообществе, деньги и результат — что важно знать до оплаты.
  • Инструкция пользователя — Как всё устроено: уроки, кабинет, уведомления, подписка, ярлык.
  • Сообщество — Вопросы и ответы: читать можно всем, писать — после входа.
  • Подписка — Тарифы, что входит, возврат 14 дней, история платежей.
  • Помощь и поддержка — Частые вопросы и форма обращения — ответ в течение дня.
  • Отзывы учеников — Что пишут те, кто уже учится: без звёзд, с проверкой каждого текста.
  • Профиль и пароль — Имя, пароль для входа без кода, уведомления, свои данные.