微软安全工程师 Matt Miller 在以色列举行的安全会议 BlueHat 上透露,微软旗下产品过去 12 年修复的所有漏洞,有七成涉及的是内存安全问题。
内存安全是软件和安全工程师使用的术语,描述应用程序以不会导致错误的方式访问操作系统内存。当软件无意或有意以超出其分配大小和内存地址的方式访问内存时,就会出现内存安全漏洞。缓冲区溢出、竞争条件、分页错误、空指针,堆栈耗尽,堆耗尽/损坏、释放后使用或双重释放等术语描述的都是内存安全漏洞。
内存安全问题占比高的原因主要是因为 Windows 由 C 和 C++ 编写。这两种“内存不安全”的语言允许开发人员对可执行代码的内存地址进行细致的控制,内存管理代码的一个漏洞就可能导致大量的内存安全错误。攻击者可利用这些错误来实现侵入性的操作,像是远程代码执行和权限提升漏洞。
目前内存安全问题是黑客面对的最大攻击面。据 Miller 描述,免费和堆溢出漏洞(heap corruption vulnerabilities)仍是黑客开发完漏洞利用(Exploit)后的首选。