Недетские игры

(Ноябрь 2007)

Онлайновый покер и World of Warcraft с точки зрения безопасности массивно-распределенных систем

online_poker

Вряд ли хоть кто-то, пребывая в здравом рассудке, станет отрицать, что учиться на своих ошибках – это признак ума. Признак еще большей мудрости – способность внимательно учиться на ошибках других.

Тем не менее, как заметил недавно Эд Фелтен, профессор Принстона и видный специалист по защите информации, сообщество компьютерной безопасности, увы, регулярно демонстрирует неспособность учиться на ошибках – как чужих, так и собственных. Либо по причине того, что уже допущенные промахи старательно скрывают и отказываются обсуждать, либо просто притворяются, будто их не существует.

Сформулированная Фелтеном идея, конечно же, вовсе не является откровением. О неблагоприятной ситуации в компьютерной безопасности прекрасно осведомлены все специалисты и даже многие люди, практически не сведущие в защите информации. Значительным числом экспертов постоянно предпринимаются усилия, чтобы как-то переломить унылую тенденцию и перестать, наконец, все время наступать на одни и те же грабли.

В русло именно таких усилий полностью укладывается новая книга американских авторов Грега Хогланда и Гэри Макгроу «Эксплойты онлайновых игр: жульничество в массивно-распределенных системах» [«Exploiting Online Games: Cheating Massively Distributed Systems» by Greg Hoglund and Gary McGraw, Addison-Wesley Professional, 2007, www.exploitingonlinegames.com].

Expl-Online-Gam

В этой книге честно и подробно рассказывается о промахах, допускаемых игровыми компаниями, и о последствиях этих промахов. Для фирм, разрабатывающих компьютерные игры, это прекрасная возможность извлечь уроки как из своих ошибок, так и ошибок коллег по индустрии. Для всех остальных – это еще одна возможность научиться тому, что может пойти в разработке не так, и каким образом подобные вещи можно предотвращать.

Наверняка никто не мог этого запланировать, но выход новой книги практически совпал по времени с большущим интернет-скандалом вокруг популярного онлайнового казино AbsolutePoker.com.

Завсегдатаи этого сайта – несчастные люди, поглощенные карточными играми на деньги – в какой-то момент стали замечать, что некоторые из игроков демонстрируют поистине сверхъестественные способности. Своими ходами, ставками и на редкость стабильными крупными выигрышами эти счастливчики уверенно попирали все законы теории вероятностей, словно видя насквозь карты соперников.

Администрация сайта-казино, как это принято, ни в какую не признавала очевидные факты жульничества и категорически не желала проводить расследование. Тогда за разоблачение взялись сами посетители сайта, собрав множество поначалу косвенной, а затем и прямо компрометирующей информации, документально подтверждающей явное мошенничество с помощью имеющихся в программном обеспечении слабостей.

Улики, изобличившие одного из технических сотрудников казино, оказались настолько неопровержимы, что компания была вынуждена официально перед всеми извиниться и привлечь к судебной ответственности собственные кадры.

[ВРЕЗКА]

Зачем пишутся такие книги?

Если охарактеризовать книгу Хогланда и Макгроу в двух словах, то она о том, как жульничают в играх. Понятно, что всякая игровая компания к подобному жульничеству в своем хозяйстве и к его пропаганде относится крайне негативно. Если хитрости и манипуляции становятся крупномасштабными, то игрокам, которые в подобных вещах не участвуют, это рано или поздно надоест и они уйдут искать развлечений в более приличном месте.

Поэтому разработчиками игр предпринят целый ряд шагов, направленных на укрепление защиты программ против мошенничества и злоупотреблений. Некоторые из контрмер могут быть довольно спорными, вроде тихой негласной слежки за каждым из игроков и содержимым их компьютеров с помощью шпионов-руткитов. Другие контрмеры имеют правовые перекосы, закладываемые в чрезвычайно жесткие лицензионные соглашения и условия пользования игрой. Третьи, наконец, носят характер чисто технической защиты, вроде шифрования существенных коммуникаций между клиентом и сервером.

Правда, как показывает анализ, криптографию в играх обычно реализуют весьма неумело. А потому, надеются авторы книги, сделанный ими тщательный разбор известных типов хакерских атак должен существенно помочь всем разработчикам игр в укреплении безопасности их программ.

Кроме того, Хогланд и Макгроу выдвигают еще несколько веских, по их мнению, доводов относительно полезности своей работы. Во-первых (этот аспект многократно подчеркивается и в других местах по самым разным поводам), в виртуальных мирах игр ныне крутятся реальные и весьма большие деньги. Во-вторых, очень большое количество игроков по сию пору совершенно не в курсе, что в действительности тут происходит и каковы масштабы жульничества. И в-третьих, безопасность программ для онлайновых игр имеет не просто много, а очень много критически важных моментов, которые практически напрямую связаны с проблемами безопасности других, более важных разновидностей программного обеспечения.

Как практикующие эксперты по компьютерной безопасности, авторы книги уверены, что для всестороннего понимания системы надо знать не только то, как она работает, но и то, как она ломается. Единственный же путь к этому – пристально выявлять и досконально изучать все слабые места системы.

[КОНЕЦ ВРЕЗКИ]

Почему игры, или О чем эта книга

Предисловие, вступление и первая глава книги «Эксплойты онлайновых игр» дают развернутое объяснение тому, почему вообще была написана эта книга о средствах и методах жульничества. Авторы работы Хогланд и Макгроу уверенно входят в достаточно узкую группу специалистов, способных делать работы в стиле «хакинг для защиты».

Подробно исследуя всевозможные уязвимости систем, они выпустили уже несколько книг под общей темой «Эксплуатация слабостей в безопасности ПО», по всеобщему признанию дав весьма полезные руководства для тех, кто пытается строить более надежные и защищенные программы.

Итак, почему же на этот раз особое внимание авторов уделено играм? Прежде всего, на сегодня уже сформировалась очень крупная виртуальная экономика, которая на множестве направлений пересекается с реальной экономикой и вполне реальными деньгами. С тех пор, как геймеры начали продавать ценимые в играх способности, «игровое золото» и даже целиком персонажей, объекты игр обрели вполне конкретную денежную стоимость в реальном мире.

wow

Как и все прочее, что имеет обменную ценность, мир игр вроде World of Warcraft, EverQuest, Second Life и онлайновый покер тут же привлек интерес криминального мира. Торговля игровыми объектами ныне составляет весьма большую долю в онлайновых мошенничествах, хищениях личности и отмывании денег. (В разгар финальных игр Суперкубка по американскому футболу веб-сайты главных стадионов США были заражены троянцем, который наряду со стандартными хищениями финансовой и персональной информации пользователей целенаправленно искал и похищал из компьютеров жертв данные аккаунтов участника World of Warcraft).

Практически все, что касается небезопасности (и, естественно, безопасности) программного обеспечения в мире онлайновых игр оказывается так или иначе применимо к проблемам безопасности в других системах. Поэтому книга, сконцентрированная на дырах в защите игровых систем, обеспечивает занимательное и полезное вступление к безопасности систем вообще и безопасности приложений в частности.

Хорошо известно, что тема компьютерных игр вызывает повышенный интерес среди значительного количества людей, поэтому естественно предположить, что это и весьма подходящее средство для повышения интереса к вопросам защиты информации.

Вторая глава книги – «Хакинг» – содержит развернутое обсуждение темы о разнообразных способах манипуляции играми. Большинство этих способов изложено на концептуальном уровне, хотя отдельные вещи разбираются очень подробно и с конкретными примерами, включая макрокоды и подпрограммки на языке C. Здесь же одновременно анализируются некоторые контрмеры, применяемые в играх для борьбы с жульничеством, и несколько популярных способов для обхода этих контрмер.

Глава три – «Деньги» – на конкретных примерах исследует работу виртуальной экономики игровых миров. И хотя в предисловии важность экономического аспекта подчеркнута особо, в самой книге материал на этот счет изложен весьма скупо. Что, впрочем, вполне можно объяснить генеральной целью затеи и невозможностью объять необъятное.

Аналогично, не выделяется охватом и глубиной четвертая глава «Адвокаты», где собраны сведения об американских законах, регулирующих копирайт и смежные области защиты интеллектуальной собственности, а также особо рассмотрены всевозможные юридические и технические зацепки, встраиваемые разработчиками ПО в EULA, лицензионное соглашение конечного пользователя.

Пятая глава сосредоточена на ошибках, выявляемых в программном обеспечении игр. Формулируя точнее, каким образом геймеры могут использовать эти баги в собственных целях – для взаимодействия со сложными функциями и состояниями игры.

В главе шесть разбираются инструменты и техники, применяемые для манипуляций клиентским программным обеспечением. В определенном смысле можно говорить, что содержимое данной главы – это та самая суть, ради которой и была написана вся книга. Ибо именно с толстого (т.е. функционально продвинутого) клиента идет подавляющее большинство злоупотреблений и манипуляций слабостями игровой системы. Глава в изобилии насыщена конкретными примерами и кодами Си, но в данном контексте это выглядит вполне оправданным.

Следующая, седьмая глава «Строительство ботов» тематически тесно связана с предыдущей и столь же густо пропитана строками С-кодов, используемых при создании программных роботов, жульничающих в играх ради преимуществ для своих владельцев.

Глава восьмая – это, можно сказать, другое ответвление главы шесть, теперь направленное в сторону обратной инженерной разработки ПО. Здесь также рассмотрен разнообразный инструментарий, применяемый для вскрытия программ, и дается весьма подробный обзор базовых функций ассемблера. Девятая глава посвящена продвинутому хакингу игр, где главным образом разбираются модификация и переписывание программ, управляющих работой клиента или альтернативного игрового сервера.

Финальная, десятая глава «Безопасность программ превыше всего» предназначена, судя по всему, для красивого выхода из углубленных технических подробностей к заключительным выводам самого общего характера. Глава начинается несколько запоздалым заявлением о том, что главная цель книги – это «понять важность безопасности в массивно-распределенных программных системах, имеющих миллионы пользователей».

Эта цель, можно напомнить, в явном виде прописана в подзаголовке всей книги, однако за подробным разбором приемов хакинга углядеть ее в книге не так-то просто. Чтобы компенсировать это упущение, глава 10, по сути дела, представляет собой краткий авторский обзор множества полезных, но, строго говоря, общеизвестных основ в деле защиты программного обеспечения.

Учиться на ошибках

При рецензировании любой книги считается дурным тоном затевать разговор о том, чего в тексте нет. Ибо рецензия по определению должна быть посвящена тому, что в книге есть. Однако для данной статьи новое исследование о хакинге игр – это не столько тема рецензии, сколько наглядный повод обсудить общую ситуацию в мире компьютерной безопасности. А потому вполне уместно перечислить и те моменты, которые в книгу не вошли или обсуждаются лишь мимоходом.

Например, все технические главы работы посвящены тому, как серверы системы компрометируются со стороны клиентского ПО. Но нет почти ничего о том, как общие слабости игровой системы могут делать крайне уязвимыми для сетевых атак клиентскую сторону и компьютеры пользователей.

Дыры защиты в клиентском ПО могут открывать компьютер для проникновений злонамеренных шпионов, собирающих и похищающих чувствительную информацию о пользователях, либо открывающих проходы для других вредоносных программ. В реальном мире отмечено множество такого рода проблем, тесно связанных с другими клиентскими программами, вроде средств для быстрых коммуникаций или пиринговых файлообменов.

Аналогично, за рамками книги осталось множество конкретных проблем связанных именно с безопасностью массивно-распределенных систем, насчитывающих сотни тысяч одновременно играющих пользователей. Вроде, скажем, аспектов социального инжиниринга применительно к совместной работе больших групп людей. Или самозарождающихся (эмерджентных) новых свойств, возникающих из простых функций, оперирующих в условиях очень большого числа узлов. Или мощь согласованных действий общей массы пользователей в крупных распределенных системах. Или, наконец, взаимосвязи между игровыми сетями и ботнетами, сетями вредоносных программных роботов, в последнее время ставшими столь сильной головной болью для компьютерной безопасности.

Если же приподнять точку обзора еще повыше, то неизбежно встанет и общий для любых систем безопасности вопрос о необходимости полного раскрытия и открытого обсуждения всех реальных уязвимостей. Книга Хогланда и Макгроу в этом отношении может служить образцом. В индустрии компьютерных игр, спору нет, ставки не столь высоки, как в авиации [см. врезку], однако в целом проблемы достаточно похожи.

[ВРЕЗКА]

Открытая модель против закрытой

Оживленные, порою даже очень острые дискуссии о целесообразности полного раскрытия уязвимостей идут в компьютерном мире много лет. За время этих споров сторона, ратующая за необходимость тайн и секретности, выдвинула горы самых разных аргументов этического, правового и технического характера.

Тем не менее, подавляющее большинство независимых экспертов в сообществе безопасности продолжает стоять на своем: как специалисты, так и все общество в целом выигрывают много больше, когда четко представляют, как работают технологии, от которых все зависят.

В современном мире уже стало нормой, когда человек постоянно оказывается вынужден ставить свои деньги, свое время, чувствительную приватную информацию о себе, а порой и собственную жизнь на то, что технологии сработают надежно и правильно. Технологии эти могут крайне различаться между собой, делать правильный выбор не так-то просто, и люди, естественно, нуждаются в помощи специалистов.

В качестве самой яркой и доходчивой иллюстрации этой идеи обычно приводят безопасность авиаперелетов. Здесь ставки максимально высоки, и люди поневоле должны быть уверены, что все потенциальные проблемы будут выявлены и исправлены. Никто не стал бы мириться с ситуацией, когда изготовитель самолетов скрывает причину катастрофы или препятствует расследованию. Аналогично, люди не будут иметь дел с компанией, которая явно лжет публике о безопасности полетов и отрицает наличие проблем в то время, когда ей известно обратное. Именно атмосфера раскрытия слабостей, тщательного расследования аварий и учебы на ошибках – вот что сделало воздушные перелеты действительно безопасными.

Если авиация демонстрирует преимущества открытости, то электронное голосование, напротив, выпукло иллюстрирует все те беды, что вызваны излишней секретностью. Пользователям систем электронного голосования – т.е. всем гражданам, иначе говоря – не дозволено знать, как работают эти машины. Как правило, людям сообщают лишь то, что все машины голосования прошли необходимую сертификацию, однако суть этого важного процесса обычно окружена плотной завесой тайны. По мнению властей, конкретные подробности этой технологии граждан не касаются.

Последствия же такого подхода хорошо всем известны. При независимой проверке выясняется, что конструкция систем голосования очень слаба, известные дыры в безопасности годами остаются незалатанными, а общий прогресс к улучшению идет чрезвычайно медленно. И даже в ситуациях, когда техника в ходе реальных выборов явно срабатывает не так, как должна, бывает очень трудно добиться строгого и объективного разбирательства в произошедшем. Понятно, что доверять таким системам по меньшей мере неосмотрительно.

[КОНЕЦ ВРЕЗКИ]

Как и в авиации, разработчики игр делают серьезные финансовые вложения в успех и производительность своих систем. Однако и остальные участники ныне ставят на кон достаточно много. Всякая успешная игра – особенно онлайновый виртуальный мир типа World of Warcraft – во множестве смыслов порождает свою собственную экономику.

Вроде бы чисто виртуальные объекты в игре имеют вполне реальную финансовую стоимость, а постоянно растущее количество людей обеспечивает благосостояние своей жизни либо целиком, либо частично заработками внутри игр. Валюта игровых миров обменивается на доллары и евро. Экономисты по сию пору оживленно спорят о точном смысле и стоимости валового продукта в виртуальных пространствах, однако в смысле делания денег виртуальная экономика столь же реальна, как и покупка-продажа акций на бирже.

Даже массы людей, вообще никак не погруженных в игровые пространства, могут весьма серьезно зависеть от этих миров. К примеру, инвестор, вкладывающий свои пенсионные отчисления в игровую компанию. Или программист, оставляющий приличное место в софтверной компании ради работы над новой игрой. Или, наконец, семья, владеющая ресторанчиком, расположенным напротив штаб-квартиры игровой компании.

Для всего этого народа тоже крайне важно, чтобы технология, на которую они поставили, была серьезной и надежной. Ну а уж те люди, что относятся к гигантскому сообществу геймеров, перед тем как отдавать свои кровные деньги за игровую программу или онлайновую подписку, наверняка хотели бы быть в курсе, насколько хорошо конкретно эта программа способна противостоять атакам жуликов и злоумышленников.

Упомянутый в самом начале принстонский профессор Эд Фелтен, оценивая насыщенную конкретными примерами хакинга книгу Хогланда и Макгроу, заметил, что некоторые разработчики игр, возможно, встретят эту работу без всякого энтузиазма или даже с раздражением. Не исключено, что они даже попытаются обвинить авторов в подрыве безопасности их игрового программного обеспечения.

Но это, подчеркивает Фелтен, будет лишь попыткой самообмана. Если кто-то собирается улучшить практикуемые технологии защиты, то честное обсуждение известных проблем, как сделано в данной книге, – это единственный путь вперед.

Ибо абсолютно всем свойственно делать ошибки. А потому, если в следующий раз хочется сделать лучше, пора, наконец, научиться учитывать как собственные ошибки, так и ошибки других.

The END

wow-cataclysm

[Межколонные ВРЕЗКИ]

Наиболее популярная в мире многопользовательская онлайновая игра, World of Warcraft, по состоянию на лето 2007 имела свыше 8 миллионов пользователей, каждый из которых за право играть платит 14 долларов в месяц. По оценкам аналитиков, к 2009 году игровой рынок достигнет рубежа в 12 миллиардов долларов.

* *

Массивно-распределенные онлайновые игры имеют чрезвычайно сложное программное обеспечение. Благодаря гигантскому числу пользователей это ПО, можно сказать, постоянно подвергает предельным испытаниям возможности распределенных клиент-серверных архитектур. Поскольку почти любое современное ПО в конечном итоге становится массивно-распределенным, сегодняшние игры – это завтрашний день остальных программ.

* *

Для Хогланда и Макгроу, авторов новой книги о хакинге онлайновых игр, это далеко не первая работа по компьютерной безопасности. Ранее у них уже выходило с полдюжины книг, посвященных таким проблемам, как руткиты, безопасное программирование и взлом кодов. Подробности можно найти на сайтах www.buildingsecurityin.com и www.rootkit.com.

[КОНЕЦ ВРЕЗОК]