快好知 kuaihz订阅看过栏目

 

漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统。是受限制的计算机、组件、应用程序或其他联机资源的无意中留下的不受保护的入口点。

基本简介

安全漏洞(security hole)

安全漏洞是指受限制的计算机、组件、应用程序或其他联机资源的无意中留下的不受保护的入口点。漏洞是硬件软件或使用策略上的缺陷,他们会使计算机遭受病毒和黑客攻击。

漏洞特性

漏洞 是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统。具体举例来说,比如在Intel Pentium芯片中存在的逻辑错误,在Sendmail早期版本中的编程错误,在NFS协议中认证方式上的弱点,在Unix系统管理员设置匿名Ftp服务时配置不当的问题都可能被攻击者使用,威胁到系统的安全。因而这些都可以认为是系统中存在的安全漏洞。

漏洞与具体系统环境之间的关系及其时间相关特性

漏洞会影响到很大范围的软硬件设备,包括作系统本身及其支撑软件,网络客户和服务器软件网络路由器和安全防火墙等。换而言之,在这些不同的软硬件设备中都可能存在不同的安全漏洞问题。在不同种类的软、硬件设备,同种设备的不同版本之间,由不同设备构成的不同系统之间,以及同种系统在不同的设置条件下,都会存在各自不同的安全漏洞问题。

漏洞问题是与时间紧密相关的。一个系统从发布的那一天起,随着用户的深入使用,系统中存在的漏洞会被不断暴露出来,这些早先被发现的漏洞也会不断被系统供应商发布的补丁软件修补,或在以后发布的新版系统中得以纠正。而在新版系统纠正了旧版本中具有漏洞的同时,也会引入一些新的漏洞和错误。因而随着时间的推移,旧的漏洞会不断消失,新的漏洞会不断出现。漏洞问题也会长期存在。

因而脱离具体的时间和具体的系统环境来讨论漏洞问题是毫无意义的。只能针对目标系统的作系统版本、其上运行的软件版本以及服务运行设置等实际环境来具体谈论其中可能存在的漏洞及其可行的解决办法。

同时应该看到,对漏洞问题的研究必须要跟踪当前最新的计算机系统及其安全问题的最新发展动态。这一点如同对计算机病毒发展问题的研究相似。如果在工作中不能保持对新技术的跟踪,就没有谈论系统安全漏洞问题的发言权,即使是以前所作的工作也会逐渐失去价值。

常见安全漏洞

代码注入。包括SQL注入在内的广义攻击,它取决于插入代码并由应用程序执行。

会话固定。这是一种会话攻击,通过该漏洞攻击者可以劫持一个有效的用户会话。会话固定攻击可以在受害者的浏览器上修改一个已经建立好的会话,因此,在用户登录前可以进行恶意攻击。

路径访问,或者“目录访问”。该漏洞旨在访问储存在Web根文件外的文件或者目录。

弱密码,字符少、数字长度短以及缺少特殊符号。这种密码相对容易破解。

硬编码加密密钥,提供一种虚假的安全感。一些人认为在存储之前将硬编码密码分散可以有助于保护信息免受恶意用户攻击。但是许多这种分散是可逆的过程。

系统关系

漏洞与计算机系统的关系

漏洞问题与不同安全级别计算机系统之间的关系

计算机系统安全的分级标准一般都是依据“橘皮书”中的定义。橘皮书正式名称是“受信任计算机系统评量基准”(Trusted Computer System Evaluation Criteria)。橘皮书中对可信任系统的定义是这样的:一个由完整的硬件及软件所组成的系统,在不违反访问权限的情况下,它能同时服务于不限定个数的用户,并处理从一般机密到最高机密等不同范围的信息。

橘皮书将一个计算机系统可接受的信任程度加以分级,凡符合某些安全条件、基准规则的系统即可归类为某种安全等级。橘皮书将计算机系统的安全性能由高而低划分为A、B、C、D四大等级。其中:

D级——最低保护(Minimal Protection),凡没有通过其他安全等级测试项目的系统即属于该级,如Dos,Windows个人计算机系统。

C级——自主访问控制(Discretionary Protection),该等级的安全特点在于系统的客体(如文件、目录)可由该系统主体(如系统管理员、用户、应用程序)自主定义访问权。例如:管理员可以决定系统中任意文件的权限。当前Unix、Linux、Windows NT等作系统都为此安全等级。

B级——强制访问控制(Mandatory Protection),该等级的安全特点在于由系统强制对客体进行安全保护,在该级安全系统中,每个系统客体(如文件、目录等资源)及主体(如系统管理员、用户、应用程序)都有自己的安全标签(Security Label),系统依据用户的安全等级赋予其对各个对象的访问权限。

A级——可验证访问控制(Verified Protection),而其特点在于该等级的系统拥有正式的分析及数学式方法可完全证明该系统的安全策略及安全规格的完整性与一致性。 '

可见,根据定义,系统的安全级别越高,理论上该系统也越安全。可以说,系统安全级别是一种理论上的安全保证机制。是指在正常情况下,在某个系统根据理论得以正确实现时,系统应该可以达到的安全程度。

系统安全漏洞是指可以用来对系统安全造成危害,系统本身具有的,或设置上存在的缺陷。总之,漏洞是系统在具体实现中的错误。比如在建立安全机制中规划考虑上的缺陷,作系统和其他软件编程中的错误,以及在使用该系统提供的安全机制时人为的配置错误等。

安全漏洞的出现,是因为人们在对安全机制理论的具体实现中发生了错误,是意外出现的非正常情况。而在一切由人类实现的系统中都会不同程度的存在实现和设置上的各种潜在错误。因而在所有系统中必定存在某些安全漏洞,无论这些漏洞是否已被发现,也无论该系统的理论安全级别如何。

所以可以认为,在一定程度上,安全漏洞问题是独立于作系统本身的理论安全级别而存在的。并不是说,系统所属的安全级别越高,该系统中存在的安全漏洞就越少。

可以这么理解,当系统中存在的某些漏洞被入侵者利用,使入侵者得以绕过系统中的一部分安全机制并获得对系统一定程度的访问权限后,在安全性较高的系统当中,入侵者如果希望进一步获得特权或对系统造成较大的破坏,必须要克服更大的障碍。

安全漏洞与系统攻击的关系

安全漏洞与系统攻击之间的关系

系统安全漏洞是在系统具体实现和具体使用中产生的错误,但并不是系统中存在的错误都是安全漏洞。只有能威胁到系统安全的错误才是漏洞。许多错误在通常情况下并不会对系统安全造成危害,只有被人在某些条件下故意使用时才会影响系统安全。

漏洞虽然可能最初就存在于系统当中,但一个漏洞并不是自己出现的,必须要有人发现。在实际使用中,用户会发现系统中存在错误,而入侵者会有意利用其中的某些错误并使其成为威胁系统安全的工具,这时人们会认识到这个错误是一个系统安全漏洞。系统供应商会尽快发布针对这个漏洞的补丁程序,纠正这个错误。这就是系统安全漏洞从被发现到被纠正的一般过程。

系统攻击者往往是安全漏洞的发现者和使用者,要对于一个系统进行攻击,如果不能发现和使用系统中存在的安全漏洞是不可能成功的。对于安全级别较高的系统尤其如此。

系统安全漏洞与系统攻击活动之间有紧密的关系。因而不该脱离系统攻击活动来谈论安全漏洞问题。了解常见的系统攻击方法,对于有针对性的理解系统漏洞问题,以及找到相应的补救方法是十分必要的。

常见方法

常见攻击方法与攻击过程的简单描述

系统攻击是指某人非法使用或破坏某一信息系统中的资源,以及非授权使系统丧失部分或全部服务功能的行为。

通常可以把攻击活动大致分为远程攻击和内部攻击两种。随着互联网络的进步,其中的远程攻击技术得到很大发展,威胁也越来越大,而其中涉及的系统漏洞以及相关的知识也较多,因此有重要的研究价值。

寻找客户端漏洞

目标:客户端的漏洞?

客户端易受攻击:IE,Outlook,Firefox,MSN,Yahoo etc.

黑客利益的驱使:Botnet,Visa,CD-Key,DDOS etc.

发现漏洞较容易(More 0day?):较容易发现,新的领域

为什么挖掘图像格式中的漏洞?

Windows,Linux等操作系统支持多种图像格式:Bmp, GIF, JPG, ANI, PNG etc.文件格式众多,代码复杂易找到漏洞

Windows中很多图像格式解析的实现方式与开源代码及其相似,经常发现同一bug;(Why?)

黑客们并没有在每种格式中发现漏洞,没有足够的“eyes”关注

从安全人员的角度:

格式众多,算法复杂容易出现漏洞

影响范围极广跨应用跨平台,例如:

Windows 平台上任何解析jpg 的应用,office,outlook,IE...GDIPLUS.dll

Windows 内核实现对Ani 的支持,通过ie 不需要用户互动操作。谁会怀疑网页上的指针文件?

PNG Msn, libpng 很多开源软件

隐蔽性严重威胁用户安全

从黑客的角度:

如果利用图像格式触发的漏洞,会降低了受害者的警觉性,易利用社会工程学。蠕虫传播可能利用一些非常容易让人警惕的文件格式,但我们讨论的是图片格式jgp, png, ani...不容易让人引起怀疑

多种攻击媒介,利于黑客攻击:通过网页,邮件可以穿越防火墙的保护,IDS不易检查,需要对各种格式,协议进行解析才能检查出漏洞攻击。

图像的基本格式

流格式由很多段构成,段里面又由标记,参数(漏洞点),数据段构成

还可能有段里面再嵌套段(漏洞点)

Gif,Ani可能包含很多帧,刷新率,帧的索引(漏洞点)

可能会有标记图形模式的bit-map,可能会有逻辑上的错误png

JPG格式中的漏洞

先来一个实际的例子:

GDIPlus.DLL漏洞MS04-028 Nick DeBaggis

影响巨大,攻击很多

漏洞产生原因:

JPEG格式中的注释段(COM)由0xFFFE开始(标记)+2字节得注释段字节数(参数) +注释(数据)构成。因为字节数这个参数值包含了本身所占的2字节,所以GDIPLUS.dll在解析jpg格式文件中的注释段时会把这个值减去2,如果这个值设置成0,1就会产生整数溢出。

JPG格式中的漏洞

是不是觉得很相似?

2000 Solar Designer 发现了Netscape 浏览器的JPEG 解析漏洞,与Nick DeBaggis 发现的漏洞原理是相同的。

另一个相似的例子

Stefan Esser发现的XBOX Dashboard local vulnerability,该漏洞存在于XBOX Dashboard对.wav格式和.xtf格式文件的解析上,虽然说不是图形格式但漏洞原理却相同。

细节:同样存在一个size参数这次是它本身的大小是4字节,所以当size值为0-3时就会发生整数溢出。

疑问:为什么有些人从偶blog转文章就不写出处呢 也算是我翻来搜去搞来的文章呀bY FIRef0x

疑问:为什么会一再出现同类型的漏洞?

是否程序员们从概念上忽略了某些问题?

为什么都是整数溢出漏洞?

此类漏洞的本质是什么?

是否还有这种漏洞?

问题的本质

这些文件格式是由很多“段”构成的数据流,而每个段由:标记,参数,数据等结构构成,在程序解析这些文件格式的时候会依据“标记”来确认段,并读劝参数” 进行一定的运算,再依据这些参数来处理随后紧跟的“数据”。以上提到的几个漏洞的产生原因就是在对参数进行运算的时候相信了文件输入的参数没有进行确认而导致的。

思维扩展

不要相信用户的输入,同样不要相信文件的输入;

包括标记,错误的标记也会导致问题

包括参数,详细检查输入参数

包括数据,数据里面可能还嵌套着另一个“段”

思维扩展的结果

Venustech AD-Lab:Windows LoadImage API Integer Buffer overflow

影响极为广泛: bmp,cur,ico,ani格式的文件都受影响。

描述:

WINDOWS的USER32库的LoadImage系统API 存在着整数溢出触发的缓冲区溢出漏洞,这个API允许加载一个bmp,cur,ico,ani格式的图标来进行显示,并根据图片格式里说明的大小加4来进行数据的拷贝,如果将图片格式里说明的大小设置为0xfffffffc-0xffffffff,则将触发整数溢出导致堆缓冲区被覆盖。攻击者可以构造恶意的bmp,cur,ico,ani格式的文件,嵌入到HTML页面,邮件中,发送给被攻击者,成功利用该漏洞则可以获得系统的权限。

LoadImage API 整数溢出漏洞分析

代码:

.text:77D56178 mov eax, [ebx+8] //Direct read our size here:P

.text:77D5617B mov [ebp+dwResSize], eax

.text:77D5617E jnz short loc_77D56184

.text:77D56180 add [ebp+dwResSize], 4 //add 4 int overflow...

.text:77D56184

.text:77D56184 loc_77D56184: ; CODE XREF: sub_77D5608F+EF_j

.text:77D56184 push [ebp+dwResSize] //allocate a wrong size

.text:77D56187 push 0

.text:77D56189 push dword_77D5F1A0

.text:77D5618F call ds:RtlAllocateHeap

总结:转换思路后找到这个加4的漏洞,同样的类型,信任“文件”输入。

思维扩展的结果

EEYE 2004:Windows ANI File Parsing Buffer Overflow

堆栈漏洞极易利用,攻击方法隐蔽。

原理:

相信“ 文件” 输入参数,没做检查直接用作memcpy 的参数。

PNG漏洞,不同的模式

逻辑问题1:

EEYE PNG (Portable Network Graphics) Deflate Heap Corruption Vulnerability

原因:对 Length 码 #286 and #287没有做正确的处理,导致解压程序认为长度是0

do { *dest = *src; ++dest; ++src; } while (--len);

逻辑问题2:libPNG 1.2.5堆栈溢出

代码:

if (!(png_ptr->mode & PNG_HAVE_PLTE)) {

/* Should be an error, but we can cope with it */

g_warning(png_ptr, "Missing PLTE before tRNS"); }

else if (length > (png_uint_32)png_ptr->num_palette) {

g_warning(png_ptr, "Incorrect tRNS chunk length");

g_crc_finish(png_ptr, length);

return;

}

分析:代码编写的逻辑错误,错误的使用了else if.

相似漏洞:MSN png 漏洞,Media player png 漏洞

逻辑问题的总结

非常容易出现在复杂的文件格式处理中

容易出现在压缩,解压代码中:需要处理很多长度,大小相关的参数。

这种漏洞不一定是缓冲区溢出,也可能是越界访问等等

想象漏洞

发现漏洞有时候是一种想象的过程

例子1:

Venustech ADLab:Microsoft Windows Kernel ANI File Parsing Crash Vulnerability

介绍:ANI是WINDOWS 支持的动画光标格式,在ANI是由多个普通的光标文件组成一个动画,其中ANI文件的头处会标记是几个图标frame,WINDOWS 的内核在显示光标的时候并未对该值进行检查,如果将这个数字设置为0,会导致受影响的WINDOWS系统计算出错误的光标的地址并加以访问,触发了内核的蓝屏崩溃。不仅仅是应用使用ANI文件时会触发,只要在EXPLORER下打开ANI文件存在的目录就会触发。攻击者也可以发送光标的文件,引诱用户访问含有恶意光标显示的页面,以及发送嵌入光标的HTML邮件,导致被攻击者系统蓝屏崩溃。

原理:在计算frame地址的时候失败。

例子2:

Venustech ADLab:Microsoft Windows Kernel ANI File Parsing DOS Vulnerability

介绍:ANI是WINDOWS 2000支持的动画光标格式,在ANI是由多个普通的光标件组成一个动画,其中ANI文件的头处会标记每FRAME切换的频率,该值越小切换的速度越快,WINDOWS 的内核在切换光标FRAME的时候并未对该值进行检查,如果将这个数字设置为0,受影响的WINDOWS的内核会陷入内核的死锁,不再响应任何用户界面的操作。该漏洞触发必须要在使用ANI文件的应用中才能触发,攻击者引诱用户访问含有恶意光标显示的页面,以及发送嵌入光标的HTML邮件,导致被攻击者系统内核死琐

原因:没有考虑刷新频率是0的情况。

总结

下溢:Size参数小于自身所占大小

上溢:Size加上一个正整数值产生上溢

直接作为参数输入memcpy类函数

非法参数导致地址访问越界

多种逻辑上的错误

充分发挥想象:刷新率?

总结

安全提示:

文件格式是攻击者的另一种输入渠道,同样不要信任从文件读取的数据

解析文件格式时应该对参数进行充分的检查

同样需要想象力,需要考虑到每种可能的情况

检查方法

前期准备

建立安全模型

1、熟悉软件功能、功能实现,配置等;

如:IIS的虚拟目录、脚本映射;

2、根据功能,分析安全需求,建立安全模型;

IIS外挂,文件类型识别,目录正确识别;目录限制;

外挂的特点;权限不是在文件对象上,需要自己识别文件,所以需要识别出同一个文件的所有文件名;

3、根据安全需求,分析编程应注意的地方,重点检查。

IIS要对"../"进行检测,连接文件的处理,识别出正确的目录、文件名;编程接口完全按接口实现;

代码分析

1、通读原代码;

2、安全需求里面重点需要检测的地方;

3、搜索容易有问题的函数调用,如strcpy、strcat、*printf、free、strncpy等;

4、常见一些编程问题;一些变量类型,如长度变量用int,注意一些函数非直接返回赋值问题等,一些边界条件,记数从0开始还是从1开始。

5、分析缓冲区使用的代码;

6、输入输出合法检测;

7、编程接口调用;了解操作系统、基本文件、进程调用等的特性;

8、数据结构;

9、安全领域的最小原则;

二进分析

1、测试;

(1)、熟悉输入输出;

(2)、根据需要编写测试程序;

(3)、输入输出各种特殊情况测试,特殊字符、长串;

(4)、安全需求需要检测的一些条件测试;

2、反汇编分析;

(1)、阅读理解反汇编代码;

(2)、安全需求检测的代码分析;

(3)、调用接口代码分析;

(4)、sub esp,xxx 代码分析缓冲;

(5)、strcpy、strcat、*printf、free、strncpy等调用分析;

(6)、输入输出检测;

3、跟踪调试;

(1)、异常的拦截分析;

(2)、一些字符串的流向,读写断点;

总结提高

1、分析总结各种漏洞、漏洞原因、编程问题,补丁修补方法,编程怎么避免。

2、对漏洞归纳分类,全面考虑;

分类

用户群体

大众类软件的漏洞。如Windows的漏洞、IE的漏洞等等。

专用软件的漏洞。如Oracle漏洞、Apache漏洞等等。

数据角度

能读按理不能读的数据,包括内存中的数据、文件中的数据、用户输入的数据、数据库中的数据、网络上传输的数据等等。

能把指定的内容写入指定的地方(这个地方包括文件、内存、数据库等)

输入的数据能被执行(包括按机器码执行、按Shell代码执行、按SQL代码执行等等)

作用范围

远程漏洞,攻击者可以利用并直接通过网络发起攻击的漏洞。这类漏洞危害极大,攻击者能随心所欲的通过此漏洞操作他人的电脑。并且此类漏洞很容易导致蠕虫攻击,在Windows。

本地漏洞,攻击者必须在本机拥有访问权限前提下才能发起攻击的漏洞。比较典型的是本地权限提升漏洞,这类漏洞在Unix系统中广泛存在,能让普通用户获得最高管理员权限。

触发条件上看可以分为:

主动触发漏洞,攻击者可以主动利用该漏洞进行攻击,如直接访问他人计算机。

被动触发漏洞,必须要计算机的操作人员配合才能进行攻击利用的漏洞。比如攻击者给管理员发一封邮件,带了一个特殊的jpg图片文件,如果管理员打开图片文件就会导致看图软件的某个漏洞被触发,从而系统被攻击,但如果管理员不看这个图片则不会受攻击。

操作角度

文件操作类型,主要为操作的目标文件路径可被控制(如通过参数、配置文件、环境变量、符号链接灯),这样就可能导致下面两个问题:

写入内容可被控制,从而可伪造文件内容,导致权限提升或直接修改重要数据(如修改存贷数据),这类漏洞有很多,如历史上Oracle TNS LOG文件可指定漏洞,可导致任何人可控制运行Oracle服务的计算机;

内容信息可被输出,包含内容被打印到屏幕、记录到可读的日志文件、产生可被用户读的core文件等等,这类漏洞在历史上Unix系统中的crontab子系统中出现过很多次,普通用户能读受保护的shadow文件;

内存覆盖,主要为内存单元可指定,写入内容可指定,这样就能执行攻击者想执行的代码(缓冲区溢出、格式串漏洞、PTrace漏洞、历史上Windows2000的硬件调试寄存器用户可写漏洞)或直接修改内存中的机密数据。

逻辑错误,这类漏洞广泛存在,但很少有范式,所以难以查觉,可细分为:

条件竞争漏洞(通常为设计问题,典型的有Ptrace漏洞、广泛存在的文件操作时序竞争)

策略错误,通常为设计问题,如历史上FreeBSD的Smart IO漏洞。

算法问题(通常为设计问题或代码实现问题),如历史上微软的Windows 95/98的共享口令可轻易获取漏洞。

设计的不完善,如TCP/IP协议中的3步握手导致了SYN FLOOD拒绝服务攻击。

实现中的错误(通常为设计没有问题,但编码人员出现了逻辑错误,如历史上博彩系统的伪随机算法实现问题)

外部命令执行问题,典型的有外部命令可被控制(通过PATH变量,输入中的SHELL特殊字符等等)和SQL注入问题。

时序

已发现很久的漏洞:厂商已经发布补丁或修补方法,很多人都已经知道。这类漏洞通常很多人已经进行了修补,宏观上看危害比较小。

刚发现的漏洞:厂商刚发补丁或修补方法,知道的人还不多。相对于上一种漏洞其危害性较大,如果此时出现了蠕虫或傻瓜化的利用程序,那么会导致大批系统受到攻击。

0day:还没有公开的漏洞,在私下交易中的。这类漏洞通常对大众不会有什么影响,但会导致攻击者瞄准的目标受到精确攻击,危害也是非常之大。

漏洞利用

如果一个缺陷不能被利用来干“原本”不能干的事(安全相关的),那么就不能被称为安全漏洞,所以安全漏洞必然和漏洞利用紧密联系在一起。

漏洞利用的视角有:

数据视角:访问本来不可访问的数据,包括读和写。这一条通常是攻击者的核心目的,而且可造成非常严重的灾难(如银行数据可被人写)。

权限视角:主要为权限绕过或权限提升。通常权限提升都是为了获得期望的数据操作能力。

可用性视角:获得对系统某些服务的控制权限,这可能导致某些重要服务被攻击者停止而导致拒绝服务攻击。

认证绕过:通常利用认证系统的漏洞而不用受权就能进入系统。通常认证绕过都是为权限提升或直接的数据访问服务的。

代码执行角度:主要是让程序将输入的内容作为代码来执行,从而获得远程系统的访问权限或本地系统的更高权限。这个角度是SQL注入、内存指针游戏类漏洞(缓冲区溢出、格式串、整形溢出等等)等的主要驱动。这个角度通常为绕过系统认证、权限提升、数据读取作准备的。

发掘方法

首先必须清楚安全漏洞是软件BUG的一个子集,一切软件测试的手段都对安全漏洞发掘实用。现在”黑客“用的各种漏洞发掘手段里有模式可循的有:

fuzz测试(黑盒测试),通过构造可能导致程序出现问题的方式构造输入数据进行自动测试。

源码审计(白盒测试),现在有了一系列的工具都能协助发现程序中的安全BUG,最简单的就是你手上最新版本的C语言编译器。

IDA反汇编审计(灰盒测试),这和上面的源码审计非常类似,唯一不同的是很多时候你能获得软件,但你无法拿到源码来审计,但IDA是一个非常强大的反汇编平台,能让你基于汇编码(其实也是源码的等价物)进行安全审计。

动态跟踪分析,就是记录程序在不同条件下执行的全部和安全问题相关的操作(如文件操作),然后分析这些操作序列是否存在问题,这是竞争条件类漏洞发现的主要途径之一,其他的污点传播跟踪也属于这类。

补丁比较,厂商的软件出了问题通常都会在补丁中解决,通过对比补丁前后文件的源码(或反汇编码)就能了解到漏洞的具体细节。

以上手段中无论是用哪种都涉及到一个关键点:需要通过人工分析来找到全面的流程覆盖路径。分析手法多种多样,有分析设计文档、分析源码、分析反汇编代码、动态调试程序等。

等级评定

考察漏洞的危害性应该紧密的和利用该漏洞带来的危害相关,并不是通常大家认识的所有缓冲区溢出漏洞都是高危漏洞。以远程漏洞为例,比较好的划分方法为:

1 可远程获取OS、应用程序版本信息。

2 开放了不必要或危险得服务,可远程获取系统敏感信息。

3 可远程进行受限的文件、数据读取。

4 可远程进行重要或不受限文件、数据读取。

5 可远程进行受限文件、数据修改。

6 可远程进行受限重要文件、数据修改。

7 可远程进行不受限得重要文件、数据修改,或对普通服务进行拒绝服务攻击。

8 可远程以普通用户身份执行命令或进行系统、网络级的拒绝服务攻击。

9 可远程以管理用户身份执行命令(受限、不太容易利用)。

10 可远程以管理用户身份执行命令(不受限、容易利用)。

本地漏洞几乎都是导致代码执行,归入上面的10分制可以为:

远程主动触发代码执行(如IE的漏洞).

远程被动触发代码执行(如Word漏洞/看图软件漏洞).

过程分析

一个防火墙隔离(只允许运维部的人访问)的网络里运行一台Unix服务器;操作系统中只有root用户和oracle用户可登陆,操作系统中运行了Apache(nobody权限)、Oracle(oracle用户权限)等服务。

一个攻击者的目的是修改Oracle数据库中的帐单表的数据。

其可能的攻击步骤为:

1.接入运维部的网络,获得一个运维部的IP地址从而能通过防火墙访问被保护的Unix服务器。

2.利用Apache服务的某远程缓冲区溢出漏洞直接获得一个nobody权限的shell访问。

3.利用操作系统某suid程序的漏洞将自己的权限提升到root权限。

4.用Oracle的sysdba登陆进入数据库(本地登陆不需要密码)。

5.修改目标表的数据。

以上5个过程分析下来为:

第1步:认证绕过

第2步:远程漏洞、代码执行(机器码)、认证绕过

第3步:权限提升、认证绕过

第4步:认证绕过

第5步:数据写

5个最危险安全漏洞

注入漏洞

在应用程序将不可信的数据发送给解释器时,就有可能产生注入漏洞。这种漏洞很普遍,会影响到大量方案。最普遍的注入漏洞会影响到SQL、LDAP、XPath、XML解析器和程序参数。

其实,通过分析代码是可以发现注入漏洞的,但是,如果已经将系统部署到了生产环境中了,在测试期间就很难发现这些漏洞。

利用劫持漏洞的网络攻击带来的后果可能有:敏感数据被泄露、拒绝服务等。

攻击者可以运行劫持攻击,从而完全破坏目标系统,并获得其控制权。

注入漏洞可以影响多种软件,其影响依赖于有漏洞的应用程序的传播范围或传播水平。注入漏洞可能带来的一个典型影响就是Bash Bug漏洞。红帽子的安全团队在Linux 中的 Bash shell 中发现了一个危险的安全漏洞“Bash Bug”。对于用户的正常访问,该漏洞允许攻击者的代码如同在外壳 中一样被执行,这就为各种各样的攻击打开了方便之门。

这种类型的漏洞可能带来大规模影响,例如,物联网设备(例如,智能仪表,路由器,网络摄像机等设备)就有可能遭受这种漏洞的威胁。

缓冲区溢出

如果应用程序试图将超过缓冲区容量的数据存放在其中时,就产生了缓冲区溢出漏洞的条件。从外部写入到缓冲区可以使攻击者覆盖邻近内存块的内容,从而导致数据遭到破坏,程序崩溃,甚至可以执行任何恶意代码。

缓冲区溢出攻击难以发现,但与注入攻击相比,也更难以利用。攻击者需要了解目标应用的内存管理,并且知道修改其内容运行攻击的方法。

在典型的攻击中,攻击者将数据发送给一个应用程序,而后者是一个将数据存储在小容量的堆栈缓冲区的程序,这会导致覆盖调用堆栈上的信息,其中包括函数的返回指针。通过这种方法,在合法的功能完成之后,攻击者就可以运行自己的恶意代码,并且可以将控制交给包含攻击者数据的漏洞利用代码。

由于针对SCADA的攻击日益增多,所以这种缓冲区溢出漏洞被利用的频率也会越来越高。

敏感数据泄露

数据可以存储在系统中,或在两个实体(如服务器或浏览器)之间传输,如果缺乏足够的保护,就会发生敏感数据泄露的问题。

敏感数据的泄露可涉及到访问静态数据、正在传输数据,其中也包括备份和用户正在浏览的数据。

攻击者有多种选择,例如,如果要窃取或攻击数据存储器,他可以使用基于恶意软件的攻击,通过中间人攻击截获服务器和浏览器之间的数据,或者欺骗Web应用程序做出一些动作(例如,改变电子商务应用程序中购物车的内容,或者提升特权)等。

敏感数据泄露主要是由于敏感数据缺少加密造成的,但是即使实施了加密机制,其他事件也会造成信息泄露。密钥的生成和管理及算法等不够强健在许多行业和应用中是很普遍的事情。

近一年来发生的有许多事件都表明这种漏洞的严重性,特别是在两方面表面尤为突出:一是实施了错误的加密算法,二是移动和云的方案缺乏加密。

2014年九月,美国计算机紧急事件响应小组协调中心(CERT/CC)的专家对一些没有能够正确验证SSL证书的安卓应用进行了测试,并发布了测试报告。

CERT的报告认为,许多应用正使用有漏洞的库,如Flurry库。因此,安卓用户就会暴露在这种攻击中,并仅有少量公司采取措施保障其产品的安全。

攻击者往往并不直接破解加密,而是利用敏感数据的泄露缺陷。这就意味着攻击者会窃取加密密钥,运行中间人攻击,从服务器或用户的浏览器上窃取正在传输的明文数据。

注意,敏感数据泄露往往是攻击活动第一阶段的一个组成部分,也就是说攻击者随后会利用其它黑客技术。

管理敏感数据的每家企业都有可能遭受攻击,特别是那些有大量用户的企业,很多用户都有可能为网络攻击打开大门。

认证和会话管理攻击

如果攻击者利用了认证或会话管理过程的漏洞或缺陷(例如,账户、口令、会话ID被泄露等),并假冒其他用户,就会发生认证和会话管理攻击。

这种攻击非常常见,许多黑客组织都利用这些漏洞访问受害者账户,实施网络间谍活动,或者窃取信息用于犯罪活动。

一个主要的威胁问题与认证和会话管理机制的自定义实施有关,在多数情况下,这种机制会导致攻击活动。这种漏洞影响到WEB应用程序,如用户登出、口令管理、超时、网站登录的“记住我”功能等,而且账户的更新也受到认证漏洞攻击影响。

最大的问题是,如果这种漏洞被成功地利用,攻击者就假冒受害者,用其获得的特权从事任何活动。

不幸的是,由于大量的认证机制是由每个不同的受害者实施的,所以认证和会话管理的攻击漏洞是很难对付的。认证和会话管理系统往往并不一致,这就使得大规模地采用最佳方法并非易事。

攻击者有多种方法可以绕过认证机制,其中包括使用SQL注入攻击对目标账户实施蛮力攻击、从URL中恢复会话标志、利用会话超时、重新利用已经使用的会话令牌,或者破坏用户的浏览器,等等。

最常见的攻击依靠会话,而认证机制往往基于服务器上与每个会话有关的的令牌。取得会话标志的攻击者能够假冒受害者而无需再次提供登录凭据。

SQL注入

像Hibernate这样的对象到关系映射(ORM)库可以提供了一些保护,通过吸引开发人员远离直接操作的数据库查询,来防止SQL注入漏洞。然而,大多数ORM库允许开发人员创建自由格式的查询,但这仍给应用程序的开放留下了注入攻击。

跨站漏洞(XSS)

.NET框架提供了一些开箱即用的XSS的保护,通过ValidateRequest属性可用。这很有用,但因为它依赖于一个已知的无效负载黑名单,这可能会被绕过。因此,开发人员仍然需要正确地编码数据,以防止XSS漏洞。

跨站点请求伪造(CSRF)

Tomcatservlet容器的最新版本CSRF保护过滤器,它提供很多保护来防止CSRF攻击。

安全配置错误

这种漏洞其实是最常见也是最危险的。错误配置的服务器和应用程序在网络上数量众多,这为网络攻击打开了大门。

下面是一些典型的安全配置错误:

· 运行过时的软件

· 生产环境中的应用程序和产品仍运行在调试模式,或者仍包含调试模块。

· 在系统中运行不必要的服务。

· 没有配置对服务器资源和服务的访问,导致泄露敏感信息,或者导致攻击者破坏或窃取这些信息。

· 没有改变出厂设置(例如,默认密钥和口令)

· 不正确的异常管理,导致将系统信息泄露给攻击者。

· 使用默认账户。

最新新闻

IE浏览器曝安全漏洞 黑客可窃取密码

电脑安全研究者日前表示,微软广泛流行的IE浏览器存在漏洞,黑客可以通过窃取证书,从而进入Facebook、Twitter和其它网站。研究者将这种技术叫做“cookiejacking”。意大利独立互联网安全研究者罗萨里奥·瓦罗塔(Rosario Valotta)说:“任何网站,任何Cookie,范围之广只能想像。”黑客可以利用漏洞进入到浏览器保存的数据中,也就是“Cookie”,它保存了登录名和密码。

一旦黑客窃取到Cookie,就可以进入到相同的网站,专家将这种技术叫“cookiejacking”。

漏洞在所有IE版本上都存在,包括最新的IE 9,也存在于所有Windows操作系统中。

要利用该漏洞,黑客必须先使受害者在PC显示屏上拖放一个目标,然后才能黑用户的电脑。听起来这个任务比较难,但是瓦罗塔说他能相当容易做到。他建立了一个程序放在Facebook上,用户来挑战:让一个美女裸体。

瓦罗塔说:“我在Facebook上发布游戏,不到三天,超过80个Cookies就传回我的服务器。我只有150个朋友。”

微软表示,在真正的cookiejacking骗局中成功几乎不可能。微软新闻发言人杰瑞·布莱恩特(Jerry Bryant)说:“考虑到需要用户互动,我们不认为这个问题有很高的风险。要受到可能的影响,用户必须先访问恶意网站,被说服去点击和拖动网页上的目标,黑客才能从网上攻击用户曾登录的Cookie。”

投稿
非常不爽,删了吧! 相关词条:其他 硬件 服务器软件 网络路由器 计算机病毒 可信任系统 自主访问控制 系统管理员 强制访问控制 安全策略 系统攻击 系统漏洞 图像格式 邮件 图片格式 死琐 刷新率 虚拟目录 编程接口 看图软件 符号链接