Читаем 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 содержало также и две других уязвимости, что были следствием исправления и отражали заниженную оценку важности дыры. Таким образом, далеко не все осознавали серьезность ситуации.

Макс осознавал ее прекрасно.

Перейти на страницу:

Похожие книги