漏洞信息
Apache APISIX 是一个动态、实时、高性能的 API 网关,Apache APISIX Dashboard 使用户可通过前端界面操作 Apache APISIX。
近日网上爆出在 Apache APISIX Dashboard v2.7-2.10版本中存在未授权访问漏洞,攻击者无需登录就可以访问某些接口,深入分析发现还可以RCE。
漏洞分析
可以直接采用docker进行安装。Apache APISIX采用`droplet`进行鉴权处理,认证过程如下(`authentication.go`):
从上面定义来看,以`/apisix`开头的URL,除了`/apisix/admin/tool/version`和`/apisix/admin/user/login`以外均需要认证,通过判断HTTP Header中的`Authorization`来完成鉴权处理。
接下来分析一下路由信息:
注册的`handler`包括:
route.NewHandler,ssl.NewHandler,consumer.NewHandler,upstream.NewHandler,service.NewHandler,schema.NewHandler,schema.NewSchemaHandler,healthz.NewHandler,authentication.NewHandler,global_rule.NewHandler,server_info.NewHandler,label.NewHandler,data_loader.NewHandler,data_loader.NewImportHandler,tool.NewHandler,plugin_config.NewHandler,migrate.NewHandler,proto.NewHandler,stream_route.NewHandler,
正常情况下利用`droplet`来对URL进行鉴权处理,与`authentication.go`中的`Handle`对应,比如`consumer`:
我们发现在某个`handler`中定义的路由没有经过`droplet`处理:
存在认证绕过漏洞,无需登录可直接访问API接口。深入分析发现还可以RCE,这里就不放出来了。
修复方案
新版本将框架换成了`gin-gonic`,所有路由都要走`Authentication`进行处理。