Kingpin - Кевин Поулсен
Тим Спенсер и многие из «Голодных Программистов» приехали в Вашингтон, чтобы увидеть как их «трудный ребенок» женится. Родители Макса, его сестра, семья Кими, множество друзей и родственников показались на церемонии. Макс носил смокинг и улыбку до ушей, Кими сияла в белом свадебном платье и фате. Окруженные семьей и любимыми друзьями они были идеальной парой начинающей совместную жизнь.
Отец Кими – гордо стоявший военный в униформе и ее мама в традиционном ханбуке стояли снаружи. Макс, окруженный своими родителями, улыбнулся в камеру, в то время как над головой собирались тучи в небе Pacific Northwest.
Прошло почти три года с момента как Макс вышел из тюрьмы. Сейчас он имел всё – преданную жену, обещающую карьеру whitehat-хакера и прекрасный дом. Буквально через несколько недель он выкинет это всё.
Глава 5. «Кибервойна!»
По возвращению домой в Сан-Франциско Макса ждало искушение в виде следующей строки кода:
bcopy (fname, anbuf, alen = (char *)*cpp — fname);
Это была одна из 9 тысяч строк в исходниках Berkeley Internet Name Domain (BIND) – старая балка в инфраструктуре интернета, такая же важная как любой роутер или оптоволоконный кабель. Разработанный в начале 80х на грант DARPA (Defense Advanced Research Projects Agency — агентство передовых оборонных исследовательских проектов), BIND реализовывал масштабируемую систему доменных имен (Domain Name System — DNS), которая подобно распределенному телефонному справочнику переводит понятные человеку строки типа Yahoo.com в числовые адреса, которыми оперирует сеть. Без BIND или его аналогов, мы бы читали онлайн-новости на 157.166.226.25 вместо CNN.com и заходили бы на 74.125.67.100, чтобы воспользоваться Google-поиском.
BIND был одной из инноваций, что сделали возможным бурный рост интернета. Он заменил незрелый механизм, который не позволял интернету расширяться. Но в 90х BIND был также одной из унаследованных программ, которые создавали крупнейшую проблему безопасности интернета. Его код был продуктом времен честности и простоты, когда сеть была уединенная и было очень мало сетевых угроз. Теперь же хакеры постигли все нюансы и глубины и возвращались с, казалось бы, бесконечным набором дыр в безопасности.
Первосвященство сетевых экспертов названное консорциум интернет ПО (Internet Software Consortium — ISC) само себя назначило стражем интернет-кода и лихорадочно его переписывало. Но в то же время большинство современных сложных сетей в мире со сверкающими новыми серверами и рабочими станциями были запущены с дырявой компьютерной программой из прошлой эпохи.
В 98-м эксперты по безопасности обнаружили последнюю уязвимость в коде. Она сводилось к той одинокой строке кода вначале главы. Она принимала запрос из интернета и, как и положено, копировала его побайтно во временный буфер «unbuf» в память сервера. Но она не корректно проверяла размер входящих данных. Следовательно, хакер мог намеренно передать слишком длинный запрос к BIND-серверу, переполнив буфер и выбросить данные в остальную часть памяти, как нефть из Эксон Валдез.
Если выполнить такую операцию бессистемно, то это приведет к краху программы. Однако осторожный хакер может сделать нечто более жуткое. Он может загрузить в буфер собственный фрагмент исполняемого кода и затем, избегая падения, подниматься к вершине пространства памяти программы, достигнув зоны кратковременного хранения данных называемого «стэк».
Стэк – то место где процессор хранит информацию о том, что он делает – каждый раз, когда программа перенаправляет компьютер к подпрограмме, процессор «выталкивает» текущий адрес в стэк как закладку, и потому процессор знает куда возвращать данные когда они будут готовы.
После того как хакер оказался в стэке он может перезаписать адрес для возвращения данных на адрес с вредоносным кодом. Когда компьютер закончит с текущей подпрограммой, она вернется не туда где началась, а к инструкциям хакера, и поскольку BIND запускался с привилегиями администратора (root), хакерский код тоже выполнится из под root. Теперь компьютер под контролем хакера.
Две недели спустя после того как Макс и Кими поженились, финансируемая правительством компьютерная группа реагирования на чрезвычайные ситуации университета Карнеги Меллон (CERT - Computer Emergency Response Team), запустившая систему экстренных рассылок о дырах в безопасности, выпустило предупреждение об уязвимости в BIND со ссылкой на простой способ ее исправления: две дополнительные строки кода, что отсеивали слишком длинные запросы. Но исправление CERT содержало также и две других уязвимости, что были следствием исправления и отражали заниженную оценку важности дыры. Таким образом, далеко не все осознавали серьезность ситуации.
Макс осознавал ее прекрасно.
Он прочитал рекомендации CERT с изумлением. BIND шел предустановленным в Linux и запускался на серверах в корпоративных, ISP, некоммерческих, образовательных и военных сетях. Он был везде. Был со столь дефективной строкой кода. Единственное, что сдерживало ожесточенные атаки то, что никто не написал эксплоит (программа эксплуатирующая уязвимость) для этой дыры. Но это был вопрос времени.
Конечно, 18 мая эксплоит появился на Rootshell.com – сайте с новостями о компьютерной безопасности, созданном энтузиастами. Макс снял трубку и позвонил Крису Бисону, своему контакту в ФБР. Ситуация серьезная, пояснил он. Любой, кто не установил патч на BIND мог быть взломан любым скрипт-кидди способным скачать эксплоит и ввести команду.
Если окунутся в историю, то окажется, что правительственные компьютеры были особенно уязвимы. Всего лишь месяцем ранее, менее серьезный баг в Sun Solaris привел к взлому компьютеров на десятках военных базах США, который заместитель министра обороны назвал «самой организованной и систематической атакой на сегодняшний день» на системы противоракетной обороны. Эти атаки подняли полномасштабную тревогу кибервойны: Пентагон дал им кодовое название «Восход Солнца» и считал главным подозреваемым Саддама Хусейна, пока следователи не вышли на молодого израильского хакера, который просто игрался.
На следующий день Макс снова позвонил Бисону, когда хакерская группа ADM выпустила готовую к использованию версию BIND-эксплоита, который сканировал интернет в поиске непропатченных серверов, вторгался в них, устанавливал себя и использовал зараженный компьютер для последующих сканов и взломов. Определенно, теперь кто-то мог завладеть всем интернетом. Вопрос только «Кто?». Он повесил трубку и задумался. Кто-то собирался это сделать…
В восторженных, мальчишеских тонах Макс поделился своими планами со своей невестой. Макс мог бы стать автором своей собственной атаки на BIND. Его версия могла бы закрыть уязвимость везде, где ее удастся найти, как плодовые мушки заполняют всё своими личинками. Он бы ограничил свою атаку целями наиболее нуждающимся в обновлении безопасности: армия США и правительство.
«Не попадись», сказала Кими. Она