Шрифт:
Закладка:
В тот мартовский день Кочулу удалил свой код из npm из-за разногласий по поводу названия его модуля, совпавшего с названием зарегистрированной торговой марки. Представители npm попросили его переименовать модуль после жалобы компании – владельца торговой марки, Кочулу отказался и в итоге удалил все свои пакеты с ресурса. Среди них был и left-pad. В результате внезапно оказались разрушены все цепочки программ, в которых использовался модуль Кочулу. Некоторые цепочки были настолько длинными, что разработчики даже не осознавали, что они зависят от этих одиннадцати строк кода.
Программа Кочулу – это лишь один пример компьютерного кода, который распространяется гораздо шире, чем мы можем предположить. Вскоре после инцидента с left-pad программист Дэвид Хейни обратил внимание, что еще один инструмент из npm – состоящий всего из одной строчки кода – стал критически важной частью семидесяти двух других программ. Он назвал еще ряд программ, которые в значительной степени зависели от простых фрагментов кода. «Я поражен тем фактом, что разработчики делают свой код зависимым от заимствованных функций длиной в одну строку, которые они должны уметь писать с закрытыми глазами», – недоумевал он[510]. Заимствованные фрагменты кода зачастую распространяются дальше, чем можно ожидать. Когда исследователи из Корнеллского университета проанализировали статьи, написанные с помощью LaTeX, популярного набора расширений для верстки научных текстов, они обнаружили, что ученые часто используют коды коллег. Некоторые файлы распространялись по профессиональным сетям более двадцати лет[511].
По мере распространения код может изменяться. После того как в конце сентября 2016 года трое студентов опубликовали код Mirai, в интернете появились десятки его вариантов, лишь незначительно отличавшихся от исходного. Внесение в код таких изменений, чтобы он стал инструментом масштабной атаки, было лишь вопросом времени. В начале октября, за несколько месяцев до инцидента с Dyn, специалисты по кибербезопасности из компании RSA обратили внимание на необычное объявление в даркнете: группа хакеров предлагала атаку мощностью 125 гигабит в секунду. За 75 тысяч долларов можно было купить доступ к бот-сети из 100 тысяч узлов, которая, как утверждалось, работала на основе модифицированного кода Mirai[512]. Но это был не первый случай изменения Mirai. За несколько недель до опубликования кода создатели программы внесли в нее более двадцати корректировок – вероятно, чтобы повысить заразность бот-сети. Одни вставки затрудняли обнаружение червя, другие блокировали прочие вредоносные программы, конкурирующие за доступ к уязвимым компьютерам. Став общедоступным, код Mirai продолжал изменяться на протяжении нескольких лет; новые варианты появлялись даже в 2019 году[513].
Когда Фред Коэн в 1984 году впервые описывал компьютерные вирусы, он отмечал, что вредоносное ПО со временем может меняться, так что его будет все труднее обнаружить. Экосистема компьютерных вирусов и антивирусных программ не достигнет устойчивого равновесия – она будет постоянно развиваться. «В результате эволюции равновесие нарушается, и результат неясен во всех случаях, кроме самых простых, – говорит Коэн[514]. – Это что-то сродни биологической теории эволюции и, возможно, генетической теории болезней».
Стандартный способ защиты от вредоносного ПО – установить антивирусную программу, которая будет выявлять известные угрозы. Обычно такая программа ищет знакомые сегменты кода, а затем распознанная угроза нейтрализуется[515]. Иммунная система человека действует подобным образом при заражении или после вакцинации. Клетки иммунной системы запоминают признаки патогена, воздействию которого мы подверглись, и при повторном инфицировании быстро реагируют на угрозу и нейтрализуют ее. Но эволюция порой затрудняет этот процесс – некогда знакомые патогены меняются, чтобы их не обнаружили.
Один из самых ярких и досадных примеров этого процесса – эволюция вируса гриппа. Биолог Питер Медавар однажды назвал вирус гриппа «фрагментом нуклеиновой кислоты, окруженным плохими новостями»[516]. Две особенно плохие новости живут на поверхности вируса: это пара белков под названием гемагглютинин и нейраминидаза, сокращенно HA и NA. HA позволяет вирусу прикрепляться к клетке-хозяину, а NA помогает выпускать новые частицы вируса с поверхности зараженных клеток. Эти белки могут иметь разную форму, что и определяет различия между штаммами вируса гриппа: H1N1, H3N2, H5N1 и так далее.
Зимние эпидемии гриппа обычно вызываются штаммами H1N1 и H3N2. Вирусы постепенно эволюционируют, и при этом меняется форма белков. Поэтому наша иммунная система не воспринимает мутировавший вирус как угрозу. Мы ежегодно сталкиваемся с эпидемиями гриппа – и ежегодно проходим вакцинацию – именно потому, что наш организм играет с вирусом в эволюционные «кошки-мышки».
Эволюция помогает выживать и искусственным инфекциям. В последние годы вредоносные программы научились автоматически меняться, чтобы их было сложнее обнаружить. Например, в 2014 году бот-сеть Beebone заразила тысячи компьютеров по всему миру. Червь, распространяемый ботами, менялся по нескольку раз в день, порождая миллионы уникальных вариантов. Когда антивирусные программы учились узнавать текущую версию кода, червь вновь менялся, искажая известную схему. В 2015 году Beebone наконец удалось полностью удалить из сети – но только после того, как специалисты выявили неизменную часть системы: для координации бот-сети использовались одни и те же доменные имена. Такой подход оказался более эффективным, чем попытки идентифицировать меняющихся червей[517]. Точно так же биологи надеются разработать более эффективные вакцины против гриппа, чтобы нацелить иммунную систему на те части вируса, которые остаются неизменными[518].
Вредоносные программы и дальше будут эволюционировать, чтобы избежать обнаружения, а власти продолжат попытки за ними угнаться. Меняться будут и пути передачи. Инфекции смогут не только находить новые мишени вроде бытовых приборов, но и распространяться посредством кликбейта и прицельных атак на соцсети[519]. Рассылая персонализированные сообщения конкретным пользователям, хакеры смогут увеличить вероятность того, что пользователь перейдет по ссылке и невольно загрузит вредоносное ПО. Но эволюция не только помогает инфекциям эффективно распространяться между компьютерами или людьми. Она также открывает нам новый способ остановить заражение.
7
Отслеживание вспышек
Любовная связь закончилась покушением на убийство. Больше десяти лет Ричард Шмидт, гастроэнтеролог из Лафайета (Луизиана), встречался с медсестрой Дженис Трейхен, которая была младше его на пятнадцать лет. Она развелась с мужем, но Шмидт, несмотря на все свои обещания, не оставил жену и троих детей. Трейхен уже пыталась порвать отношения, но на этот раз твердо решила довести дело до конца.
Позднее она рассказала, что пару недель спустя, 4 августа 1994 года, Шмидт пришел к ней домой, когда она спала. Он сказал, что сделает ей укол витамина B12. Ранее он уже делал ей инъекции витаминов для повышения тонуса, но в ту ночь женщина отказалась. Однако прежде, чем она