作为GitHub上拥有近5万Star的开源网盘聚合工具,Alist凭借多存储源支持、轻量化部署等优势,成为个人与中小企业文件管理的热门选择。然而,从早期频繁曝出的技术漏洞,到2025年引发行业震动的项目出售与数据收集争议,Alist的安全性问题始终牵动着用户神经。本文将梳理Alist历年关键安全事件的时间线,深入剖析技术漏洞原理与供应链安全风险,并提供可落地的防护方案,为用户安全使用该工具提供参考。

一、Alist关键安全事件时间线梳理

Alist的安全问题贯穿其发展历程,从早期的权限控制缺陷、路径遍历等技术漏洞,到后期的项目控制权变更引发的信任危机,不同阶段的风险呈现出不同特征,具体关键时间节点如下:

1. 早期技术漏洞集中爆发阶段(2022-2023年)

  • 2022年12月:GitHub Advisory Database披露Alist存在高危权限不当漏洞(GHSA-4gjr-vgfx-9qvw),影响多个版本,攻击者可利用该漏洞绕过权限控制获取敏感操作权限。同期,Snyk平台也曝光Alist存在跨站脚本(XSS)漏洞(CVE-2022-45970),攻击者可通过公告板注入恶意脚本,不过官方因利用需高权限将其归类为无效漏洞。

  • 2022年:Alist ≤3.16.3版本被发现存在严重访问控制缺陷,低权限账户可上传任意类型文件,存在恶意文件植入风险,该漏洞风险等级达9.8(高危)。

  • 2023年:Alist 3.6.0版本之前曝出路径遍历漏洞,仅拥有文件上传权限的用户可通过“../”构造路径,绕过基础路径限制将文件上传至任意目录,直接威胁服务器文件系统安全。

  • 2023年10月23日:GitHub Security Lab向Alist维护者私下报告反射型XSS漏洞(GHSL-2023-220),11月4日维护者确认漏洞,11月17日完成修复,该漏洞可被用于窃取登录用户的JWT令牌。

2. 漏洞修复与信任危机过渡期(2024年)

  • 2024年10月10日:反射型XSS漏洞(CVE-2024-47067)正式在GitHub Advisory Database公开,漏洞影响所有<3.29.0的Alist版本,通过端点/i/:link_name接收用户输入并反射至XML响应中,利用XHTML支持执行恶意脚本,风险等级为中等(5.1)。

3. 项目出售引发信任崩塌(2025年)

  • 2025年4月:Alist原开发者Xhofe私下将项目出售给贵州某科技公司(网络曝光名称为“不够科技”),未向社区提前披露交易信息。

  • 2025年6月10日:社区开始流传Alist不再安全的消息,用户发现官方域名从alist.nn.ci更换为alistgo.com,中文文档新增商业化内容,原开发者从社群消失。

  • 2025年6月11日:原开发者Xhofe首次回应,承认项目交由公司运营,承诺审查开源版本代码、开启main分支保护,但未披露收购细节与用户数据归属,引发社区更大质疑。

  • 2025年6月:新维护者提交的PR #8633被曝包含用户操作系统信息收集模块,该模块计划将数据上传至私有地址,因社区强烈抗议紧急撤回。

  • 2025年9月:安全研究者发布Alist解压功能权限鉴权缺陷分析,指出其FsArchiveDecompress函数仅验证源文件解压权限,未校验目标目录写入权限,存在越权写入风险;同期,社区分叉项目OpenList上线,移除不可信链接与私有API并完成代码审计。

二、核心安全问题技术深度剖析

Alist的安全问题可分为两类:一类是传统的代码层面漏洞,源于权限控制逻辑缺陷与输入验证缺失;另一类是项目控制权变更引发的供应链安全风险,两者均对用户数据与服务器安全构成严重威胁。

1. 代码层面核心漏洞原理

(1)反射型XSS漏洞(CVE-2024-47067)

该漏洞位于helper.go文件的plist函数中,核心问题是用户输入未经过滤直接反射至响应中。具体来看,端点/i/:link_name接收用户提供的link_name参数,经过Base64解码与路径分割后,直接通过fmt.Sprintf格式化到XML响应模板中,且响应类型被设置为application/xml。由于XML支持XHTML语法,攻击者可构造恶意link_name参数,注入包含JavaScript代码的HTML标签,当登录用户点击特制链接时,脚本将被执行,进而窃取JWT令牌。利用该令牌,攻击者可实现文件读取、删除、修改等任意操作,完全控制用户的Alist存储资源。

(2)解压功能权限绕过漏洞

通过对server/handles/archive.go文件的代码审计发现,Alist解压功能的权限验证逻辑存在明显缺陷。在FsArchiveDecompress函数中,系统仅对用户是否拥有源文件的解压权限(PermDecompress)进行校验,未验证用户对目标目录的写入权限(PermWrite)。攻击者可利用这一缺陷,构造恶意解压请求,将文件解压至管理员目录、其他用户私有目录等未授权区域,实现越权访问与文件植入。典型攻击请求可通过curl构造,指定恶意目标目录即可成功执行:

curl -X POST "http://localhost:5244/api/fs/archive/decompress" \
-H "Cookie: auth=your_auth_cookie" \
-H "Content-Type: application/json" \
-d '{"src_dir":"/public/file.zip","dst_dir":"/admin/secret/","name":"file.zip"}'

3)路径遍历与文件上传漏洞

2022-2023年曝出的路径遍历与文件上传漏洞,核心原因均为输入验证缺失。路径遍历漏洞中,Alist未对用户上传文件的路径参数进行严格过滤,允许“../”等特殊字符通过,导致攻击者可突破基础路径限制;而低权限文件上传漏洞,则是因为权限控制逻辑未对上传文件类型与上传者权限进行严格绑定,使得普通用户可上传恶意脚本文件,进而获取服务器控制权。

2. 项目出售引发的供应链安全风险

2025年的项目出售事件,将Alist的安全风险从代码层面升级至供应链层面,主要体现在三个方面:

  • 数据收集风险:新维护者提交的代码中出现用户设备信息收集模块,虽因抗议撤回,但暴露了其商业化过程中可能存在的数据变现倾向,用户在Alist中配置的网盘账号密码、Token等敏感信息面临泄露风险。

  • 供应链投毒隐患:收购方存在“收购-改文档-推付费-闭源”的不良历史,曾在其他开源项目中植入恶意脚本、推送非必要依赖,用户担忧Alist未来可能出现静默更新夹带私货、核心功能闭源等问题。

  • API安全失控:Alist部分存储源(如OneDrive)的Token获取依赖原作者的闭源API,项目出售后该API域名已更换为新公司所有,用户无法确认API是否存在数据截留行为,授权信息安全失去保障。

三、Alist安全防护实操指南

针对Alist的各类安全风险,用户可从版本控制、权限加固、代码审计、数据隔离四个维度构建防护体系,具体措施如下:

1. 版本控制与分支选择

  • 暂缓更新至v3.40.0之后的版本,优先选择社区验证安全的v3.40.0及之前的稳定版本,避免新版本可能存在的恶意代码或数据收集模块。

  • 考虑迁移至社区分叉项目(如OpenList),此类项目已移除不可信链接与私有API,完成近半年代码审计,安全性更有保障。

2. 权限系统加固

  • 针对解压功能权限缺陷,手动修改server/handles/archive.go文件,添加目标目录写入权限验证逻辑:

  • 启用细粒度权限控制,在internal/conf/conf.go中配置区分读取、写入、解压等操作的权限选项,避免权限过度分配。

  • 禁用匿名访问,为每个用户分配独立账号与最小必要权限,定期清理闲置账号与过期授权。

3. 代码与配置审计

  • 定期使用静态代码分析工具(如CodeQL)扫描Alist源码,重点关注server/handles目录下的接口处理函数,排查输入验证缺失与权限逻辑缺陷。

  • 检查配置文件中是否存在私有API地址、数据收集相关配置,及时移除或替换不可信配置项。

  • 完善审计日志,在internal/log/logger.go中添加文件上传、解压、权限变更等关键操作的日志记录,包含用户ID、操作路径、时间等信息,便于安全事件追溯。

4. 数据安全隔离

  • 立即解绑Alist中已配置的敏感网盘账号,修改相关密码与Token,重新授权时优先选择官方认证的授权渠道,避免使用第三方闭源API。

  • 将Alist部署在独立服务器或容器中,配置网络隔离策略,限制其仅能访问必要的存储源与服务,禁止直接暴露在公网环境,可通过反向代理添加WAF防护。

四、总结:开源工具的安全使用思考

Alist从漏洞频发至信任崩塌的历程,为开源工具的用户与开发者敲响了警钟。对于用户而言,使用开源工具不能仅关注功能便捷性,更需警惕代码层面的技术漏洞与项目控制权变更带来的供应链风险,通过版本控制、权限加固、数据隔离等措施构建主动防护体系。对于开发者而言,开源项目的安全性与透明度是生命线,权限控制逻辑的严谨性、输入验证的全面性,以及重大变更的社区披露机制,均是保障项目可持续发展的关键。

当前,Alist社区的分叉项目与自救行动,体现了开源生态的自我修复能力。未来,唯有坚持开源透明、重视安全审计、尊重用户权益,开源工具才能真正实现“便捷”与“安全”的平衡。

参考资料

https://github.com/advisories/GHSA-957m-g6rf-4c2mhttps://security.snyk.io/vuln/SNYK-GOLANG-GITHUBCOMALISTORGALISTV3PKG-3173579https://www.secsnow.cn/wiki/subject/article/fileread/