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 Virus» був виявлений в одному з додатків.

Сам глюк може бути виправлено тільки Blizzard. Вони повинні переконатися, що перезапис такої функції буде неможливий надалі. Blizzard вже випустили попередній реліз для майбутнього доповнення «Legion». В даному додатку вони врахували обговорюваний тут сценарій і додали попередження перед відправкою повідомлення, яке містить шкідливий характер.



Вибір «Yes» відключає повідомлення назавжди, навіть перезапуск не поверне його – за цієї причини питання можна вважати вирішеним. Щоб повторно активувати дане повідомлення, потрібно вручну видалити один рядок коду в конфіг-файлі.

Код, який повинен бути видалений:
SET AllowDangerousScripts "1"

Файл: c
onfig-cache.wtf

Шлях:
World of Warcraft\WTF\Account\\

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.