CVE-2026-24140MyTube是一款自托管的视频网站下载和播放工具。在1.7.78及以下版本中,settings管理功能存在Mass Assignment(批量赋值)安全漏洞。该漏洞的根本原因在于saveSettings()函数对用户输入的验证不足。应用程序使用Record<string, any>作为输入参数类型,并通过Object.entries()遍历所有传入的键值对,但没有对属性名进行白名单验证或过滤未授权字段。攻击者(需具备高权限)可以通过构造特殊的请求包,在请求中注入任意键值对,这些数据将直接被持久化到数据库中,而不管该属性是否为合法的应用程序配置项。此漏洞可能导致应用程序配置被恶意篡改,例如修改管理员账户、改变应用程序行为参数或添加后门配置。虽然该漏洞的CVSS评分为2.7(低危),但在高权限场景下仍可能造成安全风险。漏洞已于1.7.78版本中修复。
Mass Assignment漏洞发生在应用程序错误地将客户端请求参数直接绑定到服务端对象或数据库记录时。在MyTube的1.7.78及以下版本中,saveSettings()函数的实现存在以下问题:
1. **类型定义宽松**:函数使用Record<string, any>作为输入参数类型,允许接受任意字符串键和任意类型的值。
2. **缺乏输入验证**:函数使用Object.entries()直接遍历用户传入的所有键值对,没有与预定义的允许设置列表进行比对。
3. **直接持久化**:所有传入的属性都会被直接写入数据库,包括那些并非应用程序设计意图的字段。
4. **权限要求**:该漏洞需要攻击者具有高权限(PR:H),意味着需要管理员或具有设置修改权限的账户。
攻击者可以通过向settings端点发送包含额外键值对的POST请求来利用此漏洞。例如,除了正常的设置参数外,还可以注入用于修改用户角色、添加管理员账户或修改安全配置的字段。由于函数缺乏验证逻辑,这些恶意字段会被直接保存到数据库中,导致配置被篡改。修复方案需要在保存设置前增加白名单验证,只允许预定义的合法配置项被修改。