【Java代码审计】溢出&硬编码&随机数篇
1.整数溢出漏洞
概述
Java提供多种整数类型,每种类型都有其特定的取值范围:
- byte:-128 到 127
- short:-32,768 到 32,767
- int:-2,147,483,648 到 2,147,483,647
- long:-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
当一个运算结果超出这些范围时,会发生溢出,导致结果循环到范围的另一端。例如,将一个int类型的变量加上一个大于其最大值的数字,结果会变成负数
攻击者可以利用整数溢出操控程序行为,导致未授权访问、拒绝服务或信息泄露等安全问题
修复方案
- 对用户输入进行严格的范围检查,确保不超出预期值
- 在进行运算之前,检查是否可能导致溢出。例如,可以使用Math.addExact()等方法来捕获溢出
2.硬编码密码漏洞
1、漏洞概述
硬编码密码是指在系统中采用明文的形式存储密码,其主要出现在以下几个方面: