Roblox Studio нужно скачивать с официального сайта Roblox, а любую чужую модель сначала проверять в отдельном тестовом проекте. Модель из Creator Store может содержать не только дерево, автомобиль или интерфейс, но и объекты Script, LocalScript и ModuleScript. После запуска такие сценарии получают те же возможности, которые Roblox предоставляет обычному коду игры.
Главную угрозу часто описывают неточно. Обычная модель чаще крадёт не аккаунт разработчика, а контроль над его проектом. Вредоносный сценарий может добавить бэкдор, испортить данные игроков, загрузить чужой модуль, отправлять сведения на внешний сервер или выполнять команды автора модели. Для прямого угона аккаунта обычно нужен вредоносный плагин, браузерное расширение, отдельная программа или фишинговая страница. Я бы не смешивал два разных сценария, поскольку защищаться от них нужно по-разному.
Материал предназначен для легальной проверки собственных проектов. Не применяйте инструкции для несанкционированного доступа, слежки, взлома чужих игр или нарушения правил Roblox. Учитывайте законы своей страны, особенно требования законодательства России.
Установка Roblox Studio и безопасный первый запуск
Roblox Studio бесплатно работает на Windows и macOS. Загружать установщик следует через официальную страницу Studio. Сторонние каталоги программ, архивы с Discord, сборки с модифицированными плагинами и ролики с «улучшенной версией Studio» не дают разработчику никаких полезных преимуществ.
- Откройте официальный Creator Hub и нажмите кнопку загрузки Studio.
- Запустите установщик и войдите в аккаунт Roblox.
- Создайте проект из шаблона Baseplate.
- Откройте окна Explorer, Properties, Output и Script Analysis.
- Сохраните пустую копию проекта до установки моделей и плагинов.
Explorer показывает полное дерево объектов, Properties помогает проверять их параметры, Output выводит ошибки и сообщения сценариев, а Script Analysis находит часть подозрительных и просто некачественных конструкций. Без Explorer разработчик видит красивую сцену, но не замечает сценарий, спрятанный внутри детали, сиденья, инструмента или папки с безобидным названием.
Для проверки незнакомых ресурсов я создаю отдельный локальный проект. Бесплатная модель сначала попадает туда, а не в рабочую игру. После вставки я не нажимаю Play, пока не изучу дерево объекта и исходный код. Обычные сценарии модели не должны выполняться в режиме редактирования, но установленные плагины Studio работают по другим правилам и могут менять проект непосредственно во время работы редактора.
Что на самом деле может сделать чужой код
Документация Roblox прямо указывает, что модели могут содержать сценарии. Само наличие Script ещё не означает атаку. Рабочей двери нужен сценарий открытия, оружию нужна логика выстрела, а интерфейсу может понадобиться LocalScript. Проверять нужно не факт наличия кода, а его назначение, расположение и зависимости.
Особого внимания требует вызов require() с числовым идентификатором.
local Inventory = require(game.ServerStorage.Inventory)
local RemoteModule = require(1234567890)
Первый вариант загружает модуль, который уже лежит в проекте и доступен для проверки. Второй получает опубликованный модуль по идентификатору актива. Roblox официально поддерживает такую возможность для ModuleScript с корневым MainModule. Числовой require() применяют и нормальные библиотеки, однако разработчик перестаёт видеть весь исполняемый код внутри своего проекта. Содержимое удалённого модуля может оказаться запутанным, зависеть от других модулей или измениться после первоначальной проверки.
Ещё один чувствительный механизм связан с HttpService. Серверный сценарий может отправлять запросы сторонним сервисам через GetAsync(), PostAsync() и RequestAsync(), если владелец игры разрешил HTTP-запросы. Roblox предлагает HttpService для аналитики, хранения данных и интеграций, поэтому сам вызов не доказывает вредоносность. Вопрос заключается в адресе сервера и составе передаваемых данных.
Вредоносный сценарий способен отправлять автору модели идентификатор игры, список игроков, внутренние события и другие доступные ему сведения. При наличии ошибок в архитектуре сценарий может раскрыть токены или секреты, которые разработчик по неосторожности записал прямо в исходный код. Хранить ключи Open Cloud, пароли, токены Discord и другие секреты внутри доступных сценариев нельзя.
Сеансовый cookie браузера .ROBLOSECURITY обычному сценарию игры недоступен. Песочница Roblox не даёт серверному Script читать произвольные файлы компьютера или хранилище cookie браузера. Поэтому утверждение «бесплатная модель отправила cookie через HttpService» без дополнительных условий выглядит сомнительно.
Риск меняется, когда разработчик устанавливает плагин. Плагины работают внутри Studio, могут изменять сценарии проекта и обращаться к внешним адресам после выдачи разрешений. Roblox показывает запросы на доступ к модификации сценариев и сетевое соединение. Через Plugin Management разрешения можно отозвать. Официальная документация также предупреждает, что плагин способен связываться с программой на localhost, а отдельная программа уже может работать с файлами компьютера. Связка «плагин плюс внешний установщик» намного опаснее простой модели.
| Признак | Почему требует проверки |
|---|---|
require(1234567890) |
Код загружается из актива и не виден в дереве проекта |
HttpService |
Сценарий может обмениваться данными со сторонним сервером |
LoadAsset() или LoadAssetAsync() |
Во время работы загружаются дополнительные объекты |
loadstring() |
Строка превращается в исполняемый код |
string.char() и длинные массивы чисел |
Автор мог скрыть строки, адреса и команды |
| Сценарий внутри декоративной детали | Расположение не соответствует назначению модели |
| Плагин просит изменять сценарии | Плагин получает возможность внедрять код в проект |
| Плагин просит доступ к неизвестному домену | Данные могут уходить разработчику расширения |
loadstring() по умолчанию отключён через параметр ServerScriptService.LoadStringEnabled. Roblox рекомендует не включать функцию без серьёзной причины. Для обычной игры удалённое выполнение строкового кода почти никогда не требуется.
Как проверить модель до нажатия Play
Количество установок, рейтинг и значок проверенного автора снижают риск, но не заменяют аудит. Аккаунт автора могут взломать, популярный ресурс может получить опасное обновление, а копия известной модели может отличаться от оригинала одной строкой.
После вставки модели выделите её верхний объект в Explorer и раскройте все вложенные папки. Ищите Script, LocalScript и ModuleScript. Быстро вывести список всех сценариев внутри выделенной модели можно через Command Bar.
local Selection = game:GetService("Selection")
for _, root in Selection:Get() do
print("Проверка", root:GetFullName())
for _, object in root:GetDescendants() do
if object:IsA("LuaSourceContainer") then
print(object.ClassName, object:GetFullName())
end
end
end
Скрипт ничего не удаляет и не запускает. Команда только перечисляет контейнеры с кодом. Каждый найденный сценарий нужно открыть и прочитать. Для большой модели используйте глобальный поиск Studio и последовательно проверьте следующие конструкции.
require(
HttpService
GetAsync(
PostAsync(
RequestAsync(
LoadAsset
LoadAssetAsync
loadstring(
string.char
getfenv
setfenv
Ни одна строка из списка не служит автоматическим доказательством атаки. Например, string.char() может обрабатывать текст, а HttpService может отправлять законную статистику. Подозрение усиливает сочетание признаков. Среди них запутанный код без объяснимой причины, числовой require(), неизвестный домен, сценарий в неожиданной части модели и попытка восстановить строки из сотен чисел.
Я также проверяю, соответствует ли объём кода назначению ресурса. Декоративному дереву, стулу или стене сценарии обычно не нужны. Сложная система транспорта, оружия или администрирования может содержать десятки модулей, но автор должен объяснять структуру, зависимости и сетевые запросы.
С плагинами правила жёстче. Откройте Plugins, затем Manage Plugins и отключите всё, чем не пользуетесь. Отзовите разрешения на сетевые обращения и изменение сценариев у расширений, которым такие права не нужны. Плагин для выравнивания деталей не должен отправлять запросы неизвестному серверу или внедрять код в ServerScriptService.
Отдельная учётная запись полезна для проверки незнакомых моделей и плагинов, но не создаёт полноценную песочницу. Вредоносная программа на компьютере видит не Roblox-аккаунт, а браузеры, файлы и активные сеансы пользователя. Для файлов .rbxm, .rbxl и внешних установщиков из Discord или GitHub безопаснее использовать отдельный профиль операционной системы или виртуальную машину.
Рабочие игры лучше передавать группе Roblox и выдавать тестовой учётной записи только нужные права. Групповые роли позволяют разделить доступ к редактированию и публикации. Тестовый аккаунт не должен владеть проектом, Robux и ценными предметами.
Что делать, если подозрительный код уже запустили
- Остановите тест и не публикуйте текущую версию игры.
- Откройте Manage Plugins, отключите новые плагины и отзовите их разрешения.
- Удалите добавленную модель и проверьте, не появились ли сценарии в других ветках Explorer.
- Поищите числовые
require(), сетевые запросы, загрузку активов и запутанные строки по всему проекту. - Отключите HTTP Requests и убедитесь, что
LoadStringEnabledоставлен в положении false. - Сравните проект с сохранённой копией или восстановите заведомо чистую версию.
- Если вредоносная версия уже опубликована, временно закройте доступ к игре и верните проверенную сборку.
После вредоносного плагина одной очистки модели недостаточно. Плагин мог снова добавлять сценарий при каждом открытии Studio. Сначала удалите источник повторного заражения, затем очищайте проект.
Если вместе с моделью или плагином вы запускали внешний файл, проверьте компьютер защитным ПО, удалите подозрительные браузерные расширения и только потом меняйте пароль. Иначе стилер может украсть новый пароль и обновлённый сеанс повторно.
В настройках Roblox откройте раздел Security, завершите неизвестные сеансы и используйте кнопку выхода со всех остальных устройств. Roblox описывает процедуру в инструкции по управлению сеансами. После очистки компьютера смените пароль и включите двухэтапную проверку через приложение-аутентификатор, аппаратный ключ или passkey. Дополнительный разбор схем угона и восстановления доступа есть в материале SecurityLab про защиту аккаунта Roblox.
Частые вопросы
Может ли бесплатная модель Roblox украсть аккаунт?
Обычный сценарий внутри модели не получает прямой доступ к cookie браузера и файлам компьютера. Чаще вредоносная модель внедряет бэкдор в игру. Для угона аккаунта обычно используют плагин, внешний файл, расширение браузера или фишинг.
Любой require с числом является вирусом?
Нет. Roblox официально разрешает загружать опубликованные ModuleScript по идентификатору. Риск связан с тем, что удалённый код сложнее проверить и контролировать. Нужно установить владельца актива, назначение модуля и все его зависимости.
Нужно ли полностью отключать HttpService?
Отключайте HTTP Requests, если игра не использует внешние API. При необходимости оставляйте только понятные интеграции, проверяйте домены и никогда не храните секретные ключи в доступном исходном коде.
Можно ли доверять моделям проверенных авторов?
Проверенный автор и высокая оценка уменьшают вероятность подделки, но не гарантируют безопасность. Перед публикацией разработчик всё равно отвечает за код, который добавил в игру.
Защитит ли отдельный аккаунт разработчика?
Отдельный аккаунт ограничит доступ к играм, Robux и предметам, если права настроены правильно. От вредоносной программы на компьютере отдельный Roblox-профиль не защищает. Для опасных файлов нужна изолированная операционная среда.
Поможет ли антивирусный плагин для Roblox Studio?
Такой плагин может найти известные шаблоны, но не понимает назначение каждого сценария и сам получает чувствительные права. Ручная проверка дерева, исходного кода и сетевых зависимостей надёжнее автоматической кнопки Scan.
Безопасная работа с Roblox Studio строится вокруг простого правила. Чужой код нельзя запускать только потому, что модель красиво выглядит и набрала много установок. Проверяйте ресурсы в пустом проекте, изучайте каждый сценарий, не выдавайте плагинам лишние разрешения и храните рабочие игры в группе с ограниченными ролями. Модель без понятного исходного кода легче заменить, чем потом искать бэкдор среди тысяч объектов и восстанавливать данные игроков.