CVE-2025-65112PubNet是一个自托管的Dart和Flutter包管理服务。在1.1.3之前的版本中,存在一个严重的安全漏洞。该漏洞位于/api/storage/upload端点,允许未经身份验证的用户通过提供任意的author-id值来上传包。这意味着任何人都可以伪装成任意用户上传恶意软件包,从而实施身份欺骗、权限提升和供应链攻击。攻击者可以利用此漏洞向开源生态系统注入恶意代码,影响所有使用该服务的开发者。由于PubNet是Dart和Flutter生态的重要组成部分,此漏洞对整个社区构成严重威胁。攻击者无需任何权限即可利用此漏洞,且可以通过网络远程发起攻击。
漏洞根源在于PubNet的/api/storage/upload端点缺乏对author-id的验证机制。在正常的包上传流程中,系统应该验证请求中的author-id是否与当前认证用户的身份相匹配。然而,由于缺少这一关键验证步骤,攻击者可以在HTTP请求中任意指定author-id参数值。当攻击者发送包含伪造author-id的上传请求时,服务器不会进行任何身份校验,直接使用请求中的author-id值创建包记录。这导致攻击者可以以任意注册用户的身份上传包。攻击者可以利用此漏洞上传包含恶意代码的包,伪装成可信的开发者,从而对下游用户造成安全威胁。此外,攻击者还可以通过此漏洞窃取其他用户的信誉和声誉。