修复其他程序中的安全漏洞

修复其他程序中的安全漏洞

作者:BlogUpdater |  时间:2020-10-26 |  浏览:67 |  评论已关闭 条评论

在微软的产品中,一旦出现了和缓冲区溢出相关的崩溃错误,它的修复优先级将会很快的被提升到最高优先级。

最近我碰到过一些类似这样的缓冲区溢出的问题,它们实际上来自于其他应用程序,只不过最终被Windows检测到了。

举个例子,有一些应用程序会不正确的处理LVN_GETDISPINFO消息通知,他们会向LVITEM.pszText指向的缓冲区中写入多于LVITEM.cchTextMax的字符。

另一个例子是,开发者在响应IContextMenu::GetContextMenu时,会向pszName指向的缓冲区写入多于cchMax的字符。

幸运的是,在上面的两个例子中,缓冲区只是溢出了一个字符,我们可以在申请多一个字符的缓冲区并返回少一个字符的缓冲区大小。这样的话,如果程序程序中的缓冲区溢出了一个字符,则它不会实际引发缓冲区溢出的问题。

另一个类似的例子是,当用户在一个文件上右键时,如果这个文件的路径比MAX_PATH长,则也会出现缓冲区溢出一个字节的问题。通常,这样的文件路径是合法的,但是创建或者对它们进行操作也比较困难,对于这种情况,我们能做的并不多。

总结
所以,请注意了伙计们,请编写代码的时候注意你的缓冲区大小,并时刻注意不要出现溢出的问题。
毕竟,安全是需要大家一起去努力的。

最后
Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。
本文来自:《Fixing security holes in other programs》

评论已关闭。