什么是计算机的漏洞呢?漏洞(vulnerability),又叫做脆弱性,漏洞这个概念早在1947年冯·诺依曼提出计算机体系结构的时候就有涉及。他认为计算机的发展和自然生命是很像的,计算机的漏洞就和自然生命的基因缺陷一样,也可能在使用和发展过程中产生意想不到的问题。
但是当时计算机漏洞的提出并没有得到人们的重视,直到1970-80年代,早期黑客的出现和第一个计算机病毒的产生,计算机漏洞这个概念逐渐引起人们的关注。
一直到今天,随着计算机应用的发展和互联网络的出现,漏洞相继在软件、硬件、管理过程,甚至人的环节出现,引起病毒泛滥、黑客猖獗,使得安全漏洞成为网络空间的一个现实、热门话题。
不知道大家知不知道缓冲区溢出这个概念。
计算机中的程序一般都会使用到一些内存,这些内存用来提供给程序内部使用,或是存放用户的输入数据,这样的内存一般称作缓冲区。溢出是指盛放的东西超出容器容量而溢出来了,在计算机程序中,就是数据的大小超出了计算机分配给你的内存,你使用了不在分配范围内的内存。
而缓冲区溢出,简单的说就是计算机对程序的输入数据没有进行有效的检测,从而向缓冲区存放数据时超过了缓冲区本身的容量,而导致数据溢出到被分配空间之外的内存空间,使得溢出的数据覆盖了其他内存空间的数据。
这个时候,黑客们就会利用缓冲区的溢出漏洞,故意写入超过缓冲区大小的数据,从而破坏程序的堆栈,造成程序崩溃或使程序转而执行其它指令,以达到攻击的目的。
有许多多的经典的安全漏洞都是基于缓冲区溢出的,比如说编号MS08-067漏洞,黑客可以利用这个漏洞直接控制他人的计算机。再比如编号MS12-020的漏洞,黑客通过精心编写的攻击代码,可以直接导致别人计算机蓝屏这样的严重后果。
那么最根究底,漏洞是怎么产生的呢?或者说,为什么会产生漏洞?在这里,小白觉得漏洞的成因可以归纳为三点。
实现漏洞:
实现漏洞是安全漏洞中最大的一类,大多数我们接触到的安全漏洞都属于这一类。实现类漏洞是由于在程序员在程序编码时不够严谨或对于安全性的考虑不周而产生的漏洞,缓冲区溢出类漏洞是最典型的实现漏洞
设计漏洞:
设计漏洞主要是指软件、硬件和固件在设计时对于安全性考虑不周导致的漏洞。例如F5 BIG-ip远程绕过验证漏洞是由于F5设备的SSH登录模块内置了一个可用于登录的秘钥文件,这个秘钥被泄露后任意获取该秘钥的用户都可以登录任意一台相关版本的设备。
配置漏洞:
配置漏洞是由于软件的默认配置或者不恰当的配置导致的安全漏洞。例如弱密码或默认密码就是一种常见的配置漏洞。在Windows系统中,默认情况下会允许远程用户建立空会话(即不需要密码就可以远程连接到计算机),枚举系统里的各项NetBIOS信息。
上面这些漏洞信息其实都会保存在漏洞信息管理组织手里,那么我们如果要了解最新的漏洞信息,我们该去哪里呢?这里小白和大家介绍几个组织。
CVE(Common
Vulnerabilities & Exposures,通用漏洞披露)
美国国家漏洞数据库(NVD)
丹麦安全公司Secunia
Security Focus Bugtraq
美国IBM公司的ISS X-Force
中国国家信息安全漏洞库(CNNVD)
当然,小白最推荐的还是中国国家信息安全漏洞库(CNNVD)啦,如果想要了解最新的漏洞,就可以在CNNVD的网站上面看到噢~
CNNVD
至于漏洞是怎么被发现的呢?其实这就是黑客们的功劳啦。
大多数漏洞早先是由黑客先发现的,这些漏洞被发现后大多直接被利用于黑色产业链中用于牟利,根据国家信息安全漏洞库CNNVD信息安全漏洞态势报告(2015年度)的报告显示,漏洞交易的市场化已成为常态,随着漏洞交易市场完善,明码标价,地下黑市中流通的高危漏洞大量增加,其所造成的危害也日益严重。
另一方面,各大软件厂商和互联网企业也逐步建立了自己的应急响应中心并通过各种奖励机制鼓励白帽子黑客将发现的安全漏洞提交给厂商,微软、APPLE等公司的单漏洞最高奖金可达10万美元以上,而国内的阿里、百度、腾讯、360、乌云等互联网公司及漏洞平台每年也提供了数十万甚至上百万元的奖励基金。