CVE-2026-24476CVE-2026-24476是存在于Shaarli个人书签服务中的一个存储型跨站脚本(XSS)漏洞。该漏洞影响0.16.0之前的版本。攻击者可以通过构造包含特殊字符(以引号"开头)的恶意标签,当该标签在Shaarli的起始页面(start page)显示时,会导致HTML标签提前闭合,从而突破输入框的限制,注入任意HTML内容和JavaScript脚本。由于该漏洞属于存储型XSS,恶意代码会被永久保存在系统中,所有访问包含该标签页面的用户都会受到XSS攻击影响,可能导致会话劫持、敏感信息窃取等严重安全问题。Shaarli在0.16.0版本中通过修复标签输入的输出编码问题成功修复了该漏洞。
该漏洞的根本原因在于Shaarli对用户输入的标签(tag)缺乏充分的输出编码处理。具体来说,当用户输入一个以双引号(")开头的恶意标签时,例如:"><script>alert(1)</script>,这个特殊构造的字符串在HTML页面渲染时会被直接插入到某个<input>标签的value属性中。由于双引号会提前结束value属性的值,并闭合整个<input>标签,后续注入的<script>标签就会成为独立的HTML元素被执行。攻击者利用这一技巧可以在页面中注入任意HTML内容,包括恶意JavaScript代码。由于标签数据会被存储在数据库中并在不同页面展示,这是一个典型的存储型XSS漏洞。修复方案需要在输出标签时对特殊字符进行HTML实体编码,将双引号转换为",单引号转换为',小于号转换为<等,从而防止标签内容破坏HTML结构。