1. 漏洞概述
2022年11月16日,监测到YApi命令执行漏洞,漏洞威胁等级:高危。
2. 漏洞详情
YApi 是一个支持本地部署的可视化接口管理平台。
YApi 在 1.12.0 之前的版本(目前所有版本)中由于server/controllers/base.js没有正确对 token 参数进行正确过滤,导致攻击者可通过MongoDB注入获取用户 token,其中包括用户ID、项目ID等参数。yapi的common/postmanLib.js里的pre-request和pre-response方法存在缺陷点,并且在server/utils/commons.js内引入sandbox函数,sandbox函数中包含vm模块,通过注入调用自动化测试接口runAutoTest(),进而利用沙箱逃逸触发命令执行。
3. 影响版本
影响版本:
YApi < 1.12.0
4. 处置建议
修复方案
一、版本升级
目前官方已有可更新版本,建议受影响用户更新至 1.12.0 及以上版本。
https://github.com/YMFE/yapi/releases/tag/v1.12.0
注:
1. YApi 1.11.0版本已修复Mongo注入获取Token的问题,导致攻击者无法在未授权的情况下利用此漏洞。
2. 在YApi 1.12.0的版本更新中,仅默认禁用了Pre-request和Pre-response脚本功能,使得此漏洞在默认配置下无法利用。
二、缓解措施
1. 在业务允许的情况下,建议将YApi部署在内网,禁止外网访问。
2. 修改默认token加密的盐:
编辑项目根目录中的config.json,添加"passsalt":"任意随机值",如:
{
…
"passsalt":"this_is_a_test"
…
}
保存,重启YApi服务即可。