Anonymous Intelligence Signal

GitHub 代码库惊现高危权限提升漏洞:用户可一键自提为管理员

human The Lab unverified 2026-04-03 20:27:06 Source: GitHub Issues

一个严重的安全漏洞潜伏在用户资料更新接口中,允许任何经过身份验证的用户通过一次简单的 API 请求,将自己提升为拥有完全权限的系统管理员。该漏洞源于 `src/api/users.js` 文件中的一段危险代码,它不加区分地将客户端请求的所有字段合并到用户对象中。攻击者只需向 `/api/users/profile` 发送一个包含 `"role": "admin"` 字段的 PUT 请求,即可瞬间获得管理员身份。

此漏洞被归类为 CWE-915(大规模赋值漏洞),其核心风险在于代码逻辑的过度信任。在文件的第32至40行,开发者使用了对象展开运算符 `{ ...user, ...req.body, updatedAt: new Date() }` 来更新用户资料。这种写法虽然简洁,却将请求体中的所有字段(包括本应只读或受保护的字段)直接赋值给了数据库对象。攻击者利用此缺陷,不仅能篡改自己的角色,理论上还可能修改其他敏感属性,如账户状态或权限组。

一旦攻击者成功将角色提升为“admin”,其影响是毁灭性的。他们将立即获得访问所有管理员专属端点的权限,包括查看系统报告、管理其他用户账户、修改配置,甚至可能执行更危险的操作。这相当于将整个应用的后台控制权拱手让人。目前,唯一的修复方案是实施严格的字段白名单验证:开发者必须重构代码,明确声明并仅允许更新特定的安全字段,例如 `const { name, email } = req.body;`,从而彻底堵死权限提升的路径。