Skip to content

v2.4.4

Choose a tag to compare

@github-actions github-actions released this 31 Aug 16:25
· 3 commits to main since this release

新功能:子文件夹链接下载

  • mega.nz/folder/根ID#密钥/folder/子ID 现在仅下载指定子文件夹的内容(路径以子文件夹为根重定基),不再下载整个根文件夹
  • mega.nz/folder/根ID#密钥/file/文件ID 仅下载指定单个文件
  • 正则扩展捕获子路径后缀;文件列表按父节点链过滤;下载路径重定基

修复:子文件夹链接下载完成后误报 MetaMAC 错误

根因:每个数据分块的 CBC-MAC 计算使用零初始 IV。而 MEGA 真实算法(SDK SymmCipher::ctr_crypt)的分块 MAC 初值是文件 nonce 复制两份 [n0, n1, n0, n1](key 第 4-5 word)。零 IV 算出的 MAC 与任何真实上传文件的 MetaMAC 都不可能匹配,因此所有带 8 words key(内嵌 MetaMAC)的下载必然报错;单文件公开链接(4 words key,跳过校验)不受影响,导致问题此前被掩盖。

修复:分块 MAC 初值改为 [nonce, nonce],逐行比对 SDK macsmac/ChunkedHash 源码确认对齐。同时移除"分块边界前缀匹配"宽容逻辑,与 SDK 一致:读完整个文件后一次性完整比较;任何位置的真实损坏仍然硬失败。

9 项安全加固

位置 修复
StripNullCharacters 重写为 Replace(vbNullChar, ""),消除位置偏移错误
AES 加解密 失败返回 Nothing;持久化点加密失败时跳过写入、保留旧值
AES 密文格式 新增随机 IV 格式,与旧格式自动双向兼容
MetaMAC 失败处理 抛异常并重置分块重试(配合算法修复,不再误报)
PSK 输入校验 含非 ASCII 字符(>255)时记日志返回 Nothing
Web 密码存储 随机盐 + PBKDF2(100k 轮)派生,替换无盐 MD5
Streaming 密码比较 恒定时间比较 FixedTimeEquals,防时序侧信道
ClientConnected 反射 静态缓存 + null 检查 + Try/Catch,失败降级为假设已连接

Full Changelog: v2.4.3...v2.4.4