我试图在我从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视为污染。我怀疑这是出于安全的考虑(宁可高估污点,也不要低估)。
编辑:显然,外部调用在默认情况下不被认为是引入了污染,但是对于常见的API(如libc ),模型是基于文档进行污染跟踪的。然而,在这种情况下,它似乎搞错了,但它们在不断发展。
我该怎么做才能包括f.e。CodeQL保存的源数据库中的glibc源,以便查询能够更准确地确定这些“封闭源”函数调用中的污染?
如果代码依赖于其他预编译库,那么如何将源代码提供给CodeQL呢?
发布于 2021-02-18 09:54:43
在这里行动。除了源代码之外,似乎没有太多关于它的文档,但是我在github/securitylab上发布了同样的问题,并得到了这里的答案。
https://stackoverflow.com/questions/66245893
复制相似问题