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

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 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. 使用高性能的正则库,将对插件性能提升有较大帮助
相关文章
|
28天前
|
Java
轻松上手Java字节码编辑:IDEA插件VisualClassBytes全方位解析
本插件VisualClassBytes可修改class字节码,包括class信息、字段信息、内部类,常量池和方法等。
78 6
|
13天前
|
编译器 PHP 开发者
PHP 8新特性解析与实战应用####
随着PHP 8的发布,这一经典编程语言迎来了诸多令人瞩目的新特性和性能优化。本文将深入探讨PHP 8中的几个关键新功能,包括命名参数、JIT编译器、新的字符串处理函数以及错误处理改进等。通过实际代码示例,展示如何在现有项目中有效利用这些新特性来提升代码的可读性、维护性和执行效率。无论你是PHP新手还是经验丰富的开发者,本文都将为你提供实用的技术洞察和最佳实践指导。 ####
25 1
|
19天前
|
存储 安全 Java
Java多线程编程中的并发容器:深入解析与实战应用####
在本文中,我们将探讨Java多线程编程中的一个核心话题——并发容器。不同于传统单一线程环境下的数据结构,并发容器专为多线程场景设计,确保数据访问的线程安全性和高效性。我们将从基础概念出发,逐步深入到`java.util.concurrent`包下的核心并发容器实现,如`ConcurrentHashMap`、`CopyOnWriteArrayList`以及`BlockingQueue`等,通过实例代码演示其使用方法,并分析它们背后的设计原理与适用场景。无论你是Java并发编程的初学者还是希望深化理解的开发者,本文都将为你提供有价值的见解与实践指导。 --- ####
|
20天前
|
Java 测试技术 API
Java 反射机制:深入解析与应用实践
《Java反射机制:深入解析与应用实践》全面解析Java反射API,探讨其内部运作原理、应用场景及最佳实践,帮助开发者掌握利用反射增强程序灵活性与可扩展性的技巧。
53 4
|
24天前
RS-485网络中的标准端接与交流电端接应用解析
RS-485,作为一种广泛应用的差分信号传输标准,因其传输距离远、抗干扰能力强、支持多点通讯等优点,在工业自动化、智能建筑、交通运输等领域得到了广泛应用。在构建RS-485网络时,端接技术扮演着至关重要的角色,它直接影响到网络的信号完整性、稳定性和通信质量。
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
思通数科AI平台在尽职调查中的技术解析与应用
思通数科AI多模态能力平台结合OCR、NLP和深度学习技术,为IPO尽职调查、融资等重要交易环节提供智能化解决方案。平台自动识别、提取并分类海量文档,实现高效数据核验与合规性检查,显著提升审查速度和精准度,同时保障敏感信息管理和数据安全。
99 11
|
1月前
|
自然语言处理 并行计算 数据可视化
免费开源法律文档比对工具:技术解析与应用
这款免费开源的法律文档比对工具,利用先进的文本分析和自然语言处理技术,实现高效、精准的文档比对。核心功能包括文本差异检测、多格式支持、语义分析、批量处理及用户友好的可视化界面,广泛适用于法律行业的各类场景。
|
1月前
|
安全 编译器 PHP
PHP 8新特性解析与实践应用####
————探索PHP 8的创新功能及其在现代Web开发中的实际应用
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
医疗行业的语音识别技术解析:AI多模态能力平台的应用与架构
AI多模态能力平台通过语音识别技术,实现实时转录医患对话,自动生成结构化数据,提高医疗效率。平台具备强大的环境降噪、语音分离及自然语言处理能力,支持与医院系统无缝集成,广泛应用于门诊记录、多学科会诊和急诊场景,显著提升工作效率和数据准确性。
|
1月前
|
机器学习/深度学习 人工智能 安全
TPAMI:安全强化学习方法、理论与应用综述,慕工大、同济、伯克利等深度解析
【10月更文挑战第27天】强化学习(RL)在实际应用中展现出巨大潜力,但其安全性问题日益凸显。为此,安全强化学习(SRL)应运而生。近日,来自慕尼黑工业大学、同济大学和加州大学伯克利分校的研究人员在《IEEE模式分析与机器智能汇刊》上发表了一篇综述论文,系统介绍了SRL的方法、理论和应用。SRL主要面临安全性定义模糊、探索与利用平衡以及鲁棒性与可靠性等挑战。研究人员提出了基于约束、基于风险和基于监督学习等多种方法来应对这些挑战。
59 2

推荐镜像

更多