Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
По принципу работы компьютерные игры — это обычное программное обеспечение. Однако с защитой в них не все так гладко. Информационная служба Хабра поговорила с Владимиром Кочетковым, руководителем отдела исследований и разработки анализаторов кода компании Positive Technologies, и обсудила с ним некоторые проблемы игровой индустрии и геймдева.
Возможны ли взлом и кража данных через онлайн-игры, если не считать социальную инженерию?
Если не считать социальную инженерию, то более 50% атак мы сразу оставляем за скобками. Атакующие стараются использовать самые простые из возможных способов, а социальная инженерия часто не требует прокачанных технических навыков.
Нужно понимать, что игра — это такое же приложение, как и корпоративная система или клиент онлайн-банкинга. Код и допускаемые в нём ошибки безопасности мало чем отличаются от других приложений, просто имеют свою специфику. Как только в игре появляются идентификаторы для различения игроков и средства, с помощью которых можно подтвердить права владения этими идентификаторами, например пароль или одноразовый код в приложении для аутентификации, эта информация становится целью для злоумышленников. Ведь обладая ей, уже можно осуществить захват аккаунта и, например, вымогать у игрока денежные средства для восстановления доступа. Можно украсть учётные данные на стороне пользователя, атаковав его компьютер или сняв данные с клавиатуры (записав нажатия клавиш). Можно попробовать атаковать канал, по которому они передаются, или серверную часть игровой инфраструктуры. Это зависит от типа и специфики игры. Как правило, злоумышленники выбирают игры, где есть бэкенд на сервере, на котором проводится идентификация, аутентификация, назначение прав авторизации для предоставления пользователю доступа к персонажу и его ассетам. На всех этих этапах можно осуществить кражу конфиденциальных данных, при этом используемые техники мало чем отличаются от техник атак на обычные онлайновые приложения.
Скажите, были ли случаи в онлайн-играх, когда установочный файл подменяли на файл, заражённый вредоносами и другими источниками угроз?
Эта проблема сейчас более актуальна для обычных приложений. Существует много лончеров, библиотек, площадок для распространения игр (Steam, Origin, EGS и т. п.) — как правило, геймеры пользуются ими. В таких онлайн-магазинах принимаются меры безопасности для того, чтобы контролировать целостность файлов распространяемых ими продуктов. Не могу вспомнить там случаев именно заражения оригинального дистрибутива. Хотя лет пять назад был аналог атаки на цепочку поставок, но через файлы зависимости игры, а это немного другой сценарий.
Если же мы говорим о single-player, большая часть пиратского софта, особенно скачанного с торрентов и похожих ресурсов, как правило, снабжается бэкдорами. Иногда выкладывают репаки, когда приложение уже взломано, а иногда кряки. Пройдя две-три итерации и републикации на различных площадках, кряки обрастают вредоносами.
Однажды мне попался кряк, правда не для игры, а для графического приложения. Он оказался обёрнут в три слоя вредоносных приложений. Сначала ставилась малварь из каждого слоя, а уже потом запускалась оригинальная версия кряка, который, в свою очередь, тоже что-то подсаживал в ПК. В итоге после запуска у пользователя начинался зоопарк: инфостилеры, кейлоггеры, подключение к ботнету и т. п. Такое бывает достаточно часто.
Разумеется, не все программы, скачиваемые из сети и с торрентов, заражены, но значительная их часть – да. Это же касается и игр, если говорить не о распространяемых через магазины игр и приложений.
Помогает ли технология NFT избежать кражи аккаунтов в онлайн-играх?
Краткий ответ — нет. Недавно в сети появилось исследование западного аналитического агентства, в котором утверждается, что за семь месяцев этого года стоимость украденных NFT-активов превысила 100 млн долларов. Если бы эта технология предотвращала кражи, до таких сумм дело бы не дошло. Кражи NFT-активов действительно происходят, они стали отдельным сегментом теневого бизнеса в даркнете. NFT крадут и крупные известные хакерские группировки, и отдельные злоумышленники. При этом используются самые разные методы: от социальной инженерии до атак на кошельки, инструменты подписания кошельков, клиентские устройства. Но я не слышал, чтобы создатели игр планировали использовать NFT как аутентификационный эквивалент для доступа к учётной записи.
Например, существует кошелек MetaMask, в котором есть отдельный API и информация о том, как сделать через него аутентификацию в веб-приложениях на сайтах. В этом инструментарии достаточно много проблемных мест, которые могут быть реализованы разработчиками веб-приложения неправильно. В результате все достоинства NFT, в том числе уникальность, отслеживаемость по блокчейну, будут сведены на нет.
Решающим фактором является профессионализм разработчиков: все уязвимости, на которые направлены атаки, в том числе в играх, — это результаты их ошибок. Если же говорить о продаже игровых ассетов, например скинов, обвесов на оружие, NFT может давать преимущество, но оно не связано с безопасностью. Технология NFT позволяет контролировать продажу вещей и их поиск в случае кражи или спорных ситуаций. В некоторых играх это уже присутствует, и даже не в тестовом варианте.
Многие игры защищены от взломов, но их частенько взламывают и выкладывают в общий доступ. С чем это связано: с несовершенством инструментов защиты или с тем, что игровые компании хотят расширить доступность своих продуктов? Мой вопрос касается законченных игр, так называемых коробочных изданий, и single-mode, к которым можно докупать DLC.
Возьмем для примера компанию EA. Если посмотреть историю любой серии её игры, имеющей хоть сколь-нибудь интересный сюжет или механики, то у них утечки тестовых версий случаются перед релизом регулярно. Компания отрицает, что это было намеренно, но слишком часто игры утекают именно тогда, когда нужно показать пользователям предварительный геймплей. С точки зрения маркетинга, утечки, возможно, имеют какой-то смысл, чтобы подогреть интерес к игре и нагнать аудиторию перед запуском. Сами компании могут выкладывать, в том числе взломанные версии, если им это выгодно. Например, первый уровень доступен, потом игра ломается и выдаёт ошибку. Вполне рабочий вариант, но никто не признается.
Я работаю в компании, создающей софт. Один из наших продуктов — анализатор исходного кода, PT Application Inspector. Даже у нас однажды возник вопрос, не стоит ли самим выложить продукт на торренты. Обсуждение было серьёзное, потому что те версии продукта, которые уже лежали там, были взломаны криво и, по сути, не работали. Защита оказалась отломана только у графической оболочки, но не у модулей, осуществляющих анализ. У людей, которые их скачивали, могло сформироваться негативное мнение о продукте в целом. Они ведь даже не смогли бы объективно оценить его функциональность, и тогда уже нам пришлось бы объяснять, что причиной тому является неудачный взлом. Поэтому, даже не говоря о маркетинге, бывают ситуации, когда имеет смысл выкладывать собственные продукты под видом пиратских. Наверняка и игры тоже.
Есть и другой вариант. Допустим, игру выпустили с «серьёзной» защитой, например Denuvo. А на второй-третий день после её публикации появляется новость, что защиту взломали. Это постоянная борьба, щит и меч. Есть классическая формула: если стоимость взлома выше потенциальной выгоды, то просто нет смысла взламывать. Но всегда найдутся фанаты, для которых взлом новой защиты — это дело чести. Для них не стоит вопрос о деньгах. Они делают это, чтобы пропиарить себя, сделать доклады на конференциях, заработать авторитет в сообществе. В любом случае, непробиваемых защит нет. Вопрос только в том, сколько времени своей жизни взломщик готов потратить на то, чтобы обойти все механизмы защиты, сделать репак и выложить в свободный доступ. Поэтому появляются новые механизмы защиты от отладки, от проверки прав на цифровой контент. Например, в однопользовательских играх теперь модно уносить часть игры на сервер, фактически привязывая её к онлайну и создавая искусственную необходимость взаимодействовать с сервером, подтверждая собственную лицензионную чистоту.
Во многих онлайн-играх существуют так называемые читеры. Чаще всего это люди, нашедшие уязвимость или купившие скрипт, который взламывает игру. Как компании могут избежать этого при создании продукта? Это намеренный игнор со стороны компаний или несовершенство инструментов защиты?
Зайду издалека. Я достаточно долго играю в арена-шутер Quake Champions. Читы — интересная мне тема, одно время я серьёзно занимался их реверсингом, чтобы понять, как они устроены. Примерно полтора года назад для этой игры выложили очередной чит. Он снимал содержимое экрана, как это делает любая программа для захвата экрана, по типу OBS. У чита была нейросетка, натренированная на определённый цвет обводки противников (это можно сделать в настройках игры). По этому контуру нейросетка распознавала противников прямо с экрана и наводила прицел. Чит не лез в адресное пространство самой игры и работал параллельно с ней. Единственный прокол: чит двигал мышью через отправку сообщений окну игры, что современные античиты достаточно легко отлавливают. И если бы автор пошёл чуть дальше и реализовал бы работу с мышью, например, через какую-либо уязвимость одного из подписанных драйверов, а также рандомизировал траекторию наведения, имитируя поведения человека, это был бы абсолютно недетектируемый локально чит.
Если говорить о способах защиты, единственный вариант — снимать статистику на сервере и ловить поведенческие аномалии среди игроков, требующие дальнейшего расследования. Но и это является проблемой. Надо понимать, что в том же квейке в онлайне находятся всего несколько сотен человек, а игры с его постоянным комьюнити там настолько хардкорные, что пытаться выявлять аномалии в их игре без участия человека практически невозможно. В Apex Legends в онлайне десятки тысяч людей, и там репорты о читинге от других игроков летят непрерывно. Это слабая система: разбирать такие репорты вручную, мягко говоря, нелегко. А если банить игроков по факту репорта и только потом разбираться, то это может привести к потере значительной части аудитории. Не говоря уже о том, что это даст возможность злоумышленникам намеренно банить неугодных им игроков.
Естественно, есть и более-менее серьёзные античиты, которые предлагают Steam, EA и другие вендоры. Но это всё та же борьба вируса и антивируса. Как только появляется средство защиты, разработчики читов обходят его: это отдельный бизнес, и довольно прибыльный. Иногда читы стоят дороже игры, если дают возможность заработать на ней. С точки зрения операционной системы они на равных правах, особенно если чит является драйвером. Как правило, сейчас все читы на клиенте игры работают в формате либо драйверов, либо и вовсе гипервизоров. И их борьба зачастую сводится к тому, что получит контроль над системой первым: чит или античит.
Расскажу интересный момент. Технология запуска под гипервизором, который грузится до ОС и виртуализирует всё, что происходит дальше на ПК, пришла именно от читов, а не от античитов. Разработчики читов первыми реализовали гипервизор, который получал полный контроль над ОС и не распознавался существующими античитами. Прошло несколько месяцев, и появился античит, который также запускался в режиме гипервизора и пытался определить, нет ли ранее запущенного гипервизора, чем и боролся с читами. В этом смысле игры с сезонными пропусками или аналогичным механизмом более привлекательны, потому что после обновления античитов все читы, как правило, отваливаются, и начало каждого сезона — это золотая пора для простых игроков. Но через несколько недель опять появляются работоспособные и недетектируемые читы, и всё начинается по новой.
Сознательно ли компании игнорируют читеров? Иногда да, потому что задача геймдев-безопасника не исключить уязвимости, а привести проект в защищённое состояние, минимизировать риски, связанные с уязвимостями. Наличие читов зачастую подразумевает, что в игре или её окружении есть уязвимости. Но если рассматривать читеров как угрозу, иногда издателю или разработчику выгоднее временно закрыть на них глаза и развивать другие направления или решать другие проблемы. Есть шутка, что в Apex Legends каждый второй сезон хороший, потому что в первом сезоне разработчики рисуют скины, а во втором исправляют баги: одновременно не получается. Разработчики даже готовы временно пойти на потерю части аудитории: если начать бороться с читами, может не хватить ресурсов на другие задачи.
Существуют ли белые хакеры, которые взламывают игры и потом рассказывают компаниям об этих уязвимостях? Есть ли для них программы bug bounty?
В играх это единичные случаи. Например, в сервисе Steam компании Valve есть официальная программа bug bounty с оплатой и чётко определённым скоупом: https://hackerone.com/valve?type=team. В него входит как сама платформа Steam и её компоненты, так и игры, разработанные в Valve. HackerOne есть и другие такие программы, но пока что это всё же единичные примеры. На российских геймдев-площадках сейчас таких программ нет, ну или пока нет.
Говоря о России, надо понимать, что у нас не так много крупных разработчиков игр: 1С, Nival, Gaijin, Owlcat, ещё несколько студий поменьше. В мобильном гейминге, возможно, есть известные компании, у которых разработка также осуществляется в России. Остальные же – это инди-студии, у которых нет бюджетов на безопасность. Эта ответственность перекладывается на разработчиков, и то не всегда. Если брать окологеймдев, очень неплохая программа bug bounty есть у Discord — основной платформы внутриигровой коммуникации. У них достаточно большой скоуп и неплохая сетка вознаграждений.
Я думаю, крупным игрокам на рынке может потребоваться ещё два-три года на то, чтобы выработать культуру безопасной разработки и понять, что имеет смысл аутсорсить задачи безопасности в таком формате. В чем выгода bug bounty для вендоров софта? Они держат безопасника в штате, но никто не может гарантировать, что он найдет все уязвимости. В bug bounty компании платят за каждую найденную уязвимость, и эти суммы, как правило, на несколько порядков меньше стоимости потенциального ущерба.
Геймдев и разработка в целом — это достаточно инертные области в плане безопасности. Только лет 5 назад в разработке начали задумываться о том, как выстроить систему безопасности приложений, какие процессы должны быть встроены в пайплайн. Геймдев же — это ещё более инертная область, потому что разработчики игр зачастую ставят перед собой цель как можно быстрее и больше продать, чтобы поскорее снять с себя ответственность за дальнейшую работу над игрой. Если говорить про онлайн-игры с постоянно обновляемым контентом, их не так много в общей пропорции, поэтому массовых программ bug bounty для них пока нет, по крайней мере в сегменте ААА. Но в последние три-четыре года на конференциях по практической кибербезопасности, например Positive Hack Days в Москве, BlackHack в Лас-Вегасе, начали появляться доклады о безопасности игр. Причём не только о читах, это уже не новость. Начали появляться доклады с анализом сетевых протоколов, используемых в играх, и найденных в них уязвимостей, через которые можно совершить атаку, начиная с читинга и заканчивая получением контроля над компьютером пользователя или сетевой инфраструктуры игры. Сейчас это направление набирает обороты, и через несколько лет игровые компании всё же окажутся вынуждеными двигаться в направлении информационной безопасности.
Имеет ли смысл создавать в рамках игровой компании службу информационной безопасности, которая будет полноценно заниматься защитой игровых инфраструктур, как у технологических гигантов, например у Microsoft?
Для крупных разработчиков это однозначно имеет смысл. Вы спрашиваете про игровую инфраструктуру, но защищать нужно не только её. Игровая инфраструктура — это всего лишь среда эксплуатации программного обеспечения, в том числе игр. Эксплуатации предшествует несколько этапов разработки. И в геймдев-компаниях уже случались инциденты, когда хакеры атаковали инфраструктуру разработки и пытались внедрить бэкдоры в исходный код или в инструментарий, сопровождающий приложение. С их помощью они получали доступ на этапе эксплуатации и проводили атаку. Необходимо защищать всю IT-инфраструктуру компании и особенно – инфраструктуру разработки. Если у компании нет своего офиса и она использует облако, это один вариант, в котором некоторую часть рисков берёт на себя облачный провайдер. А в крупных компаниях почти всегда есть серверная инфраструктура, подлежащая защите. Это очевидный вектор атаки как на игру, так и на игроков.
Что касается эксплуатации игровой инфраструктуры, безопасность также важна. Там есть своя специфика, приоритеты, свой подход к анализу рисков, свои классы уязвимостей (как правило – логических). Для того чтобы заниматься её защитой, нужно очень хорошо ориентироваться в этой сфере. Если нанимать стороннюю команду, которая никогда не работала в геймдеве и незнакома с особенностями конкретной игры, скорее всего желаемый результат не будет достигнут. Нужен специалист, который погрузится в игру, изучит документацию по геймдизайну, будет понимать логику игрового процесса. Атаки на эту логику тоже встречаются, хотя и не так часто, как атаки путём отправки взломанных файлов или иного воздействия на игру. Например, атаки через гличи. Возможность для злоумышленника добыть игровые ресурсы — это тоже ущерб для издателя, а следовательно их необходимо включать в модель угроз. Поэтому для организации эффективной защиты нужно быть в курсе всей кухни как разработки игр, так и ИБ. Обычный разработчик не подойдет для этой задачи, потому что он не думает, как безопасник. Он мыслит в рамках фич, ТЗ, дедлайна, который в приоритете у любого разработчика. Безопаснику менее важен дедлайн, ему необходимо добиться приемлемого уровня рисков. Разработчик с этим не справится не потому, что он не профессионал, а потому что это не его специализация. Именно поэтому нужен человек со стороны, который сможет построить процесс безопасной разработки на всех её этапах.
Есть ли компании в сфере ИБ, специализирующиеся на разработке игр?
Мне неизвестны компании, которые бы занимались всеми аспектами безопасности и с упором на геймдев. На мой взгляд, это достаточно перспективный сегмент рынка, интересная ниша. Через несколько лет она станет ещё более актуальной, при этом компаний, работающих в сфере ИБ, с полным спектром услуг для разработчиков игр сейчас не существует. Есть такие компании, как Positive Technologies, которые могут провести полный консалтинг по безопасности или, при необходимости, аудит кодовой базы и инфраструктуры игры. При этом, как мы только что обсуждали, эти специалисты должны понимать особенности каждой конкретной игры. В противном случае это будет лишь тестирование безопасности относительно обобщенных моделей угроз, т. е. наименее эффективное. Нет профильных компаний, занимающихся безопасностью геймдева, но есть компании, специализирующиеся на античитах. Помимо самих античитов, они занимаются и смежными областями: защитой сетевых протоколов, обеспечением целостности и конфиденциальности данных, передаваемых в ходе игровой сессии, аутентификацией пользователей — всем, что так или иначе касается модели угроз читинга. Но и полнота покрытия ими вопросов безопасности в целом оставляет желать лучшего.
Если можно, расскажите, обращались ли к Positive Technologies разработчики игр с просьбой проверить их продукты на уязвимости? Если да, то какие?
Мы не разглашаем информацию о клиентах, кроме тех, кто дал на это согласие и перечислен на нашем сайте. Но в данном случае ответ прост: насколько мне известно, не обращались. Если и обращались, то лишь по поводу аудита своих внутренних систем, вроде ERP или CRM, ну или веб-сайтов. Хотя оговорюсь, что я работаю не в консалтинге, а в продуктовом сегменте и не обладаю полной информацией на этот счёт.
Существуют ли игры, в которых чаще всего взламывают пользователей?
Да, это игры, экономика которых предусматривает монетизацию в реальные деньги.
Если можно, дайте несколько рекомендаций по кибергигиене для пользователей онлайн- и одиночных игр?
Базовые рекомендации здесь будут мало чем отличаться от классических правил сетевой гигиены для обычных пользователей. Хотя, по личным наблюдениям, геймеры в этом плане, пожалуй, наиболее недисциплинированные. Использование неподдерживаемой версии ОС, установленной с репака «от Васяна», с отключёнными функциями обновления и механизмами защиты не только являются нормой, но и поощряются во многих сообществах.
В Steam есть одна сомнительная настройка: сетевые функции Steam. При игре в пати она позволяет при определённых условиях узнавать всё про своих тиммейтов, вплоть до их IP-адреса, через официальный API Steam. Её стоит включать только для друзей или отключать совсем. Также необходимо внимательнее относиться к платформе для внутриигровой коммуникации, будь то Discord или сам Steam. У Discord возникало много проблем с безопасностью, наиболее громкая история случилась в конце прошлого года. Перед новогодними праздниками там была проведена масштабная вирусная атака, в ходе которой вредоносный бот распространял сам себя. Пользователям предлагалось получить код для активации подписки Nitro, отображался QR-код со словами «просканируйте и подпишитесь», а на самом деле этот QR-код давал права доступа боту к клиенту игрока. Получилась своего рода автоматизированная социалка. Это бедствие продлилось один или два дня: было запущено несколько ботов, которые «бомбили» все серверы, до которых могли дотянуться через уже заражённых пользователей. К счастью, кроме размножения и попыток заставить пользователя ввести данные своей платежной карты, они ничего плохого не делали.
И ещё по поводу Steam и Discord. Многие вредоносы-инфостилеры крадут учётные данные этих платформ с различными целями: от вымогательства с обещанием возврата учётных данных, до выведения средств со счетов различными способами. Поэтому не стоит забывать о защите от вредоносного ПО. Например, геймерами (увы) часто используется пиратское ПО, в том числе и игры. Однако надо понимать, что любой кряк или лоадер, как было сказано выше, с большой долей вероятности содержит вредонос. Если антивирус начинает ругаться на него и даже указывает, какой выявлен вирус, пользователь считает, что этот кряк был внесён в его базы намеренно. На самом деле, в антивирусе Windows, например, не так много сигнатур именно для кряков. Если он «орёт», это чаще всего значит, что нечто нехорошее всё же происходит. И дальше уже могут начаться проблемы не только с играми, но и с банковскими данными, проседанием производительности из-за фонового майнинга или вредоносным трафиком, например.
Правила кибергигиены для геймеров и для простых пользователей в целом одинаковы. Однако их почему-то принято соблюдать лишь в офисе, где есть какие-то обязательства перед работодателем. Но надо ведь заботиться и о своей информации. Она не менее, а может, и более важна, чем рабочая, но почему-то антивирусы стараются не устанавливать или отключать, потому что они снижают производительность (действительно снижают, но не так сильно, чтобы это оказывало существенное влияние на игровой процесс). И потом, эти ресурсы ведь расходуются не на майнинг «для чужого дяди», а на вполне нужные задачи, в которых заинтересованы, прежде всего, сами пользователи.
Иногда и в самой игре начинают происходить чудеса, как было полтора года назад в Apex Legends, когда игроки, заходившие вечером в лобби, видели непривычные для них надписи «Посетите сайт savetitanfall.com». Хакеры устроили атаку на сетевой протокол Apex Legends, чтобы привлечь внимание к проблемам другой игры серии от этого же разработчика. Из-за ошибок в сетевом протоколе, а именно во взаимодействии между игровым клиентом и сервером, у атакующих появилась возможность подменять контент в клиентах. А это уже серьёзная проблема: если можно воздействовать на контент, то вполне может появиться и возможность выполнять произвольный код. Поэтому в таких случаях лучше на время отказаться от игры, выйти из взломанного клиента и ждать новостей от разработчика об исправлении этой ситуации.