Skip to content

Conversation

@TBNLZLDYD
Copy link

1. 修复概述

本次PR修复了ncmdump项目中的多项安全漏洞,并进行了代码质量改进,主要包括:

  • 内存管理问题修复
  • 路径遍历漏洞防护
  • 输入验证增强
  • 敏感数据安全处理
  • 代码质量提升
    所有修复均保持与现有NCM格式的完全兼容性,未引入新的依赖或破坏性更改。

2. 具体修复内容

2.1 内存管理问题修复

  • 问题 : FixMetadata() 函数中直接调用析构函数 audioFile->~File() 导致内存泄漏
  • 修复 :将其替换为 delete audioFile; 以正确释放内存
  • 位置 : src/ncmcrypt.cpp:262

2.2 路径遍历漏洞防护

  • 问题 : Dump() 函数未验证输出路径,存在路径遍历风险
  • 修复 :添加输出路径验证,确保输出文件始终位于指定目录内
  • 位置 : src/ncmcrypt.cpp:268-286

2.3 输入验证增强

  • 问题 : read() 和 buildKeyBox() 函数缺乏输入参数验证
  • 修复 :添加空指针检查、大小限制(最大1MB)和有效性验证
  • 位置 : src/ncmcrypt.cpp:157-174 、 src/ncmcrypt.cpp:174-204

2.4 敏感数据安全处理

  • 问题 :密钥和解密数据使用后未安全清除
  • 修复 :在AES和NeteaseCrypt类中添加 clearSensitiveData() 方法
  • 位置 : src/include/aes.h 、 src/utils/aes.cpp 、 src/include/ncmcrypt.h 、 src/ncmcrypt.cpp

3. 代码质量改进

  • 将C风格指针转换替换为C++的 reinterpret_cast
  • 优化变量作用域,提高代码可读性
  • 修复无符号表达式比较问题
  • 添加详细注释说明技术决策(如ECB模式使用原因)

4. 测试情况

  • 使用cppcheck进行静态代码分析,修复了所有发现的问题
  • 验证了文件解密和元数据提取功能正常工作
  • 确保与现有NCM格式完全兼容

5. 兼容性说明

  • 所有修复均保持向后兼容
  • 未修改任何公共API
  • 保留了ECB模式以确保与NCM格式兼容(已添加详细注释说明原因)
  • 保留了硬编码密钥(已添加注释说明这是NCM格式规范的一部分)

@taurusxin
Copy link
Owner

build cache 可以忽略一下,其它都OK

@TBNLZLDYD
Copy link
Author

可以合并了吗

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants