CWE-79 out-of-bound write 越界写入

越界写入错误可能导致数据损坏、软件崩溃或代码执行,严重影响软件完整性。高被利用性使得采取防御措施至关重要,如使用不受此弱点影响的语言、审查的库或框架,以及利用编译器的防护机制。在内存管理中,应严格检查缓冲区大小,避免在循环中超出边界写入,并确保输入字符串的安全。
摘要由CSDN通过智能技术生成

软件在预期缓冲区的末尾或开头之前写入数据。

通常会导致数据损坏、崩溃或代码执行。软件可以修改索引或执行指针算术来引用缓冲区边界之外的存储位置。随后的写入操作会产生未定义或意外的结果。

危害: 影响软件的完整性。修改内存;DoS:崩溃、退出或重启;执行未经授权的代码或命令。

被利用性较高。

措施:

(1)使用不允许出现此弱点的语言或提供使此弱点更容易避免的结构。如:Java和Perl,不会受到缓冲区溢出的影响。其他语言(如Ada和C3)通常提供溢出保护,但程序员可以禁用该保护。

(2)使用经过审查的库或框架,不允许出现此弱点,或提供使此弱点更容易避免的构造。(不完整的解决方案,因为许多缓冲区溢出与字符串无关。)

(3)使用可自动提供减轻或消除缓冲区溢出的保护机制的功能或扩展来运行或编译软件。(某些编译器和扩展提供内置到编译代码中的自动缓冲区溢出检测机制,这些机制只能检测某些类型的溢出。此外,攻击仍可能导致拒绝服务,因为典型的响应是退出应用程序。)

(4)在分配和管理应用程序的内存时,请考虑遵守以下规则:

仔细检查缓冲区是否与指定的一样大。

使用接受要复制的字节数的函数时,例如strncpy(),请注意,如果目标缓冲区大小等于源缓冲区大小,则它可能不会以NULL终止字符串。

如果在循环中访问缓冲区,请检查缓冲区边界,并确保没有写入超过分配空间的危险。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值