Подвержены ли веб-игры Unity межсайтовому скриптингу

Специально для игр Unity, скомпилированных для Интернета.

Поскольку веб-экспортер Unity нацелен на HTML5, делает ли это его уязвимым для XSS-атаки. Предположим, например, что есть многопользовательская игра, в которой пользователи могут вводить и сохранять текст, который будут просматривать все игроки в игре. Сможет ли злоумышленник внедрить некоторый javascript, который затем будет выполняться на всех клиентах, запускающих игру, которые могут видеть введенный текст?


person Rumham    schedule 30.01.2018    source источник
comment
XSS возможен только в том случае, если вы загружаете HTML-шаблоны с недезинфицированным пользовательским вводом и отправляете полученный HTML-код клиентам. Если пользовательский ввод только обрабатывается, а не выполняется, проблем быть не должно. Имейте в виду, что в этом смысле браузеры выполняют HTML, но браузеры не могут выполнять что-либо, визуализируемое через WebGL. Просто не делайте глупостей, например, вводите недезинфицированный пользовательский ввод в шейдер WebGL.   -  person Patrick Roberts    schedule 30.01.2018
comment
этот вопрос не имеет абсолютно никакого отношения к WebGL. Спрашивающий использует чрезвычайно плохой выбор имен Unity для функции Unity по экспорту в HTML5, и поэтому почти каждый вопрос об этом пути экспорта неправильно помечен на SO, и спрашивающий понятия не имеет, что их условия неверны. Проблемы XSS для игр, экспортированных из Unity в HTML5, ничем не отличаются от любой другой страницы HTML5. Ни больше ни меньше.   -  person gman    schedule 30.01.2018
comment
@gman спасибо за уточнение, насколько я понимаю, веб-игры Unity построены поверх WebGL, и вы правы, предполагая, что мой вопрос был больше ориентирован на единство. Я отредактирую вопрос, чтобы уточнить это.   -  person Rumham    schedule 30.01.2018
comment
Веб-игры Unity созданы на основе HTML5. Unity неправильно назвала tbat WebGL. Веб-игры Unity используют функции HTML5, включая веб-аудио, веб-сборку, GamePad API, JavaScript, полноэкранный API, API блокировки указателя, API Blob, API XMLHTTPRequest, API WebGL и другие API, которые являются частью HTML5. Если бы Unity действительно экспортировалась в WebGL, то она не могла бы загружать файлы, воспроизводить звуки или принимать пользовательский ввод с мыши, клавиатуры, сенсорного экрана, геймпада и т. д., поскольку WebGL не делает ничего из этого.   -  person gman    schedule 31.01.2018


Ответы (2)


ответ во многом зависит от того, как настроен ваш сервер, но в целом любые данные, которые вы отправляете на сервер и обрабатываете без дезинфекции, делают его открытым для атаки XSS. Опять же, это зависит от того, что вы делаете с этими данными, но рекомендуется постоянно дезинфицировать ваши данные. здесь нет ничего особенного для WebGL, если только вы не запускаете экземпляр WebGL на своем сервере для обработки этих данных.

person axaq    schedule 30.01.2018
comment
Я думаю, что одним из моментов было бы избегать создания шейдеров с использованием строк, собранных из пользовательского ввода, поскольку это может быть потенциальным вектором атаки, получающим прямой доступ к графическому процессору, если в реализации WebGL есть какие-либо уязвимости. - person Patrick Roberts; 30.01.2018
comment
если вы можете кросс-скрипт, то вы можете делать все, что хотите. это означает создание собственного контекста WebGL, аудиоконтекста, рабочих потоков и т. д. - person gman; 30.01.2018

Да, в некотором роде. Если вы разрешите несанитизированный код на своей веб-странице, будь то шейдеры JS или WebGL или что-то еще, он может и будет выполнять и использовать ваших пользователей.

При этом я никогда не слышал об использовании WebGL в XSS. В некотором смысле, вероятно, потому, что несколько проще (и люди делают это дольше) внедрить небольшой скрипт на страницу, чем запустить и запустить полный шейдер. И что еще более важно, XSS-атаки обычно связаны с кражей информации у пользователей или заставляют их автоматически «выполнять действия», на которые они не санкционированы, и тому подобное. Использование тонны мощности графического процессора не так уж полезно для достижения целей хакера XSS.

Если мы когда-нибудь увидим, что WebGL используется в XSS-атаке, я предполагаю, что это, вероятно, будет схема криптомайнинга, поскольку это одна из немногих вещей, которые выиграют от вычислительной мощности GPU.


Чтобы смягчить это, как и все XSS, дезинфицировать, дезинфицировать, дезинфицировать! Убедитесь, что ни один шаг от клиента к серверу обратно к клиенту не может то, что пользователь вводит в этом поле, выполнять что-либо самостоятельно, Javascript, SQL , WebGL, ничего.

person Kallmanation    schedule 30.01.2018
comment
Я не уверен, кто агрессивно голосует против каждого ответа, когда-либо полученного на этот вопрос, но если у вас есть лучший ответ или предложения о том, как мы могли бы улучшить наши ответы, я хотел бы их услышать. - person Kallmanation; 31.01.2018