问题描述
OFFICIAL_REGISTRY_PUBKEY_B64 = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" 解码后是 32 个零字节。检测到全零公钥后,代码主动跳过签名验证并继续安装。
受影响文件
crates/librefang-runtime/src/plugin_manager.rs 第 22–23 行、第 249–255 行
const OFFICIAL_REGISTRY_PUBKEY_B64: &str = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=";
// ...
if !is_placeholder {
// verify signature
} else {
warn!("Using placeholder key — skipping verification");
// 继续安装!
}
安全影响
Critical — 在没有设置 LIBREFANG_REGISTRY_PUBKEY 环境变量的情况下(即绝大多数用户的默认安装),从官方 registry 安装插件时完全不验证任何签名。攻击者若能进行中间人攻击,或 registry 仓库被攻陷,可推送任意恶意插件(Python/Node/WASM 钩子脚本)。
建议修复
- 在发布前将真实的 Ed25519 公钥硬编码进来
- 将全零公钥视为硬错误而非跳过验证,直接
panic! 或返回 Err
- 发布流程中确保 CI 验证公钥非全零
问题描述
OFFICIAL_REGISTRY_PUBKEY_B64 = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="解码后是 32 个零字节。检测到全零公钥后,代码主动跳过签名验证并继续安装。受影响文件
crates/librefang-runtime/src/plugin_manager.rs第 22–23 行、第 249–255 行安全影响
Critical — 在没有设置
LIBREFANG_REGISTRY_PUBKEY环境变量的情况下(即绝大多数用户的默认安装),从官方 registry 安装插件时完全不验证任何签名。攻击者若能进行中间人攻击,或 registry 仓库被攻陷,可推送任意恶意插件(Python/Node/WASM 钩子脚本)。建议修复
panic!或返回Err