如何解决WSO2 API Manager 3.2.0 Carbon平台的XSS攻击漏洞问题
WSO2 API Manager 3.2.0 Carbon XSS漏洞解决方案
该漏洞为反射型XSS,触发点为Carbon控制台/carbon/generic/list.jsp接口的breadcrumb传参,服务端未对用户输入的特殊字符做HTML实体转义直接输出到前端,导致攻击者可注入任意JavaScript代码执行。
漏洞复现请求示例
GET /carbon/generic/list.jsp?region=region3&item=governance_list_api_menu&key=api&breadcrumb=APIs%26%2339%3b)%3balert(76174)%3b%2f%2f&singularLabel=API&pluralLabel=APIs HTTP/1.1 Host: xxx.xx.xx.xx:9443 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:94.0) Gecko/20100101 Firefox/94.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Connection: close Cookie: region1_identity_menu=visible; menuPanel=visible; menuPanelType=main; JSESSIONID=55DB064DEF96C3060444A39F6A8412ED; requestedURI=../../carbon/admin/index.jsp; region1_configure_menu=none; region3_registry_menu=none; region4_monitor_menu=none; region5_tools_menu=none; current-breadcrumb=metadata_menu%252Clist_sub_menu%252Cgovernance_list_api_menu%2523 Upgrade-Insecure-Requests: 1 Sec-Fetch-Dest: document Sec-Fetch-Mode: navigate Sec-Fetch-Site: none Sec-Fetch-User: ?1 Pragma: no-cache Cache-Control: no-cache
漏洞复现效果


修复方案
- 安装官方对应补丁
该漏洞为WSO2官方已确认的公开漏洞,针对API Manager 3.2.0版本,可直接安装WSO2推出的carbon-kernel对应修复补丁,补丁会修复list.jsp的参数转义逻辑,所有入参做HTML实体编码后再输出到前端页面,从根源解决问题。 - 手动修改页面代码
若暂时无法安装官方补丁,可直接修改<WSO2_AM安装目录>/repository/deployment/server/jspweb/carbon/generic/list.jsp文件,找到breadcrumb参数输出到页面的代码位置,将参数值用JSTL的fn:escapeXml函数做转义处理,示例修改后代码:${fn:escapeXml(param.breadcrumb)},修改完成后重启服务即可生效。 - 临时添加WAF防护规则
若无法直接修改服务端代码,可在WAF或者入口网关层添加防护规则,拦截breadcrumb参数中包含<、>、'、"、(、)、javascript:、alert等特殊字符和敏感关键字的请求,暂时阻断漏洞利用路径。 - 升级至高版本
该漏洞在WSO2 API Manager 4.0.0及以上稳定版本中已被完全修复,条件允许的情况下可直接升级版本,同时覆盖修复其他已知安全漏洞。
内容的提问来源于stack exchange,提问作者Tohid Makari
相关产品推荐
相关产品推荐

