乐趣区

关于云原生:Apache-APISIX-requesturi-变量控制不当存在路径穿透风险公告CVE202143557

问题形容

在 Apache APISIX 2.10.2 之前的版本中,应用 Apache APISIX Ingress Controller 中 $request_uri 变量存在「绕过局部限度」导致门路穿透危险的问题。

在应用 uri-blocker 插件进行测试场景时发现:

$ ./apisix_request.sh "/public-service/public"
Defaulted container "apisix" out of: apisix, wait-etcd (init)
{"data":"public data"}
$ ./apisix_request.sh "/protected-service/protected"
Defaulted container "apisix" out of: apisix, wait-etcd (init)
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>openresty</center>
</body>
</html>

在上述两种场景下,public-service 是可用的,protected-service 则被插件阻止了。后续对上述场景进行验证测试,发现两种状况均能绕过 Uri 的限度。

因为 uri-blocker 插件应用 ctx.var.require_uri 变量不当,导致:

  • 攻击者能够绕过访问控制限度逻辑,拜访本应该禁止的 API;
  • 自定义插件的开发者或者不晓得 ngx.var.request_uri 变量是不可信赖的。

影响版本

Apache APISIX 2.10.2 之前的所有版本(不蕴含 2.10.2)。

解决方案

该问题目前已在 2.10.2+ 版本中失去解决,请尽快更新至相干版本。

操作倡议:如果在应用自定义插件时,可在应用 ngx.var.request_uri 变量前进行门路规范化的相干解决。同时额定查看下 ctx.var.upstream_uri

ctx.var.uri 这两个变量,尽管可能曾经被规范化了,但防患于未然。

破绽详情

破绽公开工夫:2021 年 11 月 22 日

CVE 详细信息:https://nvd.nist.gov/vuln/det…

贡献者简介

该破绽由社区用户 Marcin Niemiec(GitHub @xvnpw)发现,并及时向 Apache 软件基金会上报该破绽。

感激 Marcin Niemiec 对 Apache APISIX 社区的奉献。

对于 Apache APISIX

Apache APISIX 是一个动静、实时、高性能的开源 API 网关,提供负载平衡、动静上游、灰度公布、服务熔断、身份认证、可观测性等丰盛的流量治理性能。Apache APISIX 能够帮忙企业疾速、平安地解决 API 和微服务流量,包含网关、Kubernetes Ingress 和服务网格等。

Apache APISIX 落地用户(仅局部)

  • Apache APISIX GitHub:https://github.com/apache/apisix
  • Apache APISIX 官网:https://apisix.apache.org/
  • Apache APISIX 文档:https://apisix.apache.org/zh/…
退出移动版