Java项目Checkmarx报Side channel data leakage漏洞求修复方案
Checkmarx 侧信道数据泄露漏洞修复方案
- 先排查真实泄露风险:首先确认密码确实是业务要求通过SOAP接口传输的必要参数,排除误将密码写入日志、本地文件等非必要对外输出的场景,同时确认SOAP请求链路已配置TLS 1.2及以上版本加密传输,避免明文报文在网络传输过程中被窃取。
- 配置扫描规则消除误报:如果该传输行为完全符合业务安全规范,属于工具误报,可通过两种方式处理:一是在对应代码节点添加Checkmarx官方认可的忽略注解
@SuppressWarnings("SideChannelDataLeakage");二是在Checkmarx扫描控制台的规则配置中,将该条敏感数据传输链路标记为合规,后续扫描将不再触发告警。 - 敏感数据加密后再传输:如果业务允许改造,不要在SOAP报文中传递明文密码,提前使用和接口对端约定的标准对称加密算法(如AES-256)对密码明文做加密处理后再组装报文,加密逻辑优先使用JDK标准
javax.crypto包的实现,不要自定义加密逻辑,改造后扫描工具识别到传输的是密文,将不会触发泄露告警。 - 降低内存侧信道泄露风险:侧信道泄露风险还包含内存dump导致的敏感数据窃取,处理密码时优先使用char数组存储而非String类型(String为不可变对象会长期留存在字符串常量池),处理完成后手动覆盖char数组内容清空敏感数据:
char[] passwordChars = psPassword.toCharArray(); // 执行特殊字符替换、加密逻辑 Arrays.fill(passwordChars, (char) 0);
针对你提供的requestStream.write(wrappedSOAPMessage.getBytes());代码,也可以改造为分段写入加密后的报文字节,避免完整的带敏感内容的报文一次性全量加载到内存中。
内容的提问来源于stack exchange,提问作者Kunal
相关产品推荐
相关产品推荐

