4 个版本 (破坏性)
新 0.4.0 | 2024年8月3日 |
---|---|
0.3.0 | 2024年7月6日 |
0.2.0 | 2024年4月25日 |
0.1.0 | 2024年4月21日 |
#603 在 游戏开发
每月145 次下载
46KB
433 行
bevy_mod_lockdown
bevy_mod_lockdown 是一个库,用于减少应用程序提供的攻击面。
[!WARNING]
此插件处于非常早期的开发阶段。
预期将包含的功能和现有功能的 API 将发生重大变化。
描述
[!NOTE]
此仓库面向额外的功能以及将现有功能扩展到其他平台。
目前仅限于我在个人项目中使用的功能和可用的平台。
bevy_mod_lockdown 提供了减少应用程序提供攻击面的方法。例如,它可以禁用网络使用或限制对特定目录的文件系统访问。这主要适用于加载第三方代码的应用程序,但也可以在其他情况下提供帮助。
此插件还提供了一些 资源
来检查“封锁”状态。这允许应用程序在无法禁用网络访问时终止。有关更多信息,请参阅此 章节。
[!WARNING]
这仅减少了攻击面,并不使运行未知代码变得安全。
建议确保应用程序在未使用 bevy_mod_lockdown 的情况下已经安全。
状态资源
资源 LockdownAdjustments
可以用于检查调整状态。每个功能都在资源中添加了一个与功能名称匹配的字段。这些字段是枚举,其中包含描述当前状态的变体。
功能
为了尽可能模块化,此库的大部分功能都由单独的功能控制。
默认情况下,这些功能都没有启用。您需要启用一些功能才能使此库变得有用。
您可以在以下表中查看功能的可用性和它们在 full_speed 中的包含情况。
[!NOTE] 默认情况下,仅启用功能
feature_warning
,当未启用其他功能时,它将记录一条警告。
平台无关功能
此处描述的功能与使用的平台无关。
功能: egui
为使用egui显示LockdownAdjustments
添加了便捷方法。请参考egui
示例了解用法。
使用以下命令运行示例:cargo run --example egui --features="egui"
。包含其他特性可以查看除警告以外的内容。
平台依赖特性
不同平台上的特性支持
Linux | Windows | |
---|---|---|
文件系统 |
✅ | ❔ |
网络 |
❔ | ❔ |
权限 |
✅ | ✅ |
系统调用 |
❔ | ❔ |
图例
❔ = 待评估
🔳 = 尚未实现
✅ = 已实现
❎ = 本平台不支持此特性
[!NOTE]
在平台不支持的特性上启用的特性将不起作用[^1]。
[^1]: 在某些情况下,除了日志条目外。
特性: filesystem
限制对文件系统的访问,阻止对未明确允许的所有路径的访问。
使用资源AllowedFilesystemAccess
调整允许读取和/或写入的路径。默认情况下,这已经包括了当前平台bevy所需的路径。
这发生在Startup
中,这意味着在PreStartup
和部分在Startup
中仍然可以完全访问文件系统。
[!NOTE]
你可能需要至少添加你的配置和保存游戏的路径,以便你的游戏按预期工作。
目前仅在Linux上实现。它使用landlock,并要求内核支持它。
特性: network
尚不支持任何平台。
特性: privilege
降低授予应用程序的权限。
- Linux: 调整r/e/s uid和gid。目前不检查能力。
- Windows: 使用AdjustTokenPrivileges禁用所有权限。
这发生在PostStartup
中,这意味着在PreStartup
、Startup
和部分在PostStartup
中仍然可以访问提升的权限。
特性: system_call
尚不支持任何平台。
安装
通过将其添加到你的Cargo.toml
中将库包含到你的项目中。
[dependencies]
bevy = "0.14.0"
bevy_mod_lockdown = "0.3.0"
然后像下面这样将LockdownPlugin
添加到你的应用程序中。
use bevy::prelude::*;
use bevy_mod_lockdown::LockdownPlugin;
fn main(){
App::new()
.add_plugins(LockdownPlugin)
.run();
}
进一步阅读/参考
- 待办事项
贡献
欢迎贡献。对于较大的更改,请首先提交一个问题。
你的贡献
除非明确说明,否则提交给此项目的任何贡献均应双授权许可下,在MIT许可证和Apache许可证,版本2.0下,没有任何额外的条款或条件。
许可证
此存储库中的所有代码均双授权许可,在以下任一许可证下:
Bevy兼容性
bevy | bevy_mod_lockdown |
---|---|
0.14.1 | 0.4.0 |
0.14.0 | 0.3.0 |
0.13.1 | 0.1.0 - 0.2.0 |
依赖项
~18–58MB
~1M SLoC