这个挑战出现在专用于C++的内部别名上。它是由微软的开发者Mike Vine发布的,他同意让我们与强大的Visual C++博客读者分享它:
这个挑战来自于我对一个简单的bug的思考,这个bug可能会变成一个安全漏洞,所以我想我应该试一试,尝试编写一段看似无辜但实际上很危险的貌似可以否认的代码。我设法更进一步,并产生了一些东西,虽然不太可能,但可能来自非恶意但草率的编码。
因此,您的挑战是——如果您选择接受它——分析示例代码文件“main.c”( 附属的 )并试图找出(相当明显的)安全失误和“意外”的错误,导致安全失误是可利用的。
试着在运行它之前先对它进行分析,就像在代码评审中一样,试着找出问题所在。由于代码可能来自一个草率的程序员,所以一切都和它看起来的差不多——没有错名的函数或类似的蹩脚的东西。
该安全漏洞来自它试图加载的文件,我们假设该文件是由攻击者控制的(例如,在控制台的CD上,或从internet下载的浏览器)。
我认为有经验的开发人员和安全人员应该能够很快得到这个。在这种情况下,试着分析如何才能真正利用这个问题——即 附属的 “Background.dat”是一个利用漏洞的例子(它很好,可以尝试,但是先保存您的工作!)。看看你能不能自己想出一个更好的方法,或者想出一些更有趣的/更小的/等等。我真的对这里可能发生的事情很感兴趣!
运行代码 ,创建一个新的win32控制台应用程序并添加代码,并确保在运行它时使用exe旁边的“Background.dat”[如果在VS调试器下运行,则在工作目录中]
您的提交过程是否允许此代码通过?您的编码标准是否禁止此代码的危险部分?这个代码能通过你团队的代码审查吗?你的自动CR工具有没有发现可疑的东西?
给我发封信 电子邮件 如果你有答案和/或一个有趣的漏洞,我会在几天后回复你最好的答案。
谢谢,祝你好运,
迈克
我们的读者是最优秀的开发人员之一,所以当你找到答案时,请在本周末之前将其通过电子邮件发送给Mike。在接下来的几周内寻找更新。