2个不稳定版本
0.6.0 | 2024年6月27日 |
---|---|
0.5.0 | 2024年4月7日 |
#409 in WebAssembly
用于 3 个Crate
120KB
2K SLoC
在不确定性下的自动化安全决策。
🧰 WebAssembly SDK
Bulwark的WebAssembly (WASM) SDK为在Rust中开发检测插件提供了一个接口。
🏰 什么是Bulwark?
Bulwark是一个快速、现代、开源的Web应用防火墙(WAF)和API安全网关。它简化了检测安全控制的实现,同时提供对您的Web服务的全面可见性。Bulwark的基于代码的检测方法提供了规则定义,使安全团队能够对其对持续性和自适应威胁的反应更有信心。Bulwark插件提供了一系列功能,使安全团队能够快速定义和演变检测,而无需更改底层应用程序。
- 开源。 在Apache 2.0许可下免费提供。我们致力于保持这种方式。
- 可扩展。 使用SDK定义自定义检测逻辑,或根据您的需求自定义可重用参数化检测,而无需编写代码。
- 可观察。 使用内置的可观察性功能,全面了解您的流量和检测操作。丰富您的流量数据以提高上下文。
- 灵活。 Bulwark的插件API允许检测与Redis状态和其他服务(包括机器学习模型)交互。插件可以协同使用Bulwark的集成决策执行检测。安全地解密会话cookie以操作应用级信息。
- 可测试。 检测可以具有自动化测试。防止误分类进入生产环境。
- 准确。 Bulwark内置了帮助调整检测以实现高精度、最小化误报以及快速修复精度问题的机制。在满足检测控制合规要求的同时,避免可能导致操作中断的误报。
- 沙盒。 每个检测都在一个安全的WebAssembly沙盒中运行,隔离检测逻辑,并确保访问永远不会超出其权限授予。
- 安全。 在仅观察模式下部署,在启用请求阻止之前建立对系统的信心。
- 商业支持。 Bulwark 正在由 Bulwark Security PBC 激活开发和支持。除了 Bulwark 云端管理应用之外,我们打算提供免费社区规则集、高级商业规则集、付费支持和专业服务。如果您对任何这些商业产品感兴趣,并希望以设计合作伙伴的身份获得折扣早期访问,请与我们联系 ([email protected])。
🕵️ 应用场景
- 账户接管:检测针对账户登录页面、认证 API 或使用被盗 Cookie 的凭证填充、密码喷洒、会话劫持和钓鱼等滥用模式。减少应对这些威胁所花费的时间。
- 网站抓取:识别并阻止忽略
robots.txt
或以异常频率抓取网站数据的机器人,同时不影响行为良好的机器人和爬虫。这对于担心其网站未经授权被纳入训练数据的用户尤为重要。 - 免费层滥用:防止滥用免费层使用,使其服务变得不可持续。将运行时侦探控制的结果发送到 Bulwark 插件,其中它可以与 CAPTCHA 和其他信号结合,以帮助更早地识别这些行为,在它们消耗有限资源之前。
- 组合欺诈信号:利用 Bulwark 访问外部服务的能力,无缝结合独立供应商的欺诈评分。保护内部服务免受可能导致可用性影响的自动欺诈攻击,如卡测试。
- 阻止漏洞:Bulwark 可用作 WAF 来检测和阻止针对 XSS、SQL 注入和其他常见漏洞的漏洞。
💻 安装
- 通过 rustup 安装 Rust 工具链。
- 安装构建插件所需的
wasm32-wasi
目标:rustup target add wasm32-wasi
- 安装 Bulwark:
cargo install bulwark-cli
🚀 快速入门
Bulwark 部署中有多个组件协同工作。在 Bulwark 的当前版本中,Envoy 负责初始 HTTP 请求处理。Bulwark 使用 Envoy 的 外部处理 API 来挂钩该处理并在流量上进行安全决策。在大多数配置中,将有一个内部服务处理 Web 应用的实际业务逻辑,并且 Envoy 将配置为在 Bulwark 做出决策后发送流量。建议在使用 Bulwark 时与 Redis 服务器 一起使用,以维护多个 Bulwark 实例之间的状态,尽管如果仅使用无状态检测插件,这并非严格必要。
提供了一个示例 Envoy 配置文件,作为上述典型部署设置的起点。使用以下命令启动 Envoy 服务器:
envoy -c envoy.yaml
Bulwark 自身的 配置文件 是一个 TOML 文件,它定义了应使用哪些检测插件来处理请求,以及如监听端口和 Redis 服务器的地址等详细信息。Bulwark 配置中的监听端口必须与 Envoy 配置中相应外部处理过滤器部分给出的端口号相匹配。使用以下命令启动 Bulwark:
bulwark-cli ext-processor -c bulwark.toml
堡垒插件在使用前编译为WebAssembly。虽然建议使用类似GitHub Actions的工作流程来完成此操作,但您也可以手动进行,尤其是在开发过程中。要编译一个堡垒插件
bulwark-cli build -p rules/example-plugin -o dist/plugins/
💪 贡献
查看开放问题列表。我们积极维护一个适合新贡献者的问题列表。或者,检测插件可以贡献给社区规则集。
我们不要求贡献者签署许可协议(CLA),因为我们希望Bulwark的用户有信心软件将在当前许可下继续可用。
🤝 许可
本项目采用Apache 2.0许可证,附带LLVM异常。有关详细信息,请参阅LICENSE。
除非您明确声明,否则您故意提交以包含在本项目中的任何贡献,如Apache 2.0许可证中定义,应按上述方式许可,不附加任何额外条款或条件。
🛟 获取帮助
首先,检查您的问题是否可以在任何指南或API文档中找到。如果您在那里找不到答案,请检查Bulwark项目的讨论论坛。我们很高兴通过我们的社区论坛回答您的问题并提供指导。
依赖项
~6–8.5MB
~176K SLoC