关于Linux包的源代码审查,我有一个问题。
我下载了一个Ubuntu包,比如samba,我想查看samba的源代码以查找安全漏洞。
我使用flaw finder来检查samba包的代码。
Flaw finder生成了一个带有许多漏洞的报告。
例如,strcpy存在一个漏洞,表示使用strlcpy或strncpy而不是strcpy,如下所示。
httpd-2.4.25/modules/aaa/mod_authn_socache.c:276:9: [4]
(buffer) strcpy: Does not check for buffer overflows when copying to destination.
Consider using strncpy or strlcpy (warning, strncpy is easily misused).
strcpy(new_context, r->server->server_hostname);strcpy函数是否不安全?如果它是不安全的,那么为什么Ubuntu的公共社区还没有修复这个弱点,而在他们的最新软件包中,使用开源工具是如此容易跟踪呢?strcpy函数或samba本身的代码,那么有哪些选项呢?发布于 2017-09-18 11:04:59
例如,有一个关于strcpy的漏洞。
“完美查找”不报告漏洞。引用对程序的描述的话:
..。检查C/C++源代码,并报告按风险级别排序的可能的安全缺陷(“缺陷”)。
因此,“完美查找器”没有发现漏洞,而是只显示了程序中看起来可能是个问题的部分。这包括使用经常以错误方式使用的函数。要解释输出,确定实际风险和解决潜在问题,需要对分析的程序有更深入的理解。
要回答你的具体问题:
为此,我使用了缺陷查找器来检查samba包的代码。httpd-2.4.25/modules/aaa/mod_authn_socache.c:276:9: ... 4. strcpy
看起来您已经分析了Apache服务器,而不是samba。
这里的重点是strcpy函数是否不安全?
当查看实际的上下文对编程有足够的理解时,它会在这个strcpy之前直接在行中分配足够的内存,也就是说,这并不是一个真正的问题。
如果我们想保护这个strcpy函数或samba本身的代码,那么有哪些选项呢?
这些选择是
发布于 2017-09-18 10:21:05
当使用strcpy函数时,它们有可能发生缓冲区溢出。但是,只有在使用不当时才会发生这种情况。对这一职能的每一次调用都需要在其本身的背景下加以考虑。您所使用的工具无法识别此上下文,因此只会为您提供使用不安全函数的一般警告。
这个特殊的例子可能是使用以前经过消毒的“server_hostname”,并且可以保证不会有缓冲区溢出。
如果您真的想要更改它,请考虑实现它的建议,但是要小心,因为strcpy和strlcpy的API是不同的。有关详细规范:https://www.sudo.ws/todd/papers/strlcpy.html,请参阅本文
只使用源检查工具作为指南。将其视为一个自动诊断,即工具只指向潜在故障的一般方向,您需要做腿的工作,并进一步诊断自己,以充分了解问题。
https://security.stackexchange.com/questions/169666
复制相似问题