# (CVE-2020-4054)Sanitize 跨站脚本漏洞
======================================
一、漏洞简介
————
于2020/06/16,[Ruby
Sanitize](https://github.com/rgrove/sanitize/security/advisories/GHSA-p4x4-rw2p-8j8m)项目官方发布了编号为\`\`CVE-2020-4054`的[漏洞公告](https://github.com/rgrove/sanitize/security/advisories/GHSA-p4x4-rw2p-8j8m),当`Sanitize`模块的过滤规则被配置成`RELAXED`时,利用该漏洞可以绕过该模块的安全过滤功能。具体配置信息可以查看`lib/sanitize/config/relaxed.rb\`文件。
二、漏洞影响
————
Sanitize 3.0.0及之后版本(5.2.1版本已修复)
三、复现过程
————
### 漏洞分析
### `HTML`语法过滤基础思路
这部分将讲述恶意HTML文本的检测思路与过滤手法,有相关经验的大佬可以直接跳过。
[`Sanitize`](https://github.com/rgrove/sanitize)是一个用于检测HTML恶意语法并过滤的Ruby模块,其基于白名单的工作方式,提取到输入内容中的HTML标签后,分析并删除不在白名单内的标签,随后生成相对安全的HTML内容,用户可自定自己的白名单规则(例如,只允许``、``标签),不过该模块有一些默认的规则内容,接下来我会分析`RELAXED`过滤规则场景下的默认可信标签,列表如下: