static-analysis - 如何将库/依赖项的额外源代码添加到 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 可以使用它的源代码?
解决方案
在这里。除了源代码之外,似乎没有很多关于它的文档,但我在 github/securitylab repo 上发布了相同的问题并在这里得到了答案。
推荐阅读
- python - 将 CSV 转换为 COCO JSON 格式用于边界框标注
- dart - ListView - 卡片(颤动布局)
- python - kivy-ios 使用的枕头在 X-Code 构建期间显示与小 CMS 相关的“未定义符号”错误
- c# - C# 连接和读取智能卡 ACR1281U-C1
- java - obj2=obj1.clone() 对象和 obj1=obj2 有什么区别?
- javascript - 如何让 Chrome 在没有 jQuery 的情况下触发脚本标签上的加载/加载事件
- laravel - 运行 laravel 调度程序的命令时,Windows 任务调度程序上次运行返回 0xff
- html - 如何在按下按钮时开始下载外部图像(AWS 签名 URL)
- firebase - 当我尝试遵循这个 Flutter Firebase 教程时,我得到一个 [] is not defined for Object error in dart?
- angular - 即使我们没有配置,API 调用也会通过 Service Worker 发生(非缓存 url)