CVE-2026-24037Horilla是一套免费开源的人力资源管理系统(HRMS)。在1.4.0版本中,系统使用has_xss()函数通过正则表达式匹配来阻止跨站脚本(XSS)攻击。然而,由于这些正则表达式不完整且与上下文无关,攻击者可以轻易绕过安全过滤器。该漏洞允许攻击者将用户重定向到恶意域名、执行外部JavaScript代码,并窃取CSRF令牌,进而对管理员发起CSRF攻击。由于HRMS系统处理敏感的员工信息和人事数据,漏洞的利用可能导至严重的数据泄露和账户劫持风险。Horilla开发团队已在1.5.0版本中修复了此问题,建议所有用户立即升级。
漏洞根源在于has_xss()函数的正则表达式匹配机制存在缺陷。具体问题包括:1)正则表达式仅匹配常见的script标签,但对事件处理器属性(如onload、onerror等)的过滤不完整;2)函数未考虑HTML编码、URL编码等绕过技术;3)缺少对javascript:伪协议和data:协议的过滤。攻击者可以利用这些缺陷在用户输入中注入恶意代码,例如:<img src=x onerror=alert(document.cookie)>、javascript:eval(atob('...'))等。当受害者访问包含恶意代码的页面时,攻击脚本会在其浏览器上下文中执行,从而窃取会话Cookie、CSRF令牌或执行其他恶意操作。由于HRMS系统中管理员拥有更高权限,攻击者针对管理员的CSRF攻击可能导致整个系统被接管。