JAVA代码审计之安全编码问题
前言
“FSRC经验分享”系列文章,旨在分享焦点科技信息安全部工作过程中的经验总结,包括但不限于漏洞分析、运营技巧、sdl推行、等保合规、自研工具等等。
欢迎各位安全从业者持续关注~
1什么是安全编码
安全编码,简单来说就是不将关键参数硬编码在代码中,避免使用产生漏洞较多,被公认为是不安全的函数、加密算法。这是安全意识在JAVA开发工作中最直接的体现。
这类问题在代码安全审计中较为容易发现,可通过全局搜索甚至自动化工具编写规则即可确定函数位置。接下来我们就分享一些代码审计中常见的安全编码问题。
2配置型硬编码密码
硬编码用户名、密码、IP、DB链接信息等,若源代码泄露或者攻击者通过class文件反编译出源代码即可获取敏感信息,甚至直连数据库
domain.password = "123123"
3log记录敏感信息
日志内记录敏感信息如账号密码,若日志信息泄露则会造成敏感信息泄露
log.debug("username:" + username + " password:" + password);
logger.info("AccountService.reg user.password is {} start in", user.getEmail());
4不安全的随机函数
使用可预测的伪随机数生成函数会导致漏洞。若生成会话标记,那么可以预测下一个用户和前一个用户的会话标记进而劫持他们的会话。
Random r = new Random();
r.nextInt()
5RSA非对称加密密钥过短
RSA算法安全系数取决于大素数分解的难度,求私钥的难度等价于分解两个大素数之积。密钥过短会降低RSA算法的安全性
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA"); //基于RSA算法生成对象
keyPairGen.initialize(256,new SecureRandom()); //密钥大小为96-4096位
KeyPair keyPair = keyPairGen.generateKeyPair(); // 生成一个密钥对,保存在keyPair中
RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate(); // 得到私钥
RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic(); // 得到公钥
String publicKeyString = new String(Base64.encodeBase64(publicKey.getEncoded()));
String privateKeyString = new String(Base64.encodeBase64((privateKey.getEncoded())));
keyMap.put(0,publicKeyString); //0表示公钥
keyMap.put(1,privateKeyString); //1表示私钥
6不安全的DES加密算法
DES和DESede (3DES)存在安全问题。DES密钥长度56位,较短,易遭受穷举攻击。3DES相当于有3个独立密钥的DES,密钥长度为168位,但实际上由于对特定的选择明文攻击和已知明文攻击的强度较弱,NIST认定它只有80位的安全性。
Null
7不安全的ECB加密模式
ECB(电子密码本)模式由于所有分组的加密方式一致,明文中的重复内容会在密文中有所体现,因此难以抵抗统计分析攻击
Cipher c = Cipher.getInstance("AES/ECB/NoPadding");
c.init(Cipher.ENCRYPT_MODE, k, iv);
byte[] cipherText = c.doFinal(plainText);
8免责声明
本文中提到的相关资源已在网络公布,仅供研究学习使用,请遵守《网络安全法》等相关法律法规。
9参考资料
经验分享丨JAVA审计中常见的加密错误,你知道几个?(by 精通linux开关机)
https://zhuanlan.zhihu.com/p/135875501
Java安全编码实践总结(by 随便看看)
https://www.freebuf.com/vuls/240172.html
关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
随时掌握互联网精彩
- 1 这本书,智利总统带到秘鲁的会见厅 7949712
- 2 一个金镯子省出1200元 金价真跌了 7966266
- 3 胖东来:员工不许靠父母买房买车 7859914
- 4 世界互联网大会有哪些新看点? 7721733
- 5 药监局:认定百雀羚不存在违规行为 7606847
- 6 医院CT等收费将执行新规 7506716
- 7 19岁孤儿被骗到郑州4天没吃没喝 7425329
- 8 29岁抗癌博主“一只羊吖”去世 7372281
- 9 搞钱色权色交易 王昊被“双开” 7296198
- 10 科技与文化融合的“赛博”水乡 7121496