Answers:
映像文件中的漏洞利用了OS的映像处理代码中的缓冲区溢出漏洞。几年前,Windows的GDI层中发现了几个严重的缺陷-补丁已发布很久了,但漏洞利用图像仍然存在,或者仅仅是因为它们停留了下来,还是希望它们击中了尚未修补的计算机。 。
这种安全漏洞的常见原因是在调用堆栈上的函数之间传递图像数据,而没有正确检查数据的最大长度。可以通过巧妙地构造数据来充分利用此信息,这些数据过大并以某种方式排列,最终导致其最终覆盖堆栈帧中的代码(用其他代码覆盖)或覆盖指向将用于调用其他函数的代码的指针。或在被调用函数返回到调用方时(覆盖此类指针以使其指向漏洞利用代码),或以导致暴露另一个漏洞的方式覆盖数据。确切的方法取决于所讨论的安全漏洞。
如果代码支持,现代CPU的保护功能可以阻止大多数此类攻击。程序/库通过显式标记其哪些页面是数据以及哪些页面是代码而起作用-然后,如果试图将应为数据的内容(例如图像数据)中的任何内容尝试作为代码执行,则CPU将引发异常。IIRC Vista及更高版本和.Net的最新版本已对其所有库进行了重新调整以支持此保护,并且其他操作系统也支持该库,但这并不能阻止所有此类漏洞利用,只有在明确打开后才能起作用(否则,很多旧代码会中断)。
我必须承认,木马和病毒的这一方面一直困扰着我。作为软件开发人员,我总是检查数组的长度等,因此我不明白为什么会发生缓冲区溢出之类的事情。
好吧,欢迎来到现实世界;-)。缓冲区溢出&c。可能会以多种语言发生(尤其是那些具有手动内存管理功能的语言,例如C),而且随着开发人员犯错,它们的确会发生。
通常,缓冲区溢出只会使程序崩溃(违反分段或类似行为),但它可能允许攻击者执行代码->激活木马。
例如:
http://www.microsoft.com/technet/security/bulletin/MS04-028.mspx
http://secunia.com/advisories/35216/
并解释如何允许代码执行:
/programming/460519/how-are-buffer-overflows-used-to-exploit-computers
有一个漏洞利用了一个漏洞,该漏洞使损坏的JPEG库溢出,可以在2006年运行任意代码。您的机器几乎可以肯定并不脆弱,Hupigon刚生成了太多的误报。
http://www.microsoft.com/security/portal/Threat/Encyclopedia/Entry.aspx?name=Win32/Hupigon
我必须承认,木马和病毒的这一方面一直困扰着我。作为软件开发人员,我总是检查数组的长度等,因此我不明白为什么会发生缓冲区溢出之类的事情。我知道人们确实会偷工减料并犯错误,而且如果软件足够复杂,这些错误就会漏掉。
也许您正在检查所有的指针,数组等。但是您确定,您(可能)使用(可能)使用的任何3rd-patry库的所有程序员也都这样做了吗?
最简单的解决方案是下载“ image.jpg.exe”之类的文件或类似文件而不是实际图像。
此处已经描述了感染PC的更高级方法(例如,缓冲区溢出等)。