[Перевод] World of Warcraft: одна строка кода, чтобы потерять все
Представьте себе ситуацию: в игре персонаж, который представился членом одной из популярных и известных гильдий, подходит к Вам и обещает редкие крутые элементы, редких животных (на которых Вы можете путешествовать) оружие и т.п. Скорее всего такой перс не имеет ни редких элементов, ни специальных кодов для них. В итоге жертва не получает правильный код или какой-либо редкий предмет. Злоумышленник смог убедить ничего не подозревающего игрока ввести всего одну команду в диалоговом окне.
/run RemoveExtraSpaces=RunScript
Интерфейс WoW (например, строка меню, окно чата и другие 2D графические элементы) и также дополнения написаны на языке Lua. Обе стороны строки — RemoveExtraSpaces и также RunScript — легальные функции и часть WoW Lua API. Но введение этой строки кода в диалоговом окне изменяет поведение интерфейса WoW.
Что делает эта команда на самом деле?
/run
— команда для интерпретации следующего текста как сценария Lua.RemoveExtraSpaces
— встроенная функция, которая удаляет ненужные пробелы из текста.RunScript
— функция, которая выполняет текст в качестве кода Lua (аналогично команде /run
)Чем это опасно?
Функция RemoveExtraSpaces вызывается каждый раз, когда игрок получает новое сообщение. Указанная выше команда
/run
заменяет функцию RemoveExtraSpaces
на функцию RunScript
, которая изначально существует в программном обеспечении. После того, как исходная функция переписывается, каждое новое сообщение чата интерпретируется как Lua код и сразу же выполняется. Сценарий выглядит следующим образом. Неосторожный игрок вводит в своем диалоговом окне вредоносную строку кода, потому что его убедили слова нападавшего. Но вместо того, чтобы получить редкие предметы, он становится жертвой.
Ничего не подозревающий игрок собирается отправить вредоносную строку кода
Злоумышленник отправляет сообщение в чате жертве
Полученное сообщение интерпретируется как Lua код и затем выполняется
То, что было показано выше, является довольно безвредным примером этой уязвимости, доказательства концепции. Но на самом деле — это означает, что злоумышленник теперь может удаленно контролировать интерфейс жертвы. Это очень похоже на поведение троянов, которые изображают из себя что-то полезное и затем выполняют свою вредоносную функцию. В реальном случае, вместо того, чтобы создавать сообщения с текстом «Test», злоумышленники запускает другой сценарий, пример которого будет приведен ниже.
Временное скрытие и сохранение команды
После того как жертва открыла бэкдор в свой интерфейс, злоумышленник отправляет следующее сообщение:
Атакующий устанавливает новый канал передачи данных
В случае, если команда была выполнена, сообщение, которое показано выше, не будет видно жертве, но будет выполнено немедленно. Тот факт, что функция чата больше не работает может показаться подозрительным и жертва, возможно, попробует перезапустить игру. Злоумышленник действует достаточно быстро, чтобы решить эту проблему. Отправив команду, показанную выше, которая устанавливает новый канал связи, они снова восстанавливают нормальную работу чата не вызывая подозрений.
Для того, чтобы понять цель этой команды, нужно знать что в WoW есть возможность общаться с помощью скрытого канала (локально и удаленно). Этот канал установлен через использование событий «CHAT_MSG_ADDON».
Сценарий создает фрейм (строка 2), к которому можно установить различные свойства. Сценарий регистрирует события CHAT_MSG_ADDON с конкретным префиксом (строка 6 и 25). Только тот, кто знает выбранный префикс, может тайно управлять интерфейсом жертвы. Это все равно что пароль для бэкдор.
Каждый раз, когда угнанный интерфейс получает CHAT_MSG_ADDON, событие с секретным префиксом, код будет выполняться тихо и без ведома жертвы.
Вывод: пока злоумышленник не решит Вам показать, что происходит, Вы, к сожалению, про это не узнаете.
Даже при том, что речь идет о дополнениях, которые могут связаться через скрытый канал, у жертвы не обязательно должны быть установлены дополнения, чтобы атаки прошла успешно.
Какой вред может быть причинен?
В виду того, что злоумышленник будет иметь полный доступ к интерфейсу жертвы, он может собрать полную информацию про него. Но взломщик не сможет собрать какую-либо подробную информацию о других игроках. В WoW игроки имеют возможность делится/продавать предметы друг другу. Если злоумышленник знает местонахождение персонажа жертвы и находится в пределах досягаемости, он может удаленно открыть окно торговли и передать себе золото, предметы и все, что можно передать. Практически ограбить жертву.
Описанный сценарий демонстрирует социальную атаку на ряду с технической. Теперь хакер может с помощью жертвы отправлять убедительные сообщение ее друзьям, коллегам и другим игрокам, с которыми тесно общается персонаж, тем самым увеличивая количество захваченных персонажей.
Как можно себя защитить?
Ответ простой и очевидный: не нужно вводить такого рода команду или любую другую, которая будет предложена даже Вам давнишним другом.
В данном примере мы говорили об атакующем персонаже в игре, кто принадлежал к популярной гильдии. Но по факту он не принадлежал к этой гильдии. Он выбрал известную гильдию и скопировал имя, заменив «L» на «I». Возможно, Вы уже знакомы с такими методом фишинг-атак.
Кроме того, будьте осторожны при загрузке дополнений используйте защищенные и популярные веб-сайты, сохраните свои дополнения, чтобы их можно было в любой момент заменить. Возможно, что некоторые из этих обновлений могут уже содержать вредоносный код. Подобная проблема была замечена в 2014, когда так называемый «ElvUI Backdoor» был обнаружен в одном из дополнений.
Сам глюк может быть исправлено только Blizzard. Они должны убедиться, что перезапись такой функции будет невозможен в дальнейшем. Blizzard уже выпустили предварительный релиз для предстоящего дополнения «Legion». В данном дополнении они учли обсуждаемый тут сценарий и добавили предупреждение перед отправкой сообщения, которое содержит вредоносный характер.
Выбор «Yes» отключает сообщение навсегда, даже перезапуск не вернет его — по этой причине вопрос нельзя считать решенным. Чтобы повторно активировать данное сообщение, нужно вручную удалить одну строку кода в конфиг-файле.
Код, который должен быть удален: SET AllowDangerousScripts "1"
Файл: config-cache.wtf
Путь: World of Warcraft\WTF\Account\\
Комментарии (1)
28 июля 2016 в 16:25 (комментарий был изменён)
+1↑
↓
Честно говоря не понятно — зачем вообще нужна поддержка выполнения скриптов (/run) из чата обычным пользователям. Все скрипты должны быть в аддонах и устанавливаться явным образом вне игры, это и безопасней и проще для пользователя.