《面向应用安全防护领域设计Wasm插件》赛题解析

简介: 2023云原生编程挑战赛2:面向应用安全防护领域设计 Wasm 插件本赛题希望基于 WASM 实现 Higress 网关安全防护插件,开发者可以选择 Go/Rust/C++ 等多种语言,并从 IP 防护,WAF 规则防护,CC 防护等不同角度出发设计实现插件。

赛题回顾

赛题链接:https://tianchi.aliyun.com/competition/entrance/532104/information

本赛题提到的安全防护能力一共包含 3 种功能:

  • IP 黑名单防护
  • CC 防护
  • WAF 规则防护

参赛者可以选择实现一个或多个功能,对于每个功能可以分别开发一个对应的 Wasm 插件来实现。

在赛题说明中,对于每种功能,均给出了示例配置,我们的评分程序会按照示例配置的格式生成评测用的配置,然后发起 HTTP 请求去验证各类防护能力是否如配置指定的那样生效。

在功能生效的基础上,评分程序会继续考量插件的性能,主要看 CPU 和内存这两个指标。需要注意的是 Wasm 插件的内存限制只有 1 G,如果插件内存使用不当,将导致插件功能失效,也将失去功能分。

Wasm 插件可以使用 Rust/Go/C++/AssemblyScript 等语言编写,需要注意使用 Go 或者 AssemblyScript 编写时将存在额外的 GC 开销,会消耗更多的 CPU 资源。

Higress 提供了 Rust/Go/C++ 的 Wasm SDK,可以参考以下链接:

Rust SDK:https://github.com/alibaba/higress/tree/main/plugins/wasm-rust

Go SDK:https://github.com/alibaba/higress/tree/main/plugins/wasm-go

C++ SDK:https://github.com/alibaba/higress/tree/main/plugins/wasm-cpp

Wasm 插件机制简介

Higress 底层使用了 Envoy 引擎,在 Envoy Wasm 的基础上做了一些改造,从而实现插件可以路由/域名级生效,但 Wasm 插件本身依赖的 ABI 接口和 Envoy 是完全一致的,即 Proxy Wasm 规范,可以参考这份文档了解 Envoy 中 Wasm 的实现原理:

https://github.com/proxy-wasm/spec/blob/master/docs/WebAssembly-in-Envoy.md

Proxy Wasm 的 ABI 描述可以参考这份文档:

https://github.com/proxy-wasm/spec/tree/442687bb307ea7c701d5744b3f0f3e8308010238/abi-versions/vNEXT

不同语言的 SDK 其实就是这份 ABI 的实现。这份 ABI 实现核心分为两部分:

  1. Functions implemented in the host environment(Host Function):在 Envoy 侧实现的 Function 需要导出给 Wasm 模块使用
  2. Functions implemented in the Wasm module(Module Function):在 Wasm 模块侧实现的 Function 需要导出给 Envoy 使用

举两个 Function 例子:

  1. proxy_on_http_request_headers: 这个是 Wasm 模块提供的函数(Module Function),Envoy 将在接收到 HTTP 请求头后回调这个函数
  2. proxy_dispatch_http_call:这个是 Envoy 侧提供的函数(Host Function),Wasm 实现逻辑时可以调用这个函数来实现基于 Envoy 内 eventloop 机制的异步 HTTP 调用

功能实现提醒

IP 黑名单防护

实现该功能需要关注以下几个点:

  1. 测试时 IP 从 x-real-ip 请求头中解析
  2. IP 格式可能同时存在 IPv4 和 IPv6
  3. 评测配置将使用大批量 IP 数据,需要使用合理的数据结构存储,降低内存使用,简单粗暴的 kv map 存储将导致内存耗尽

CC 防护

实现该功能需要关注以下几个点:

  1. 插件最多使用 1G 内存,需要有 LRU 策略,分配一块固定的内存来统计不同 key 的访问频率,否则也将导致评测过程中内存耗尽
  2. 超过限制后屏蔽调用方指定时间的机制,其实就是将指定 key 放入小黑屋一段时间,可以基于 proxy wasm ABI 中 Host Function 里的 proxy_on_tick 来实现

WAF 规则防护

实现该功能需要关注以下几个点:

  1. 该功能实现复杂度相对较高,我们提供了基于 Go 语言的 demo,但该 demo 的性能是比较差的,如果使用 Rust/C++ 实现,性能分将远超 Go 的版本
  2. 这个插件无需包含配置解析逻辑,评测程序将使用 OWASP 测试集对插件防护能力进行全面评测
  3. 使用高性能的正则库,将对插件性能提升有较大帮助
相关文章
|
8月前
|
机器学习/深度学习 文字识别 监控
安全监控系统:技术架构与应用解析
该系统采用模块化设计,集成了行为识别、视频监控、人脸识别、危险区域检测、异常事件检测、日志追溯及消息推送等功能,并可选配OCR识别模块。基于深度学习与开源技术栈(如TensorFlow、OpenCV),系统具备高精度、低延迟特点,支持实时分析儿童行为、监测危险区域、识别异常事件,并将结果推送给教师或家长。同时兼容主流硬件,支持本地化推理与分布式处理,确保可靠性与扩展性,为幼儿园安全管理提供全面解决方案。
427 3
|
9月前
|
人工智能 API 开发者
HarmonyOS Next~鸿蒙应用框架开发实战:Ability Kit与Accessibility Kit深度解析
本书深入解析HarmonyOS应用框架开发,聚焦Ability Kit与Accessibility Kit两大核心组件。Ability Kit通过FA/PA双引擎架构实现跨设备协同,支持分布式能力开发;Accessibility Kit提供无障碍服务构建方案,优化用户体验。内容涵盖设计理念、实践案例、调试优化及未来演进方向,助力开发者打造高效、包容的分布式应用,体现HarmonyOS生态价值。
596 27
|
9月前
|
供应链 项目管理 容器
深入探索 BPMN、CMMN 和 DMN:从定义到应用的全方位解析
在当今快速变化的商业环境中,对象管理组织(OMG)推出了三种强大的建模标准:BPMN(业务流程模型和符号)、CMMN(案例管理模型和符号)和DMN(决策模型和符号)。它们分别适用于结构化流程管理、动态案例处理和规则驱动的决策制定,并能相互协作,覆盖更广泛的业务场景。BPMN通过直观符号绘制固定流程;CMMN灵活管理不确定的案例;DMN以表格形式定义清晰的决策规则。三者结合可优化企业效率与灵活性。 [阅读更多](https://example.com/blog)
深入探索 BPMN、CMMN 和 DMN:从定义到应用的全方位解析
|
9月前
|
存储 弹性计算 安全
阿里云服务器ECS通用型规格族解析:实例规格、性能基准与场景化应用指南
作为ECS产品矩阵中的核心序列,通用型规格族以均衡的计算、内存、网络和存储性能著称,覆盖从基础应用到高性能计算的广泛场景。通用型规格族属于独享型云服务器,实例采用固定CPU调度模式,实例的每个CPU绑定到一个物理CPU超线程,实例间无CPU资源争抢,实例计算性能稳定且有严格的SLA保证,在性能上会更加稳定,高负载情况下也不会出现资源争夺现象。本文将深度解析阿里云ECS通用型规格族的技术架构、实例规格特性、最新价格政策及典型应用场景,为云计算选型提供参考。
|
9月前
|
数据采集 机器学习/深度学习 存储
可穿戴设备如何重塑医疗健康:技术解析与应用实战
可穿戴设备如何重塑医疗健康:技术解析与应用实战
357 4
|
9月前
|
人工智能 自然语言处理 算法
DeepSeek大模型在客服系统中的应用场景解析
在数字化浪潮下,客户服务领域正经历深刻变革,AI技术成为提升服务效能与体验的关键。DeepSeek大模型凭借自然语言处理、语音交互及多模态技术,显著优化客服流程,提升用户满意度。它通过智能问答、多轮对话引导、多模态语音客服和情绪监测等功能,革新服务模式,实现高效应答与精准分析,推动人机协作,为企业和客户创造更大价值。
805 5
|
9月前
|
机器学习/深度学习 JSON 算法
淘宝拍立淘按图搜索API接口系列的应用与数据解析
淘宝拍立淘按图搜索API接口是阿里巴巴旗下淘宝平台提供的一项基于图像识别技术的创新服务。以下是对该接口系列的应用与数据解析的详细分析
|
9月前
|
机器学习/深度学习 人工智能 自然语言处理
DeepSeek 实践应用解析:合力亿捷智能客服迈向 “真智能” 时代
DeepSeek作为人工智能领域的创新翘楚,凭借领先的技术实力,在智能客服领域掀起变革。通过全渠道智能辅助、精准对话管理、多语言交互、智能工单处理、个性化推荐、情绪分析及反馈监控等功能,大幅提升客户服务效率和质量,助力企业实现卓越升级,推动智能化服务发展。
404 1
|
10月前
|
存储 人工智能 程序员
通义灵码AI程序员实战:从零构建Python记账本应用的开发全解析
本文通过开发Python记账本应用的真实案例,展示通义灵码AI程序员2.0的代码生成能力。从需求分析到功能实现、界面升级及测试覆盖,AI程序员展现了需求转化、技术选型、测试驱动和代码可维护性等核心价值。文中详细解析了如何使用Python标准库和tkinter库实现命令行及图形化界面,并生成单元测试用例,确保应用的稳定性和可维护性。尽管AI工具显著提升开发效率,但用户仍需具备编程基础以进行调试和优化。
659 9
|
10月前
|
搜索推荐 数据挖掘 API
Lazada 淘宝详情 API 的价值与应用解析
在全球化电商浪潮下,Lazada 和淘宝作为东南亚和中国电商市场的关键力量,拥有海量商品数据和庞大用户群体。详情 API 接口为电商开发者、商家和分析师提供了获取商品详细信息(如描述、价格、库存、评价等)的工具,助力业务决策与创新。本文深入解析 Lazada 和淘宝详情 API 的应用场景及价值,并提供 Python 调用示例,帮助读者更好地理解和运用这两个强大的工具。
269 18

热门文章

最新文章

推荐镜像

更多
  • DNS