
Предыдущие номера:
ИЮНЬ 1997
СЕГОДНЯ
GUESTBOOK
ПРЕЖНИЕ ВЫПУСКИ
ВСЕ ДОМЕНЫ .RU
INDEX.HTML

| |

| |
Заметка сто девяносто девятая
ЗАГОВОР МОЛЧАНИЯ ЯГНЯТ
За подробностями о проблемах с безопасностью, выявленных недавно в языке JavaScript, рекомендую читателю обратиться к первоисточникам - таким, например, как заметка в CERT advisories - или к комментариям от NEWS.COM до Гонца. На сайте Bell Laboratories, где дырка была впервые выявлена, мне не удалось найти никакой информации по этому вопросу, даже используя Search на заглавной странице.
Демонстрация дырки доступна здесь:
http://www.aleph2.com/tracker/tracker.cgi
В Коммуникаторе этот скрипт, скорее всего, работать не будет, зато в Навигаторе 3.02 он прекрасно работает даже после установки заплаты от Netscape Communications...
Информацию о том, как предполагают затыкать (или уже заткнули) обнаруженные дырки разработчики двух наиболее популярных сегодня бродилок, можно прочесть по адресам:
http://www.netscape.com/flash4/assist/security/index.html
http://www.microsoft.com/ie/security/update.htm
Не то чтобы мне лень объяснять здесь, в чем состоит суть выявленной дырки, а просто хочется дать читателю возможность узнать техническую информацию о проблеме из источников более авторитетных в вопросах программирования, чем наши заметки (эту фразу я пишу нарочно, чтобы Алекса Дрибина удивить).
В одном абзаце - для тех, кому его достаточно - проблема состоит в том, что исполнение набора инструкций, переданного от паутинного сервера бродилке с помощью ЯваСкрипта, не может быть ограничено настройками безопасности, выставленными пользователем на своем компьютере. Если в принципе пользователь разрешает своей бродилке исполнять инструкции JavaScript, то дальше он уже беззащитен перед потенциальным взломом собственной машины. Пока не исследован вопрос о том, можно ли с помощью инструкций JavaScript вызывать порчу файлов, директорий или целых дисков, однако уже сегодня очевидно, что автор гипертекстовых документов, использующих JavaScript, может установить тотальную слежку за пользователем Нетскейпа или Эксплорера и получать - незаметно для жертвы - полный отчет о том, какие сайты она посещала с момента заражения программой-шпионом, и какая информация вводилась с клавиатуры, включая пользовательские имена, пароли, номера кредитных карточек и т.п. Поскольку данные, посылаемые пользователем, подлежат перехвату до, а не после отправки на сервер, злоумышленнику не страшен ни firewall, ни зашифрованный протокол пересылки данных https://. Самый надежный способ защиты от возможной слежки - и до, и после установки заплаты от производителя бродилки, - состоит просто в отключении опции поддержки JavaScript. Кстати, во многих корпоративных сетях, где системные администраторы бдительно подходят к вопросам информационной безопасности, подобное практикуется со дня выхода уже первой беты Netscape Navigator 2.0, где этот язык поддерживался (заодно отключали и поддержку Явы).
Лично мне история с обнаруженной прорехой в безопасности ЯваСкрипта интересна лишь одним своим аспектом. Недавно мне случилось закончить заметку о байриках (новомодном рекламном трюке, в основе которого лежит применение ЯваСкрипта) следующей фразой:
Самое странное - что Фродо это все предвидел...
В той статье фраза была заключительной и никакого продолжения не получила - так что некоторые читатели (в особенности догадавшиеся, что речь идет о frodo@israel.ru) прислали мне недоуменные письма, спрашивая, что же именно предвидел Фродо. Сегодня пришла пора ответить на этот вопрос.
В самом начале 1996 года Станислав Малышев, автор поискового скрипта наших заметок и нескольких других умных программ, изучающий компьютерную науку (в частности Яву и ЯваСкрипт) на соответствующем факультете Еврейского университета в Иерусалиме предупреждал меня ровно об этом. В те времена компания Sun Microsystems уже начала промывать мозги сетевой общественности рассказами о бесчисленных преимуществах языка Java, и в качестве естественного протеста по всей Паутине стали возникать страницы с демонстрацией возможностей hostile applets - явских программ, заваливающих бродилку или завешивающих всю систему. Разумеется, я об этом писал в своей тогдашней рубрике Наши сети. А Фродо прочел и, пожимая плечами, сказал мне примерно следующее:
Не понимаю, почему все так озабочены hostile applets на основе Явы. У JavaScript есть в десятки раз больше возможностей напакостить пользователю, чем у Явы. Ява, например, не может свои сокеты открывать без специального разрешения, а ЯваСкрипт - может... И к диску он может обращаться так, что Яве не снилось. А никому почему-то до этого нет никакого дела.
Ответить мне на это замечание было решительным счетом нечего, и я не додумался даже посоветовать Фродо написать демонстрацию тех возможностей ЯваСкрипта, на которые до самого последнего времени никто в Паутине почему-то не хотел обращать внимания. Но сегодня, вспоминая тот давний разговор, я хочу спросить вслед за своим другом-программистом, почему совершенно очевидные и общеизвестные принципы работы языка ЯваСкрипт так долго ни у кого не вызывали даже тени озабоченности?!
Для того, чтобы понять потенциальные опасности ЯваСкрипта, не надо иметь семи пядей во лбу или особо глубоких познаний в программировании. Достаточно в самых общих чертах представлять себе, как этот язык работает. Программа на Яве, как известно, является набором инструкций, которые для исполнения передаются на Java virtual machine. Полномочия этой виртуальной машины изначально ограничены ее создателем: даже если апплет прикажет своей виртуальной машине писать на диск или открывать новые сессии подключения к удаленным серверам, машина не сможет эти инструкции исполнить, ибо ей это строго запрещено из соображений безопасности. А кому передает свои инструкции программа на JavaScript? Бродилке, то есть Нетскейпу или Эксплореру. Это значит, что программа на языке ЯваСкрипт может делать все те вещи, которые может делать бродилка. В частности, открывать и закрывать окна (одно, несколько, или сразу все, которые были до сих пор открыты), вызывать удаленные страницы из Сети, посылать данные на сервер, считывать пользовательские файлы с диска (демонстрацию этой способности можно видеть на сервере Datacrime). Точно так же, как и сама бродилка, управляющая ею программа на JavaScript может все это делать совершенно незаметно для пользователя. Исследователям из Bell Laboratories принадлежит честь публикации этих сведений, однако любой человек, прочитавший хоть вводную часть учебника по ЯваСкрипту, должен быть хорошо осведомлен о существовании таких возможностей.
(Способность ЯваСкрипта создавать в бродилке новые окна, лежащая в основе байриков, сама по себе открывает богатые возможности для писания вредительских программ. Легко представить себе гипертекстовый документ, содержащий яваскриптовую программу с единственной инструкцией: при вызове открой текущую страницу в еще одном новом окне. Пользователь один раз вызывает эту страницу в своей бродилке, и вот уже она снова грузится в другом, вновь созданном окне, с той же самой инструкцией, и это приводит к открытию еще одного окна, которое в свою очередь порождает следующее - причем на создание каждого нового окна уходят считанные доли секунды, а остановить лавинообразное размножение окон может лишь своевременно осуществленный kill/End process, если пользователь успеет перехватить управление прежде, чем вся его система зависнет. В Windows 95 поделать ничего нельзя, кроме перегрузки, а в NT можно успеть, но надо очень быстро шлепать по клавишам, вызывая Task Manager. За UNIX не поручусь. В свое время Гера Шпигель прислал мне демонстрацию этой программы, и лишь из ложно понятого гуманизма я воздержался от ее публикации в заметках. В другой раз нечто подобное - скорее по оплошности автора, чем по злому умыслу - случилось с каталогом пиратских дисков на www.user.cityline.ru/~alpine/. К обнаруженной прорехе в безопасности ЯваСкрипта, о которой идет речь в сегодняшней нашей заметке, этот фокус не имеет никакого отношения. Другая эксплуатация, также не имеющая никакого отношения к нынешней дырке, но весьма наглядная, красовалась долгое время на видном месте сервера www.spider.ru. Там пользователю предлагалось нажать на кнопку, чтобы немедленно вылететь из Нетскейпа. Посвящать этим фокусам отдельную заметку мне бы не пришло в голову, но сегодня самое время упомянуть об их существовании.)
Сегодня меня - как и Фродо полтора года назад - волнует один единственный вопрос. Почему о гигантском вредительском потенциале ЯваСкрипта столько времени молчали все те, кому положено было кричать о нем во весь голос?! Неужели кто-нибудь из специалистов по этому языку в самом деле не понимал до последнего времени, какие богатые возможности в нем заложены для вредительства?! Или тут действовал принцип из андерсеновской сказки про голого короля, отраженный в гениальном анекдоте от Вернера про программиста и солнце?!
Чем больше я над этой загадкой думаю, тем больше убеждаюсь, что разгадка здесь относится скорее к журналистской, чем к программистской области. В уже упомянутых нами сегодня CERT advisories можно прочитать о сотнях различных дырок в системах безопасности разных программ, операционных систем, языков программирования и их интерпретаторов. Одни дырки при своем обнаружении сделались сенсацией и надолго приковали к себе внимание бумажных и сетевых СМИ; другие, ничуть не менее серьезные и опасные для пользователей, были, по сути дела, проигнорированы компьютерной прессой. Так что решение о сенсационности той или иной дырки сегодня принимается не в профессиональных кругах, а в редакциях СМИ. До марта нынешнего года там вообще господствовало мнение, что информация о дырках представляет интерес лишь для тех профессионалов, которым положено их затыкать, а широкой аудитории об этом знать не надо, ибо любое сообщение об обнаруженных прорехах пришлось бы снабжать длиннейшим техническим объяснением, которого никто читать не захочет... Ситуация изменилась с обнаружением сразу нескольких дырок в Эксплорере - они были столь доходчиво объяснены своими первооткрывателями, что журналистам достаточно было сослаться на демонстрационные страницы. Вокруг дырок в Эксплорере было столько шума, что многим казалось: впредь каждая обнаруженная прореха будет главной сенсацией для первой полосы.
Буквально в апреле стало понятно, что это не совсем так: на обнаруженную дырку в нетскейповой насадке Shockwave, позволяющую вебмастерам читать почту посетителей сайтов, пресса не обратила практически никакого внимания. В профессиональных кругах тогда говорили чуть ли не о заговоре молчания в пользу Нетскейпа - в частности, и мне довелось выслушать подобные обвинения. На самом деле, городить тут теории заговора - занятие совершенно бессмысленное, ибо критерии оценки прессой различных прорех безопасности довольно просты и очевидны. У каждой дырки есть два простых параметра, по которым человек, пишущий об Интернете, оценивает их сенсационность. Параметр первый - практический - это актуальность дырки. Параметр второй - чисто журналистский - это наглядность известных демонстраций. Дырка, обнаруженная датским программистом Кристианом Орелланой в Нетскейпе, никому никогда и ничем не угрожала, а изготовить страницу, где бы пользователю доходчиво демонстрировалась ее опасность, по сей день никому не удалось, включая самого жадного датчанина. В то же время, дырка OOB, обнаруженная в мелкомягких операционных системах, означала стопроцентную смерть для клиентов и серверов миллионов пользователей во всем мире, и проверить ее актуальность мог любой желающий за полминуты - причем как на своей машине, так и на чужой. Естественно поэтому, что в истории про дырку Орелланы все внимание прессы было приковано к финансовым запросам ее первооткрывателя, а в случае с атакой на 139й порт больше писали о технических аспектах компьютерной безопасности... Те же соображения объясняют и малую популярность дырки в насадке Shockwave: никому не удалось показать наглядно, как она на самом деле работает - а опасность того, что вебмастеру какого-либо сайта захочется без разбора забивать свой диск содержимым почтовых ящиков тысяч своих посетителей, является, что ни говори, теоретической. С возможностью парализовать одной командой всю паутину ЮАР или завесить сервер Microsoft угроза чтения чужих писем через дырку Shockwave сравниться при всем желании не может. Отсюда и разборчивость освещающей эти открытия прессы...
Спешу заметить своему беспощадному израильскому критику Семену Богуславскому, обвинившему меня в пристрастном освещении дырок в зависимости от того, в чьем софте они обнаружены, что описанные выше принципы оценки разных прорех (действующие во всех известных мне сетевых СМИ) весьма добросовестно отражают позицию конечного пользователя, для глаз которого и пишутся статьи в обозрениях вроде нашего. Мне, Антону Носику, конечному пользователю Windows NT и Netscape Navigator, весьма важно, чтобы мою систему не завалили атакой на 139й порт, попортив мне файлы и вызвав потерю всех несохраненных данных в текстовых редакторах, которые были в тот момент открыты. Против такой атаки я не поленюсь поставить заплату, перегрузиться и испытать ее в действии. А что какой-нибудь незнакомый мне вебмастер захочет скачать себе и исследовать все 16 мегабайт моего Inbox'а - мне глубоко и решительно наплевать. Тем более что бороться с этой угрозой можно безо всяких заплат: достаточно просто не пользоваться Netscape Mail, чего я и так уже несколько лет с успехом не делаю, и никому не советую, ибо Eudora меня полностью устраивает. Мне так же глубоко и решительно наплевать на то, что некий человек, точно знающий расположение файла i:\My Documents\Archives of July 1997\VI\Zametki\14jul1997.htm, сможет прочесть этот файл за несколько часов до того, как я его своими руками выложу на Сеть. Ну не пугает это меня, хоть убей. Потому что на свете есть единственный способ докопаться до директории i:\My Documents\Archives of July 1997\VI\Zametki\ на моем компьютере: нужно за него сесть, ввести пароль Администратора и обшарить все 8 гигабайт моих дисков с помощью NT Explorer. Дырка, найденная Орелланой, ничего подобного сделать не позволяет. Для этого злоумышленнику надо сперва приехать ко мне домой и сломать пароль Администратора Windows NT. А коли он уже это сделал - тут мне надо винить не корпорацию Нетскейп, а мою собственную небрежность в защите собственных файлов от посторонних глаз. Зато в завале моей системы по 139му порту или в атаке на мой компьютер через дырку Cybersnot в Эксплорере я буду винить не себя, а разработчика. И о способах защиты пользователя от эксплуатации этих дырок я буду писать подробнее.
Напоследок осталось все же объяснить загадочный заговор молчания вокруг недавно вскрывшейся дыры в ЯваСкрипте. На мой взгляд, он связан с тем, что среди людей, пишущих о сетевых новостях, не нашлось ни одного профессионального программиста, способного соорудить достаточно наглядную демонстрационную страницу, или хотя бы на пальцах объяснить угрозы, растолкованные нам специалистами из Bell Labs и CERT. Инициатива здесь должна была исходить от специалистов. А что у них ушло столько времени на раскачку - так ведь на то они и программисты, а не акулы пера. И мне трудно их за это осуждать. А хочется только надеяться, что впредь жажда легкой славы кого-нибудь из них подвигнет на более активную популяризацию хотя бы самых очевидных глазу профессионала проблем с сетевой безопасностью...
|