关于漏洞的基础知识

整理自老师的笔记及书籍

漏洞的定义

官方定义:
漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的下访问或破坏系统。
基本理解:
漏洞是协议在生命周期的各个阶段(设计、实现、运维等过程)中产生的某类问题,这些问题会对系统的安全(机密性、完整性、可用性)产生影响。
BUG与漏洞:
漏洞与Bug并不等同:大部分的Bug影响功能性,并不涉及安全性,也就不构成漏洞;大部分的漏洞来源于Bug,但并不是全部,它们之间只是有一个很大的交集。

漏洞产生原因

漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统。即某个程序(包括操作系统).在设计时未考虑周全,当程序遇到一个看似合理,但实际无法处理的问题时,引发的不可预见的错误

它不是安装的时候的结果 也不是永久后的结果而是编程人员的人为因素,在程序编写过程,为实现不可告人的目的,在程序代码的隐蔽处保留后门,或受编程人员的能力、经验和当时安全技术所限,在程序中难免会有不足之处,轻则影响程序效率,重则导致非授权用户的权限提升。

出现频率最高的依次是: 设计错误 -> 输入验证错误-> 意外情况处理错误 -> 边界条件错误 -> 环境错误 -> 访问验证错误

软件漏洞的产生来源

1、缓冲区溢出(buffer overflows)
缓冲区溢出:代码写入的数据超过了缓冲区的边界;是软件安全漏洞的主要来源;是一种比较常见的编码错误,特别是在字符串处理过程中。
缓冲区造成的危害
1)程序直接崩溃,除了用户体验也没什么大损失
2)错误的写入覆盖了其他敏感数据,造成数据的丢失
3)执行恶意代码,因为数据写入越界,恶意代码可以将原先正常的函数修改为自己的代码,从而获得整个软件的执行权。

缓冲区溢出根据溢出的内存类型分为:
栈溢出:栈内的数据溢出。
堆溢出(heap overflow):堆内的数据溢出

根据溢出的类型可分为overflow及underflow:
overflow:写入的数据超过了缓冲的边界
underflow:缓冲中有用数据的大小小于缓冲区长度,这有可能造成脏数据的问题

2、未验证输入(Unvalidated Input)
一款应用往往需要接收各种各样的输入,针对一款iOS应用,主要的输入有读取文件,读取用户输入,读取网络传输数据,或通过URL被启动(URL Schema

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值