大家都知道黑客发起攻击、入侵等行为都需要挖掘其网络、系统、程序的"漏洞"然后利用其"漏洞"来完成目标实施那么"漏洞是如何产生的"?又是如何被挖掘出来被利用的呢?
今天就以本篇文章内容给大家详细阐述一下"漏洞的定义、趋势、产生、分类、以及漏洞的挖掘和分析技术详解"!
一、漏洞的基本理解我们经常听到漏洞这个概念网站优化那么"漏洞是如何产生的"?又是如何被挖掘出来被利用的呢?
今天就以本篇文章内容给大家详细阐述一下"漏洞的定义、趋势、产生、分类、以及漏洞的挖掘和分析技术详解"!
一、漏洞的基本理解我们经常听到漏洞这个概念可什么是安全漏洞?
官方定义:漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷从而可以使攻击者能够在未授权的下访问或破坏系统。
基本理解:漏洞是硬件、软件、协议在生命周期的各个阶段(设计、实现、运维等过程)中产生的某类问题这些问题会对系统的安全(机密性、完整性、可用性)产生影响。
有人经常理解为BUG就是漏洞其实它们两者之间还是有很大区别的漏洞与Bug并不等同他们之间的关系基本可以描述为:大部分的Bug影响功能性并不涉及安全性也就不构成漏洞;大部分的漏洞来源于Bug但并不是全部它们之间只是有一个很大的交集。
二、漏洞的趋势近几年来漏洞数量依然处在上升趋势不仅如此新漏洞从公布到被利用的时间越来越短黑客对发布的漏洞信息进行分析研究往往在极短时间内就能成功利用这些漏洞。除了利用已知漏洞黑客们也善于挖掘并利用一些尚未公布的漏洞发起病毒攻击或出售漏洞资料满足经济目的。因此漏洞的研究值得感兴趣的小伙伴们深度研究国家信息安全漏洞共享平台(CNVD)对漏洞研究有成果的会员会给予相应奖励。
漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷从而可以使攻击者能够在未授权的情况下访问或破坏系统。即某个程序(包括操作系统)在设计时未考虑周全当程序遇到一个看似合理但实际无法处理的问题时引发的不可预见的错误
它不是安装的时候的结果 也不是永久后的结果而是编程人员的人为因素在程序编写过程为实现不可告人的目的在程序代码的隐蔽处保留后门受编程人员的能力、经验和当时安全技术所限在程序中难免会有不足之处轻则影响程序效率重则导致非授权用户的权限提升。
以软件漏洞来举例的产生的主要来源如下:
1、缓冲区溢出(buffer overflows)
缓冲区溢出是软件安全漏洞的主要来源。所谓缓冲区溢出指的就是代码写入的数据超过了缓冲区的边界比如向大小10KB的缓冲区写如12KB的数据那么这个缓冲就溢出了。当然前向溢出也算溢出也就是写入的数据写入到了缓冲区的起始边界之前。
缓冲区溢出是一种比较常见的编码错误特别是在字符串处理过程中。缓冲区造成的危害也是比较多样的。比较轻微的就是程序直接崩溃除了用户体验也没什么大损失;比较严重的就是错误的写入覆盖了其他敏感数据造成数据的丢失;最严重的莫过于执行恶意代码因为数据写入越界恶意代码可以将原先正常的函数修改为自己的代码从而获得整个软件的执行权。
缓冲区溢出根据溢出的内存类型分为:
栈溢出()
栈内的数据溢出。
堆溢出(heap overflow)
堆内的数据溢出
根据溢出的类型可分为overflow及underflow
overflow写入的数据超过了缓冲的边界
underflow, 缓冲中有用数据的大小小于缓冲区长度这有可能造成脏数据的问题
2、未验证输入(Unvalidated Input)
一款应用往往需要接收各种各样的输入针对一款iOS应用主要的输入有读取文件读取用户输入读取网络传输数据或通过URL被启动(URL Schema)。各种类型的输入都有可能是非法的甚至是恶意的所以针对所有类型的输入应用都要进行检验确保输入的数据是符合程序要求的合理的合法的数据。
非法输入可能造成的危害主要有:
输入的数据大于接收缓冲会造成缓冲溢出
格式化字符串注入对这些字符串进行处理时如果不小心会造成程序的崩溃或某些敏感数据被篡改
URLSchema中的命令为恶意命令执行了恶意的命令
代码注入输入的URL或命令中带有脚本、代码等恶意片段