近日网络上曝光了 Apache Log4j2 的近程代码执行破绽。该破绽在 Apache Log4j2 的开发团队齐全修复之前提前曝光,导致在朝利用,应用 Log4j2 的 2.x 至 2.14.1 的版本的我的项目均有被攻打危险。
破绽利用剖析
从该破绽复现过程咱们能够剖析出,利用该破绽的关键步骤是结构歹意的 payload,相似于
{xxxxx//attacker.com/a}
在官网公布齐全修复版本以及以后环境升至修复版本之前,须要一种长期措施来拦挡携带改歹意负载的申请,爱护服务不受该破绽的在朝攻打。
Apache APISIX 应答措施
咱们能够在 Apache APISIX 上过滤申请负载,用正则匹配歹意的 payload 的关键词,并对其进行拦挡。
假如 payload 的关键字为 “xxxxx”,能够用 serverless 插件执行自定义拦挡脚本,配置示例如下:
curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '{"uri":"/*","plugins":{"serverless-pre-function":{"phase":"rewrite","functions":["return function(conf, ctx) local core = require(\"apisix.core\"); local payload, err = core.request.get_body(); if not payload then local uri_args, err = core.request.get_uri_args(ctx)\n if uri_args then payload = core.json.encode(uri_args, true) end; end; local m = ngx.re.match(payload, \"xxxxx\", \"jo\"); if m then ngx.exit(403) end; end"
]
}
},
"upstream": {
"type": "roundrobin",
"nodes": {"127.0.0.1:1980": 1}
}
}'
留神:上述配置中 serverless-pre-function
相干的配置是自定义脚本局部。其余配置为 Apache APISIX 惯例配置,请依据理论状况调整。
上述 functions 字段对应的脚本中次要做了以下事件
- 提取申请负载(包含 GET 申请的 URL 传参形式和 POST/PUT 申请体传参形式)
- 正则匹配歹意负载
- 拦挡携带歹意负载的申请
该脚本提供了解决此类歹意负载申请的实现思路,次要是进行捕捉攻打特色,比方 jndi
关键字等。大家能够依据本人的需要,对该脚本进行欠缺或者优化。
验证
拦挡在 GET 申请参数中携带歹意负载 :
curl -I 'http://127.0.0.1:9080/hello?foo=${xxxxx//attacker.com/a}'
HTTP/1.1 403 Forbidden
……
拦挡在 POST 申请体 (application/json) 中携带歹意负载 :
curl -i 'http://127.0.0.1:9080/hello' -H 'Content-Type: application/json' -X POST -d '{"foo":"${xxxxx//attacker.com/a}"}'
HTTP/1.1 403 Forbidden
……
拦挡在 POST 申请体 (text/plain) 中携带歹意负载 :
curl -i 'http://127.0.0.1:9080/hello' -H 'Content-Type: text/plain' -X POST -d '{xxxxx//attacker.com/a}'
HTTP/1.1 403 Forbidden
……
拦挡在 POST 申请体 (application/x-www-form-urlencoded,不对申请体进行 URL 编码) 中携带歹意负载 :
curl -i 'http://127.0.0.1:9080/hello' -H 'Content-Type: application/x-www-form-urlencoded' -X POST -d 'foo=${xxxxx//attacker.com/a}'
HTTP/1.1 403 Forbidden
……
对于 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/…