baomidou / mybatis-plus

An powerful enhanced toolkit of MyBatis for simplify development
https://baomidou.com
Apache License 2.0
16.25k stars 4.29k forks source link

[安全] 加密函数中使用密钥作为IV的潜在不安全问题 #6262

Closed kexinoh closed 2 months ago

kexinoh commented 2 months ago

描述

我在mybatis-plus项目中发现了一个潜在的安全问题。在AES.java文件的50行的加密函数似乎使用了静态密钥(iv=key)作为加密过程的初始化向量(IV)。这种做法可能导致安全漏洞,因为使用静态或可预测的IV可能会削弱加密的安全性。

重现步骤

  1. 转到AES.java文件。-->AES.java#L50
  2. 检查50行的加密函数。
  3. 观察使用secret=key作为IV。

预期行为

加密函数应该为每次加密操作使用一个独特且不可预测的IV,以确保加密数据的安全性。

实际行为

加密函数使用了静态密钥作为IV,这可能被利用来潜在地破坏加密。

影响

使用静态IV可能导致严重的安全隐患。

建议的解决方案

我建议为每次加密操作生成一个新的、随机的IV,并确保在必要时将其与加密数据一起传输。这将符合安全加密的最佳实践。

附加信息

附件

如果有任何相关的代码片段、屏幕截图或日志可以帮助说明问题,请在这里附加。