Пожалуйста, сообщайте о любых потенциальных уязвимостях безопасности на michalis@castle-engine.io
. Спасибо!
С точки зрения Castle Game Engine,
это потребитель многих входных файлов (3D модели, изображения, JSON-описания интерфейса и т.д.)
и потребитель пользовательского ввода
и выводит симуляцию (рендеринг и т.д.) описанного контента.
Входные данные игры в большинстве случаев, в типичных однопользовательских играх жестко закодированы (ваши данные игры предоставляются вместе с игрой), а пользовательский ввод ограничен. А выходные данные — это просто локальная симуляция, не что-то, что отправляется через Интернет или определяет, как работает что-то другое. В типичной однопользовательской игре единственным выходом, который остается после закрытия приложения (при условии, конечно, что злоумышленник не может внедрить вредоносный код), являются логи и файл сохраненной игры.
Таким образом, безопасность обычно не является большой проблемой в игровом движке (в отличие, например, от веб-приложения). То есть, поверхность атаки ограничена. Однако, если вы внимательно прочитаете предыдущий абзац, вы, вероятно, заметите, что есть случаи, когда безопасность имеет значение!
Каждый раз, когда ваше приложение позволяет использовать пользовательские данные, вам нужно беспокоиться о безопасности. Например:
Castle Model Viewer позволяет открывать произвольные 3D/2D модели, и мы обещаем, что он никогда не будет падать или делать что-то непредсказуемое на любом вводе (даже некорректном). Очевидно, вы не хотите, чтобы открытие случайной 3D модели из Интернета позволяло злоумышленнику выполнить код на вашем компьютере.
Аналогично, ваша игра может позволять пользователям использовать модификации (MODs), созданные ими самими или другими. Эти модификации могут быть локальными файлами или загружаться из Интернета. В обоих случаях вы не хотите допускать, чтобы модификации вызывали сбои вашей игры или взаимодействовали (нарушали) не связанные части игры.
Это касается не только безопасности, но и надежности. Даже без учета проблем безопасности (манипулирования приложением для выполнения злонамеренных действий), мы не хотим, чтобы случайная 3D модель вызывала сбой вашего приложения — гораздо лучше иметь надежное сообщение об ошибке, которое показывает проблему.
Таким образом, вот наше правило:
Некорректный ввод должен обрабатываться корректно. Либо с предупреждением, либо с ошибкой (исключением Pascal). Он никогда не должен приводить к сбою или неопределенному поведению. Он никогда не должен обращаться к памяти, к которой ему не следует обращаться, и, очевидно, он никогда не должен позволять злоумышленнику (который контролирует только ввод) выполнять произвольный код.
Кроме того, это важно для любого другого ввода, который мы обрабатываем. Например, многопользовательская игра означает, что мы получаем пакеты из Интернета — снова гарантируем, что мы не будем падать или делать что-то непредсказуемое на любом входящем данных, даже некорректных. Это будет иметь большее значение для нас, когда мы интегрируем полное многопользовательское решение в движок.
Для вопросов безопасности (и общих багов) мы поддерживаем только последнюю стабильную версию Castle Game Engine. Это подразумевает последнюю стабильную версию на https://castle-engine.io/download и https://github.com/castle-engine/castle-engine/releases. Если это указывает на версию snapshot
, то мы также поддерживаем последнюю ненаправленную версию, например 7.0-alpha.3
.
Кроме того, наш движок (как в контексте безопасности, так и во всех других контекстах) поддерживается только на системах, которые имеют поддержку безопасности от их поставщиков.
Например, мы не поддерживаем Windows XP, даже если вы можете заставить компилятор и наш движок работать там. Опять же: Мы тестируем и поддерживаем только системы, которые имеют поддержку безопасности от их поставщиков. Мы настоятельно рекомендуем вам никогда не использовать программное обеспечение без поддержки безопасности. Неважно, насколько вам нравится ваш Windows XP :), пришло время переходить либо на более новую версию Windows, либо на другую систему, например Linux.
Вы должны признать следующее:
Мы всего лишь движок. Мы не контролируем все. Ваш код приложения ответственен за обеспечение безопасности различных вещей. Например:
Предотвращение создания модификаций из Интернета с произвольно большими размерами сохраненных игр — это ваша ответственность, вы определяете, как и когда сохраняются сохраненные игры.
Если вы позволяете пользователям настраивать место сохранения чего-либо на диске (например, логов или сохранений), вы ответственны за то, чтобы это оставалось под контролем данного пользователя. Не позволяйте другим (например, авторам других модификаций или людям, загружающим 3D модели в Интернет) контролировать это и перезаписывать файлы пользователя.
В общем случае учитывайте все действия вашего приложения (или те действия, которые могут быть манипулированы), которые могут повлиять на другие приложения или систему пользователя. Даже запись чего-либо на диск может быть использована недобросовестно, если размер/расположение файла могут быть манипулированы таким образом, как вы не ожидали.
Наш игровой движок не имеет определенных ограничений (потому что мы хотим обеспечить максимальный диапазон использования). Например, мы будем пытаться открывать произвольные 3D модели, у нас нет (по умолчанию) никаких ограничений на размер входного файла, количество вершин и т.д. Если ваше приложение открывает случайные 3D модели из Интернета, вам нужно обеспечить его безопасность со своей стороны, если вы не хотите, чтобы огромные 3D модели исчерпывали оперативную память пользователя (и заставляли их перезагружать свои системы).
Вы также должны признать, что мы не предоставляем никаких юридических гарантий. Мы — это программное обеспечение с открытым исходным кодом, которое вы используете на свой страх и риск. Мы делаем все возможное с имеющимися ресурсами.
Если вам нужна более сильная гарантия, свяжитесь с Michalis Kamburelis и мы можем обсудить ваши потребности, включая аудиты безопасности и гарантированное время реакции на определенные классы проблем.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )