被当地网信办扫描到漏洞,发文整改。EMQX 系统存在 Swagger 未授权访问漏洞,经测试,情况属实。综合利用漏洞,允许攻击者远程无需身份验证即可访问系统敏感信息页面,构成信息泄露和运行安全风险。
代码中没有将 swagger
关闭的配置提供出来,我改了下 emqx_dashboard.erl
的源码(最新的master分支),BaseMinirest
变量中添加 swagger_support => false
,重新编译启动后即可无法访问
可以将 emqx
目录下的 lib/emqx_dashboard-5.0.31/ebin/emqx_dashboard.beam
文件备份后替换为下面文件,而后重新启动 emqx
emqx_dashboard.tar.gz (12.4 KB)
注意:
1、文件编译环境为 erlang: "25.3.2-2"
2、如果升级 emqx
版本,此文件可能会失效
当然,还是希望官方能将此项配置开放出来
目前不支持通过 配置/ui/api 等方式关闭 swagger 文档页面。
除了 @jostar 提到的重新编译部署的方式以外,也可通过 nginx 或其他反代/负载均衡器
为 /api-docs
路径添加路由,以返回 404 或其他页面达到禁止访问的目的。
nginx conf example:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 28083;
location / {
proxy_pass http://127.0.0.1:18083;
}
location /api-docs {
return 404;
}
}
# server {
# listen 28084 ssl;
# ssl_certificate [your_cert_file_path];
# ssl_certificate_key [your_key_file_path];
# location / {
# proxy_pass https://127.0.0.1:18084;
# }
# location /api-docs {
# return 404;
# }
# }
}
目录下没有 emqx_dashboard.beam
文件
EMQX版本和部署方式提供一下
你这不是版本号,进入这个目录 /usr/lib/emqx/releases
,有一个数字组成的文件,类似这种
这个拦截不了,不生效
v5.6.0 版本支持在配置中关闭 swagger 页面。
配置项
dashboard.swagger_support=false
https://www.emqx.io/docs/zh/v5.6.0/hocon/#V-dashboard-S-dashboard-swagger_support
那还得升级到5.6版本吗,现在生产环境用的5.3.2 怎么搞啊
我们也是被通报的这个问题
生产环境可以使用滚动升级。
https://www.emqx.io/docs/zh/latest/deploy/rolling-upgrades.html
另外,反代拦截 /api-docs
页面是验证过可用的。
是不是你的 nginx 配置没写对?还是实际去访问了 EMQX 的地址,不是通过反代访问的?
直接访问的emqx地址,不是反向的
还有个问题,系统是centos7.4 的,最高版本只能安装到5.3.2,再高点版本,直接安装失败了,报很多错误
访问反代地址看看呢?
反代拦截只影响通过反向代理进来的外部请求。
el7 安装失败的问题,单独开个新帖子发下报错信息吧。
好的,我试试反代
这个配置无法在老版本中兼容处理吗?比如5.3.0版本
不能