CVE-2026-43938YetAnotherForum.NET (YAF.NET) 在4.0.5和3.2.12之前的版本中存在一个高危存储型跨站脚本(XSS)漏洞。该漏洞源于应用程序的数据库日志记录器在记录事件时,将请求的User-Agent头信息未经适当过滤即序列化并存储。当管理员查看后台事件日志页面时,系统会反序列化这些数据并直接插入HTML中显示,导致攻击者可以通过构造恶意的User-Agent头,在管理员浏览器中执行任意JavaScript代码,从而劫持会话或执行恶意操作。
该漏洞的根源在于`YAFNET.Core/Logger/DbLogger.cs`文件中的日志记录逻辑。当应用程序发生未处理异常等事件时,系统会捕获HTTP请求的User-Agent头部,将其封装进JObject并使用JsonConvert序列化为字符串,随后存入数据库的`EventLog.Description`字段中。漏洞触发点位于`Pages/Admin/EventLog.cshtml.cs`的`FormatStackTrace()`方法。该方法反序列化存储的JSON数据,并将UserAgent的值直接拼接到HTML字符串中,未进行任何HTML实体编码。最终,Razor视图`EventLog.cshtml`通过`@Html.Raw()`将这段未经净化的HTML输出到页面。攻击者无需认证,只需向服务器发送包含恶意脚本(如`<script>alert(1)</script>`)的User-Agent头的请求,诱导管理员访问后台日志页面即可触发XSS。