问题描述
我试图在我从 LGTM (GNU coreutils) 下载的代码存储库中全局跟踪污点,但 CodeQL 似乎也考虑调用 libc 'tainted',而它们实际上并没有引入任何污点。考虑以下示例:
size_t fread(void *ptr,size_t size,size_t nmemb,FILE *stream);
int bytes = fread(some_array,sizeof(*some_array),sizeof(some_array),some_fptr);
如果 some_array
或 some_fptr
被污染,字节现在也会被 CodeQL 视为被污染。我怀疑这是为了安全起见(而不是高估污点而不是低估)。
编辑:显然外部调用被认为默认不会引入污点,但对于常见的 API,如 libc,根据文档制作了关于污点跟踪的模型。然而,在这种情况下,它似乎有点错误,但它们在不断发展。
我将如何处理包括 f.e. CodeQL 保存的源数据库中的 glibc 源,以便查询可以更准确地确定这些“闭源”函数调用中的污点?
如果代码依赖于其他一些预编译库怎么办,我该如何让 CodeQL 可以使用它的源代码?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)