首页 > 解决方案 > 如何将库/依赖项的额外源代码添加到 CodeQL 数据库?

问题描述

我试图在我从 LGTM (GNU coreutils) 下载的代码存储库中全局跟踪污点,但 CodeQL 似乎也认为对 libc 的调用是“污点”,而它们实际上并没有引入任何污点。考虑以下示例:

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 也会认为字节被污染。我怀疑这是为了安全起见(而不是高估污染而不是低估)。

编辑:显然,默认情况下,外部调用被认为不会引入污点,但对于 libc 等常见 API,模型是根据文档制作关于污点跟踪的。然而,在这种情况下,它似乎有点错误,但它们正在不断发展。

我将如何在 CodeQL 保留的源数据库中包含 glibc 源,以便查询可以更准确地确定这些“闭源”函数调用中的污点?

如果代码依赖于其他一些预编译库怎么办,我如何使 CodeQL 可以使用它的源代码?

标签: static-analysisdynamic-librarytaintcodeql

解决方案


在这里。除了源代码之外,似乎没有很多关于它的文档,但我在 github/securitylab repo 上发布了相同的问题并在这里得到了答案。


推荐阅读