CVE-2026-39390CI4MS是基于CodeIgniter 4的CMS系统,其在0.31.4.0之前的版本中存在存储型XSS漏洞。漏洞源于Google Maps iframe设置(cMap字段)的输入过滤机制不完善。尽管系统使用了strip_tags()和正则移除事件处理器,但未过滤srcdoc属性。拥有管理员权限的攻击者可注入包含恶意代码的iframe载荷。当前台未认证访客访问渲染该配置的页面时,载荷将在父页面上下文中执行,导致XSS攻击。
该漏洞的核心在于CI4MS对用户输入的HTML过滤逻辑存在盲区。在compInfosPost()方法中,开发者通过strip_tags()函数保留了<iframe>标签,并利用正则表达式on\w+试图移除所有以on开头的JavaScript事件处理器(如onclick, onload)。然而,HTML5的srcdoc属性允许直接在iframe内部指定HTML内容,它并不属于事件处理器,因此成功绕过了正则匹配。攻击者利用管理员权限进入后台,在cMap字段构造<iframe srcdoc="<script>...</script>">形式的Payload。由于strip_tags()允许iframe标签,且正则不拦截srcdoc,恶意载荷被存入数据库。当前端用户访问包含该配置的页面时,浏览器解析iframe,将srcdoc中的实体编码还原为HTML标签并执行其中的JavaScript,从而在父页面上下文中触发攻击。