Два дня, которые потрясли компьютерный мир
Системным администраторам не привыкать работать, когда все спят. Ночь со второго на третье ноября 1988 года выдалась тяжелой для администраторов ARPANET — прообраза современного интернета. Она была создана под эгидой Министерства обороны США и соединяла в основном компьютеры, установленные в научных институтах. Вечером 2 ноября исследователи, работавшие на подключенных к сети компьютерах, заметили неладное.
Перезагрузки компьютерам не помогали — при повторном запуске копий вредоносной программы становилось еще больше. К утру зараженными оказались 7000 компьютеров — десятая часть сети ARPANET на тот момент. Компьютерные специалисты были в шоке: систему пытались взломать уже не в первый раз, да и само понятие компьютерного вируса к тому моменту уже прочно закрепилось в лексиконе. Но атаки подобных масштабов сеть еще не испытывала.
В это время 22-летний аспирант Корнеллского университета Роберт Моррис пытался при помощи друга разослать ученым анонимное письмо с описанием механизма работы вируса и рекомендациями, как от него защищаться. Именно Моррис был создателем вируса, и явно мог бы его «усмирить». Но вот какая ирония — простая программа не позволила своему творцу этого сделать.
Научное любопытство
Сам Моррис так и не смог позже внятно объяснить, зачем он это сделал. Скорее всего, сыном известного криптографа и компьютерного специалиста двигало научное любопытство. «Червь Морриса», как потом назвали программу, не должен был «подвешивать» ARPANET. Вирус задумывался как безобидный компьютерный эксперимент, proof-of-concept, способ указать специалистам, что их сеть не так уж и хорошо защищена.
Компьютерный червь не содержал в себе никакой смысловой нагрузки и не должен был влиять на работу сети. Все, на что был рассчитан вирус, — копировать самого себя и передавать на другие машины. Почти как вирус простого герпеса: есть у многих, но люди с нормальным иммунитетом его вовсе не замечают.
Что же пошло не так?
Как это работало
Для распространения своей программы Моррис решил использовать уязвимости в Sandmail и Fingerd. Первый — агент для передачи почтовых сообщений, вторая — программа, запускаемая операционной системой UNIX и отвечающая на запросы о действиях пользователя (например, когда тот последний раз регистрировался в сети). Также вирус передавался при помощи методов rexec и rsh, позволяющих управлять удаленным компьютером. В этом случае для получения доступа к другой машине червь использовал простой, но изящный метод перебора паролей.
Кроме того программа пользовалась определенными трюками, которые должны были затруднить специалистам по компьютерной безопасности обнаружение и обезвреживание вируса. Например, после запуска она удаляла свой исполняемый файл и отключала сообщения об ошибках. Также родительский поток выполнения «Червя Морриса» раз в несколько минут создавал дочерний поток, а сам отключался — благодаря этому в списке процессов регулярно обнулялось время работы программы. Ну и вдобавок ко всему червь умел маскироваться под другие, «здоровые» процессы.
Что пошло не так
Поскольку Моррис предполагал, что его программу все же будут обнаруживать и обезвреживать, то снабдил ее простым методом самозащиты. Червь с определенной периодичностью перезаписывал себя, создавая копию. Делал он это каждый раз, когда попадал на новый компьютер, а затем по определенному расписанию.
Именно в этом механизме и крылась допущенная Моррисом ошибка. Установленный период размножения был слишком коротким, и в результате программа начала создавать избыточное количество копий. Распространение программы приобрело лавинообразный характер, и эксперимент вышел из-под контроля.
Сперва он сообщил о нем нескольким друзьям, затем (как мы уже упоминали выше) пытался с их помощью сделать рассылку, чтобы помочь усмирить вирус. Когда распространение превратилось в самую настоящую пандемию, Роберт во всем признался отцу и решился на явку с повинной.
Первый киберзлодей
Эпидемия, вызванная «Червем Морриса», была не первым масштабным нашествием компьютерного вируса. Незадолго до этого по миру прокатились вирусы Brain и Jerusalem. Но несмотря на то, что количество зараженных ими компьютеров было куда больше, чем у Morris Worm, они не нанесли подобного ущерба.
Общее количество часов потери доступа к сети составило 8 миллионов часов — и еще примерно миллион пришлось потратить на восстановление последствий. И это при том, что программа была в целом безвредной!
Суд над Моррисом продолжался до января 1990 года. Изначально парню грозило пять лет лишения свободы и штраф в 25 тысяч долларов. Но учитывая чистосердечное признание и отсутствие в коде вредоносного предназначения, горе-программист отделался условным сроком. К нему добавили 10 тысяч долларов штрафа и 400 часов обязательных общественных работ.
Как червь Морриса изменил мир
Morris Worm был далеко не первым компьютерным вирусом — но именно он заставил инженеров и ученых по всему миру задуматься о вопросах безопасности. Именно после эпидемии 1988 года для повышения безопасности системы стало внедряться использование пауз после неправильного ввода пароля и хранение паролей в закрытом файле /etc/shadow вместо доступного для чтения всем пользователям файла /etc/passwd.
Еще одним важным итогом случившегося стало создание в университете Карнеги-Меллона Компьютерной группы реагирования на чрезвычайные ситуации (Computer Emergency Response Team, CERT) — экспертного сообщества, занимающегося проблемами компьютерной безопасности.
Как раз в это время распространение компьютерных сетей начало набирать обороты, и инцидент, случившийся с ARPANET, на какое-то время стал главной темой во всех СМИ, оттеснив на задний план новости о выборах президента США.
Сам Моррис больше героем новостных сюжетов не становился. Роберт закончил университет, получил докторскую степень, основал свой стартап и написал один из диалектов языка Lisp. И больше нигде так не ошибался — видимо, после 1988 года всегда тщательно проверял свой код.
Это тоже интересно: