Специалисты по компьютерной безопасности Грег Хогланд и Гари МакГроу
исследовали мир World of Warcraft и других онлайновых игр в поисках
уязвимостей и возможностей взлома. По результатам своих изысканий они написали
книгу о безопасности онлайновых игр "Exploiting Online Games". В данном
интервью с Гари МакГроу обсуждается настоящее положение дел с безопасностью
современных игр, системы защиты от читов, рынок эксплоитов и цифровых объектов,
рассказывается о том, чему мы можем научиться на примере таких крупных систем и
как разработчики справляются с вопросами безопасности.

Представьте себя, пожалуйста.

Я главный по технологиям (chief technology officer) в компании Cigital
и эксперт по безопасности программ. Я работаю в области компьютерной
безопасности с 1995 года, с момента получения докторской степени в Университете
Индианы. Я начал задумываться о языках программирования и безопасности в момент
появления Java. Я написал книгу "Java Security" в 1996 году с Эдом
Фелтеном из Принстона.

Вскоре после этого я начал интересоваться вопросом — почему такие прекрасные
архитекторы, разработчики и программисты которые создали, например, Java не
заботятся вопросами безопасности. Осмотревшись вокруг, мне стало понятно, что на
самом деле об этом мало говорят и работ практически нет, читать нечего, так что
я в 2000 году написал "Building Secure Software" с Джоном Вега.

Эта книга перевела понимание компьютерной безопасности на новый уровень. С
тех пор я опубликовал еще ряд книг по этой тематике, включая "Exploiting
Software
" и "Software Security".

Как не сложно представить, моя новая книга "Exploiting
Online Games
" во многом посвящена безопасности программ. С моей
точки зрения (как исследователя) наиболее интересная вещь в вопросах
безопасности онлайновых игр заключается в том, что они во многом являются
предвестниками тех проблем, с которыми мы столкнемся в сервисно-ориентированной
архитектуре (SOA) или при создании Web 2.0 приложений.

Как вы заинтересовались онлайновыми играми?

Грег Хогланд, мой соавтор, посвятил меня в них. Грег занимался безопасностью
онлайновых игр в течении нескольких лет прежде чем мы стали работать над книгой.
Он прочел расширенный доклад о читерстве в играх в 2006 году на конференции
Black Hat
, описал набор руткит-техник помогающих избежать обнаружения.
Увидев работы Грег я понял, что тут есть о чем написать. Сама тема необычайно
интересна, так как лежит на пересечении права, денег и технологий.

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

В ходе ваших тестов, что вы узнали о состоянии безопасности? Другими
словами, разработчики заботятся о безопасности или они целиком сфокусированы на
быстродействии?

Самая интересная вещь не в самом коде, но в дизайне подобных систем. Первая
вещь, которую стоит понять состоит в том, что MMORPG подобные World of
Warcraft
имеют миллионы подписчиков. В один момент времени совместно в WoW
играют 400,000 человек.

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

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

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

Когда дело доходит до разработчиков то самой главной проблемой в программной
безопасности является вера многих в то, что безопасность есть вопрос только
функциональности. Например, они думают, что применив некие "магическую крипто
пыль" они разрешат все проблемы с безопасностью. Но примеры атак, которые мы
рассматриваем в нашей книге, не основаны на традиционных сетевых атаках,
удаленном переполнении буфера или SQL-инъекциях. Вместо этого они основаны на
получении контроля над игровым процессом на собственном компьютере и
манипуляциях с целью заставить его делать то, что вам нужно. Одни из самых
интересных атак против онлайновых игр включают построение ботов, которые могут
автоматически действовать вместо игрока. Бот запускается на вашем PC вместе с
игровым клиентом. Задача же состоит в том, что бы сделать это незаметно.
(Кстати, именно поэтому игры настолько актуальны, когда речь заходит о
перспективах нападения на другие распределенные системы.)

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

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

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

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

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

Особенности Windows Vista – такие как ограничение воспроизведения видео
высокого разрешения или подписанные драйверы – помогут бороться с читерами?

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

Игровые компании сделали ряд шагов в попытке получить информацию о клиенте
для обнаружения обманщиков и их бана. Многие их усилия направлены на мониторинг
игровых компьютеров путем установки шпионского софта. Warden из World
of Warcarft
пример такого случая. С точки зрения архитектуры безопасности
очевидно, что установка мониторов на клиентские компьютеры не будет работать.
Атакующему всего то и надо будет взломать мониторящую программу ровно таким же
методом, каким он взламывает и саму игру. Если вы контролируете компьютер как
взломщик, то вы его контролируете.

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

(Продолжение следует)

Источник:


http://www.securityfocus.com/columnists/461

 

Оставить мнение

Check Also

Скрытая сила пробела. Эксплуатируем критическую уязвимость в Apache Tomcat

В этой статье мы поговорим о баге в Apache Tomcat, популярнейшем веб-сервере для сайтов на…