如何解决为什么缺陷查找程序报告fopen问题?
我正在使用FlawFinder查找一段C代码中的潜在漏洞。
在分析中,该工具报告了此问题:
file.c:54: [2] (misc) fopen:
Check when opening files - can an attacker redirect it (via symlinks),force the opening of special file type (e.g.,device files),move things
around to create a race condition,control its ancestors,or change its
contents? (CWE-362).
相关的代码是这样的:
FILE *aFile = fopen("/tmp/tmpfile","w");
尽管我知道并非所有报告的问题都是错误或漏洞,但我想了解为什么会发生这种情况以及如何解决该问题。我尝试在网络上搜索,但发现的所有内容都是关于竞赛情况的,而且我不明白为什么这段代码可能导致竞赛情况。
而且,我可以使用替代功能代替fopen
吗?
解决方法
正如它所说,从理论上讲,如果您在恒定位置使用文件,则可能会劫持该文件并使用您的exe权限访问他无法访问的内容。不会说这是一个很大的风险,因为它假设攻击者已经对您的系统进行了一定程度的控制,但是,是的,这很可能是一个漏洞。
解决方案:如果只需要一个临时文件,请使用tmpfile。操作系统级别支持临时文件,在打开之前和关闭之后它们将不存在,您无法真正重定向它们。
FILE *aFile = tmpfile();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。