第四届云原生编程挑战赛,是由阿里云主办,云原生应用平台、天池联合承办的云原生著名品牌赛事。自 2015 年开始,大赛已经成功举办了八届,并从 2020 年开始升级为首届云原生编程挑战赛,共吸引了超过 53000 支队伍,覆盖 10 余个国家和地区。本届大赛将深度探索 Serverless、容器、微服务三大热门领城,为热爱技术的年轻人提供一个挑战云原生技术问题的舞台,希望用技术为全社会创造更大价值。大家赶快参赛吧!
参与赛道 2 挑战,瓜分 120,000 元现金奖励
本次大赛面向全球开放,大赛分为初赛和决赛,各赛道初赛 TOP6 战队入围决赛答辩。最终排行将根据初赛及决赛答辩成绩综合得出。
奖项设置
赛道有奖活动,好礼送不停
提交评测有奖活动
1、大赛评测期间,指定时间点赛道一、赛道二排行榜中尾号带有幸运数字的团队,赠送天猫精灵 1 个。(具体时间可查看赛制详情页)
2、赛道一、赛道二提交 A 榜评测,并在排行榜出分的送手,赠送阿里云定制保温杯一个!
3、赛道一、赛道二提交 B 榜评测,并在排行榜出分的选手,赠送阿里云定制雨伞一把!
【有奖训练营】
邀请赛道 2 明星导师为您深度解析赛题内容和难点,0 基础入门,快速 get 参赛技能。完成打卡任务即可领取官方定制荣誉证书和阿里云定制鸭舌帽!
点击立即报名参营:https://developer.aliyun.com/trainingcamp/dec885be1c8048a5b365f3b7d73309ba
【体验有奖】大赛动手体验活动
活动期间(7.24-8.18),报名大赛并完成动手实验活动,即可领取阿里云定制精美鸭舌帽一个!礼品有限,先到先得,快来体验吧!
点击立即参加:https://edu.aliyun.com/learning/topic/series/mse
赛题解析
赛题背景
Higress 是阿里云开源的下一代云原生网关项目,以 Envoy+Istio 为内核,遵循开源 Ingress/Gateway API 标准,实现了流量网关 + 微服务网关 + 安全网关三合一的高集成能力。
Higress 具有强大的插件扩展机制,WASM 插件为主要的开发形式。Higress 提供了插件市场,网关的二次扩展功能均通过插件提供给用户按需使用。用户通过在控制台配置 WASM 插件,实现插件的热更新,并且对流量无损,如下图所示。
此外 WASM 插件在沙盒中执行,对网关自身稳定性无影响。如果用户希望根据自身业务自己开发插件,Higress 也提供了 C++/Go/Rust 插件开发框架,用户可以自由选择语言编写 WASM 插件。
题目解析
本次赛题就是希望参赛者基于 WASM 实现 Higress 网关安全防护插件,插件需要实现以下三个功能:IP 黑名单、WAF 规则防护、CC 防护。
IP 黑名单要求插件通过配置文件读取IP黑名单列表,为测试方便起见,插件逻辑需要通过 x-real-ip 请求头识别客户端 IP,并查询 IP 黑名单是否命中规则。如果命中规则,需要返回 403 状态码,同时应答为 "denied by ip"。
CC 防护要求插件通过配置文件读取 CC 防护规则,通过 header 或者 cookie 识别调用方,通过 QPS、QPM 等限制调用方访问次数,当调用方访问次数超出限制时,根据配置规则对调用方进行屏蔽。如果命中规则,需要返回 403 状态码,同时应答为 "denied by cc"。
WAF 规则防护对插件配置不做要求;会使用 OWASP 测试集(涵盖 SQL 注入,XSS 攻击,SHELL 注入等)模拟攻击进行防护能力测试,如果命中规则,需要返回 403 状态码,同时应答为 "denied by waf"。
解题思路
IP 黑名单功能可以基于哈希表实现,考虑到 IP 列表较多时哈希表占用内存空间较多,参赛者也可以使用基数树来优化内存占用。
CC 防护功能可以基于限流算法如令牌桶来实现,借助于 WASM SDK 中提供的 SharedQueue 可以实现不同 worker 线程间的同步。
赛题组提供了一个实现了 WAF 防护功能的实例插件,参赛者可以在此基础上进行修改,该插件借助于 Coraza 和 OWASP CRS 实现,处理流程与 ModSecurity 一致,如下图所示:
参赛者也可以充分发挥创意,增加更多实用的功能,实现综合能力更高的插件,例如:
- IP 黑名单功能支持 ipv6
- 使用 C++/Rust 实现插件以获得更高的性能
- ……
请尽情发挥您的聪明才智,解决上述一项或多项挑战,基于 Higress 插件扩展机制打造 WEB 安全防护能力!
点击此处,立即报名!