代码审计--43--新篇章之C/C++代码审计(四)

本篇介绍了以下代码安全问题
1、资源注入
2、日志伪造
3、不安全的流读取函数
4、不安全的内存分配函数
5、不安全的字符串处理函数
6、不安全的scanf函数
7、不安全的内存拷贝函数
8、非引用的异常捕获
9、在scanf函数中没有对%s格式符进行宽度限制
10、被污染的格式化字符串
11、释放后使用

1、资源注入

详细信息

无论输入的数据是由用户直接输入,还是从环境中读取,都应当对该值的类型、长度、格式以及范围等进行验证。未经验证的值都应被视为污染数据。

如果输入的数据没有经过有效的验证,攻击者就可能会将该数据篡改为程序不期望的数据形式。接受了与预期类型不符的数据类型,或是接受了与预期格式不符的数据,都可能会造成程序信息泄漏、资源泄漏甚至被植入可执行代码、被恶意控制等。

在调用库函数、API进行资源操作的时候,如果相关的参数是污点数据,传入的资源可能会被污染,甚至篡改。

为避免污染输入错误,应当:
(1)了解每个不可信源可能输入到程序的位置,包括:函数参数、cookies、网络数据读取、环境变量、逆向DNS、查询结果、文件名、数据库以及任何外部系统;
(2)为输入数据提供一个白名单,或者“已知合理的”输入情况,而非仅仅依赖黑名单以及“输入不当”的输入情况;
(3)确保输入数据的所有属性都合适,包括长度、类型、范围、输入丢失或额外输入、语法以及连贯性等;
(4)如果应用的客户端存在安全验证,确保该验证在服务端同样存在;
(5)如果输入数据由多处输入拼合而成,在完成拼合后,对该数据进行验证。

例如:

#include &lt

猜你喜欢

转载自blog.csdn.net/wutianxu123/article/details/103515071