Автор: Киви Берд
Вряд ли хоть кто-то, пребывая в здравом рассудке, станет отрицать, что учиться на своих ошибках - это признак ума. Признак же мудрости - способность учиться на ошибках других. Однако Эд Фелтен, профессор Принстона и видный специалист по защите информации, недавно отметил, что специалисты по компьютерной безопасности, увы, регулярно демонстрируют неспособность учиться на ошибках - как чужих, так и собственных. То ли старательно скрывают уже допущенные промахи, то ли притворяются, будто их просто не существует.
8/12
В самую популярную в мире многопользовательскую онлайновую игру World of Warcraft, по состоянию на лето 2007 года, играли 8 млн. человек, каждый из которых платит за право участия в ней 14 долларов в месяц. По оценкам аналитиков, к 2009 году игровой рынок достигнет 12 млрд. долларов.
Сформулированная Фелтеном идея, конечно же, не была внезапным откровением. О неблагоприятном положении дел с компьютерной безопасностью прекрасно осведомлены все эксперты и даже многие несведущие в этой области люди. Постоянно прилагаются усилия, чтобы переломить унылую тенденцию и перестать, наконец, наступать на одни и те же грабли. Частью этой работы стала новая книга американских авторов Грега Хоглунда и Гэри Макгроу "Эксплуатация онлайновых игр: жульничество в массивно-распределенных системах"["Exploiting Online Ga-mes: Cheating Massively Distributed Systems" by Greg Hoglund and Gary McGraw, Addison-Wesley Professional, 2007, www.exploitingonline-games.com.]. В книге подробно рассказывается о промахах, допускаемых игровыми компаниями, и о последствиях этих промахов. Фирмам, разрабатывающим компьютерные игры, это издание поможет извлечь уроки из своих ошибок, да и из ошибок коллег по индустрии. По этой книге можно научиться заранее замечать ловушки, подстерегающие разработчика, - и избегать их.
Волею судьбы выход книги совпал по времени с большущим интернет-скандалом вокруг популярного онлайнового казино AbsolutePoker.com (См. заметку "Абсолютная афера" в КТ #708 - Прим. ред.). Завсегдатаи этого сайта - заядлые картежники - вдруг стали замечать, что некоторые игроки демонстрируют поистине сверхъестественные способности. Своими точными ходами, умелыми ставками и регулярными крупными выигрышами эти счастливчики попирали все законы теории вероятностей, словно видя карты соперников насквозь. Администрация сайта-казино, следуя традиции, ни в какую не признавала очевидные факты жульничества и категорически не желала проводить расследование. Тогда за дело взялись сами посетители сайта. Они собрали массу информации, документально подтверждающей мошенничество, которое стало возможным вследствие слабостей программного обеспечения. Улики, изобличившие одного из технических сотрудников казино, оказались столь вескими, что компания была вынуждена официально извиниться и привлечь к судебной ответственности собственные кадры.
Зачем пишутся такие книги?
В двух словах, книга Хоглунда и Макгроу о том, как жульничают в играх. Понятно, что всякая игровая компания к подобному жульничеству в своем хозяйстве и к его пропаганде относится в высшей степени нетерпимо. Если хитрости и манипуляции становятся крупномасштабными, то игрокам, которые в подобных вещах не участвуют, это рано или поздно надоест и они уйдут искать развлечений в более приличном месте. Поэтому разработчики игр предприняли ряд шагов, направленных на укрепление защиты программ против мошенничества и злоупотреблений. Одни контрмеры, вроде негласной слежки за каждым из игроков и содержимым их компьютеров с помощью шпионов-руткитов, заведомо спорные. Другие контрмеры имеют правовые перекосы, закладываемые в чрезвычайно жесткие лицензионные соглашения и условия пользования игрой. Третьи, наконец, носят характер чисто технической защиты, вроде шифрования коммуникаций между клиентом и сервером. Правда, как показывает анализ, криптографию в играх обычно реализуют весьма неумело. А потому, надеются авторы книги, сделанный ими тщательный разбор известных типов хакерских атак должен существенно помочь разработчикам игр в укреплении безопасности их программ.
Кроме того, Хоглунд и Макгроу выдвигают еще несколько веских, по их мнению, доводов относительно полезности своей работы. Во-первых (этот аспект многократно подчеркивается и другими авторами по самым разным поводам), в виртуальных мирах игр ныне крутятся реальные и весьма большие деньги. Во-вторых, огромное множество игроков по сию пору совершенно не в курсе, каковы подлинные масштабы жульничества. И в-третьих, безопасность программ для онлайновых игр имеет не просто много, а очень много критически важных моментов, которые напрямую связаны с проблемами безопасности других, более важных разновидностей программного обеспечения.
Как практикующие эксперты по компьютерной безопасности, авторы книги уверены, что для всестороннего понимания системы надо знать не только как она работает, но и как она ломается. Единственный же путь к этому - выявлять и досконально изучать все слабые места системы.
Почему игры, или о чем эта книга
Завтра
Массивно-распределенные онлайновые игры имеют чрезвычайно сложное программное обеспечение. Благодаря гигантскому числу пользователей это ПО постоянно проверяет на прочность распределенные клиент-серверные архитектуры. Поскольку почти любое современное ПО в конечном счете становится массивно-распределенным, сегодняшние игры - это завтрашний день остальных программ.
Предисловие, вступление и первая глава "Эксплуатации онлайновых игр" дают развернутое объяснение причин, побудивших авторов взяться за описание средств и методов жульничества. Хоглунд и Макгроу принадлежат к довольно узкой группе специалистов, умеющих работать в стиле "хакинг для защиты". Подробно исследуя всевозможные уязвимости систем, они выпустили уже несколько книг об эксплуатации слабостей защиты программного обеспечения. По всеобщему признанию это весьма полезные руководства для тех, кто пытается строить надежные, хорошо защищенные программы.
Итак, почему же на сей раз особое внимание авторы уделили играм? Прежде всего потому, что уже сформировалась крупная виртуальная экономика, которая на множестве направлений пересекается с "реальной" экономикой и оперирует вполне реальными деньгами. С тех пор, как геймеры начали продавать ценимые в играх способности, "игровое золото" и даже целиком персонажей, объекты игр обрели конкретную денежную стоимость в реальном мире. Одновременно мир игр, вроде World of Warcraft, EverQuest и онлайнового покера, привлек интерес и криминального мира. Торговля игровыми объектами ныне тесно переплетена с онлайновым мошенничеством, хищениями персональных данных и отмыванием денег. Так, в разгар финальных игр Суперкубка по американскому футболу сайты главных стадионов США были заражены троянцем, который наряду с кражей финансовой и персональной информации пользователей целенаправленно искал и похищал из компьютеров данные аккаунтов участника World of Warcraft.
Вторая глава ("Хакинг") содержит развернутое обсуждение разнообразных способов манипуляции играми. Большинство этих способов изложено на концептуальном уровне, хотя некоторые вещи разбираются очень подробно и с примерами, включая макрокоды и подпрограммки на языке C. Здесь же анализируются контрмеры, применяемые в играх для борьбы с жульничеством, и несколько популярных способов для обхода этих контрмер.
Глава три ("Деньги") на конкретных примерах исследует работу виртуальной экономики игровых миров. И хотя в предисловии подчеркивается важность экономического аспекта, в самой книге об этом говорится скупо. Впрочем, необъятное, как известно, объять нельзя.
Не может похвастать широтой охвата и глубиной и четвертая глава ("Адвокаты"), в которой собраны сведения об американских законах, регулирующих копирайт и смежные области защиты интеллектуальной собственности, а также рассмотрены всевозможные юридические и технические зацепки, встраиваемые разработчиками ПО в EULA (End User License Agreement, лицензионное соглашение конечного пользователя).
Пятая глава посвящена ошибкам в программном обеспечении игр. Точнее, тому, каким образом геймеры могут использовать баги в собственных целях - для взаимодействия со сложными функциями и состояниями игры.
В главе шестой разбираются инструменты и техники, применяемые для манипуляций клиентским программным обеспечением. С определенными оговорками можно утверждать, что содержание главы - это та самая суть, ради которой и была написана книга. Ибо именно с толстого (то есть функционально продвинутого) клиента идет подавляющее большинство злоупотреблений и манипуляций слабостями игровой системы. Глава в изобилии насыщена примерами и кодами на языке Си; в данном контексте это вполне оправданно.
Седьмая глава ("Строительство ботов") тематически тесно связана с предыдущей и столь же насыщена строками С-кодов, используемых при создании программных роботов, жульничающих в играх ради преимуществ для своих владельцев.
Глава восьмая - это, можно сказать, другое ответвление главы шесть, направленное в сторону обратной инженерной разработки ПО. Здесь тоже рассмотрен разнообразный инструментарий, применяемый для вскрытия программ. Дается и весьма подробный обзор базовых функций ассемблера.
Девятая глава посвящена продвинутому хакингу игр. В ней главным образом разбирается модифицирование программ, управляющих работой клиента или альтернативного игрового сервера.
Финальная, десятая глава ("Безопасность программ превыше всего") предназначена, судя по всему, для красивого перехода от технических подробностей к выводам самого общего характера. Глава начинается несколько запоздалым заявлением о том, что главная цель книги - "понять важность безопасности в массивно-распределенных программных системах, имеющих миллионы пользователей". Эта цель, напомним, прописана в подзаголовке книги, однако за подробным разбором приемов хакинга углядеть ее не так-то просто. Чтобы компенсировать это упущение, глава 10, по сути дела, представляет собой краткий обзор множества полезных, но, строго говоря, общеизвестных основ в деле защиты программного обеспечения.
Учиться на ошибках
Еще
Для Хоглунда и Макгроу, авторов новой книги о хакинге онлайновых игр, это далеко не первая работа по компьютерной безопасности. Они уже выпустили с полдюжины книг, посвященных руткитам, безопасному программированию и взлому кодов. Подробности можно найти на сайтах www.buildingsecurityin.com и www.rootkit.com.
При рецензировании любой книги считается дурным тоном затевать разговор о том, чего в тексте нет. Ибо рецензия по определению должна быть посвящена тому, что в книге есть. Однако для данной статьи новое исследование о хакинге игр - это не столько тема рецензии, сколько наглядный повод обсудить общую ситуацию в мире компьютерной безопасности. А потому вполне уместно перечислить и те моменты, которые в книгу не вошли или обсуждаются лишь мимоходом.
Например, все технические главы работы посвящены тому, как серверы системы компрометируются со стороны клиентского ПО. Но нет почти ничего о том, как общие слабости игровой системы могут делать крайне уязвимыми для сетевых атак клиентскую сторону и компьютеры пользователей. Дыры в клиентском ПО могут открывать компьютер для проникновения шпионов, похищающих чувствительную информацию о пользователях либо прокладывающих путь другим вредоносным программам. В реальном мире есть множество такого рода проблем, тесно связанных с другими клиентскими программами, вроде средств для быстрых коммуникаций или пиринговых файлообменов.
Кроме того, за рамками книги осталось множество проблем, связанных именно с безопасностью массивно-распределенных систем, насчитывающих сотни тысяч одновременно играющих пользователей. Например, совсем не затронут социальный инжиниринг применительно к совместной работе больших групп людей. То же касается самозарождающихся (emergent, эмерджентных) новых свойств системы в целом, возникающих при взаимодействии простых функций, оперирующих на очень большом числе узлов. Не анализируется мощь согласованных действий пользователей в крупных распределенных системах. Наконец, нет ни слова о взаимосвязи между игровыми сетями и ботнетами, сетями вредоносных программных роботов, в последнее время ставшими головной болью для компьютерной безопасности.
Если же копнуть глубже, неизбежно возникнет вопрос о необходимости открытого обсуждения всех уязвимостей. Книга Хоглунда и Макгроу в этом отношении может служить образцом. В индустрии компьютерных игр, спору нет, ставки не столь высоки, как в авиации [см. врезку], однако возникающие и тут и там проблемы имеют много общего. Как и в авиации, разработчики делают серьезные финансовые вложения в успех и производительность своих систем. Однако и остальные участники ставят на кон достаточно много. Онлайновый виртуальный мир, подобный World of Warcraft, порождает собственную экономику, и постоянно расширяется круг людей, чье благосостояние полностью или частично зависит от заработков внутри игровых миров. Валюта игровых миров обменивается на доллары и евро. Экономисты по сию пору оживленно спорят о точном смысле и стоимости валового продукта в виртуальных пространствах, однако в смысле делания денег виртуальная экономика столь же реальна, как и купля-продажа акций на бирже.
Открытая модель против закрытой
Оживленные, порою даже очень острые дискуссии о целесообразности полного раскрытия уязвимостей идут в компьютерном мире много лет. За это время сторонники секретности выдвинули горы самых разных аргументов этического, правового и технического характера. Тем не менее подавляющее большинство независимых экспертов по безопасности продолжают стоять на своем: и специалисты, и общество только выигрывают, если четко представляют, как работают технологии, от которых все зависят.
В современном мире уже стало нормой положение, при котором человек вынужден ставить свои деньги, время, приватную информацию, а порой и собственную жизнь в прямую зависимость от того, надежно ли сработают те или иные технологии. Технологии эти могут сильно отличаться друг от друга, сделать между ними правильный выбор не так-то просто, и люди, естественно, нуждаются в помощи специалистов. В качестве самой яркой иллюстрации этой идеи обычно приводят безопасность авиаперелетов. Здесь ставки максимально высоки, и у пассажиров должна быть полная уверенность, что все потенциальные проблемы будут выявлены и исправлены. Никто не стал бы мириться с ситуацией, когда изготовитель самолетов скрывает причину катастрофы или препятствует расследованию. Аналогично, люди не будут иметь дел с компанией, которая лжет публике о безопасности полетов и отрицает наличие проблем, хотя ей известно обратное. Именно огласка обнаруженных слабостей, тщательное расследование аварий и умение учиться на ошибках сделали воздушные перелеты действительно безопасными.
Если авиация демонстрирует преимущества открытости, то электронное голосование, напротив, выпукло иллюстрирует все те беды, что вызваны чрезмерной секретностью. Пользователям систем электронного голосования - то есть всем гражданам - не дозволено знать, как работают эти машины. Обычно людям сообщают лишь то, что все машины голосования прошли сертификацию, однако суть этого важного процесса окружена зачастую непроницаемой завесой тайны. По мнению властей, подробности этой технологии граждан не касаются. Последствия же такого подхода хорошо известны. При независимой проверке выясняется, что конструкция систем голосования очень слаба, дыры в безопасности годами остаются незалатанными, а общий прогресс идет чрезвычайно медленно. И даже в ситуациях, когда техника в ходе реальных выборов явно срабатывает не так, как должна, бывает очень трудно добиться строгого и объективного разбирательства. Понятно, что доверять таким системам по меньшей мере неосмотрительно.
Масса людей, никоим образом не вовлеченных в онлайновые игры, могут серьезно зависеть от этих виртуальных миров. Таков, к примеру, инвестор, вкладывающий свои пенсионные отчисления в игровую компанию. Или программист, оставляющий приличное место в софтверной компании ради работы над новой игрой. Или, наконец, семья, владеющая ресторанчиком, расположенным напротив штаб-квартиры игровой компании. Для всего этого народа тоже крайне важно, чтобы технология, на которую они поставили, была серьезной и надежной. Ну а уж те люди, что относятся к гигантскому сообществу геймеров, перед тем как отдавать свои кровные деньги за игровую программу или онлайновую подписку, наверняка хотели бы быть в курсе, насколько хорошо эта программа способна противостоять атакам жуликов и злоумышленников.
Упомянутый в самом начале принстонский профессор Эд Фелтен, оценивая насыщенную примерами хакинга книгу Хоглунда и Макгроу, заметил, что некоторые разработчики игр, возможно, встретят эту работу без энтузиазма, а то и с раздражением. Не исключено, что они даже попытаются обвинить авторов в подрыве безопасности их игрового программного обеспечения. Но это, подчеркивает Фелтен, будет лишь попыткой самообмана. Если кто-то собирается улучшить практикуемые технологии защиты, то честное обсуждение известных проблем, такое, как в книге, - это единственный путь вперед.
Ибо абсолютно всем свойственно делать ошибки. А потому, если в следующий раз захочется сделать лучше, следует учесть не только свои, но и чужие ошибки.