lukasz-rybak/CVE-2026-23499
GitHub: lukasz-rybak/CVE-2026-23499
这是一个针对 Saleor 电商平台因不受限制文件上传而导致的存储型 XSS 漏洞(CVE-2026-23499)的安全分析与修复指南。
Stars: 0 | Forks: 0
# CVE-2026-23499: Saleor 因不受限制的文件上传而面临存储型 XSS 漏洞
## 概述
| 字段 | 详情 |
|---|---|
| **CVE ID** | [CVE-2026-23499](https://nvd.nist.gov/vuln/detail/CVE-2026-23499) |
| **严重性** | HIGH |
| **公告** | [查看公告](https://github.com/saleor/saleor/security/advisories/GHSA-666h-2p49-pg95) |
| **发现者** | [Lukasz Rybak](https://github.com/lukasz-rybak) |
## 受影响产品
- **saleor/saleor**
## 详情
Saleor 允许经过身份验证的员工用户或 Apps 上传任意文件,包括包含 Javascript 的恶意 HTML 和 SVG 文件。根据部署策略的不同,这些文件可能会在与 dashboard 相同的域下提供服务,且没有任何限制,从而导致在用户浏览器的上下文中执行恶意脚本。
### 影响
恶意的内部员工可以制作脚本注入来针对其他员工,可能窃取他们的访问令牌和/或刷新令牌。
### 我是否受影响?
如果满足以下情况,则您受影响:
- 您在与 dashboard 相同的域下托管媒体文件,例如 dashboard 位于 `example.com/dashboard/` 而媒体文件位于 `example.com/media/` 下 —— 如果媒体文件托管在**不同**的域中,例如 `media.example.com`,则您不受影响。
- 您没有为媒体文件返回 `Content-Disposition: attachment` 头。
Saleor Cloud 用户不受影响。
### 检测与缓解措施
该问题已在以下版本中修复:3.22.27、3.21.43 和 3.20.108。
重要提示:如果您认为自己受影响,或者不确定并希望进行验证,您应该运行以下命令:
```
$ ./manage.py remove_invalid_files
```
这将扫描所有上传的文件(在媒体存储中,例如文件系统、S3 存储桶等)。您应该查找意外的文件,如果发现差异,则可以:
- 修改配置,使 Saleor 允许该文件(请参阅[文件上传文档](https://docs.saleor.io/setup/configuration#file-uploads))
- 手动或自动删除该文件(`./manage.py remove_invalid_files --apply`)
### 变通方法
我们强烈建议升级到最新版本。如果无法立即升级,可能的变通方法包括:
- 配置托管媒体文件的服务器(例如 CDN 或反向代理)返回 Content-Disposition: attachment 头。这将指示浏览器下载文件而不是在浏览器中渲染它们。
- 阻止服务器返回 HTML 和 SVG 文件。
- 为媒体文件设置 `Content-Security-Policy`,例如 `Content-Security-Policy: default-src 'none'; base-uri 'none'; frame-ancestors 'none'; form-action 'none';`
### 参考资料
- 该问题由以下 commit 引入:https://github.com/saleor/saleor/commit/9110eba68c3f73afa1f72b45bd9b1394c752d335
- 文档:https://docs.saleor.io/security/#restricted-file-uploads
- `main` 分支修复:https://github.com/saleor/saleor/commit/b3cb27b3fe96dae3c879063e56d32a9398eabd24
- 3.22:https://github.com/saleor/saleor/commit/ac6936a336289c77398ef600cad3498ad4ba261c
- 3.21:https://github.com/saleor/saleor/commit/7d33efc7a06252320cd51cbb20c2e308aed2fd10
- 3.20:https://github.com/saleor/saleor/commit/77f7927a0db9a216440df92c51012136f13e1d99
### 致谢
此漏洞由 [Łukasz Rybak](https://github.com/lukasz-rybak) 报告。
## 参考资料
- https://github.com/saleor/saleor/security/advisories/GHSA-666h-2p49-pg95
- https://github.com/saleor/saleor/commit/77f7927a0db9a216440df92c51012136f13e1d99
- https://github.com/saleor/saleor/commit/7d33efc7a06252320cd51cbb20c2e308aed2fd10
- https://github.com/saleor/saleor/commit/9110eba68c3f73afa1f72b45bd9b1394c752d335
- https://github.com/saleor/saleor/commit/ac6936a336289c77398ef600cad3498ad4ba261c
- https://github.com/saleor/saleor/commit/b3cb27b3fe96dae3c879063e56d32a9398eabd24
- https://docs.saleor.io/security/#restricted-file-uploads
## 免责声明
此 CVE 是按照协同漏洞披露原则进行负责任披露的。此处提供的信息仅用于教育和防御目的。
标签:CISA项目, Content-Disposition, CVE-2026-23499, GitHub Advanced Security, GraphQL, HTML注入, JavaScript注入, OpenCanary, S3存储, Saleor, Session劫持, SVG注入, Web安全, 不受限制的文件上传, 任意文件上传, 内容安全策略, 同源策略, 存储型XSS, 安全加固, 安全漏洞, 持久型跨站脚本, 漏洞修复, 电商平台, 窃取令牌, 网络安全, 网络安全培训, 蓝队分析, 规则仓库, 逆向工具, 隐私保护, 高危漏洞