中文

UNGOML:Go 语言中不安全用法的自动化分类

软件工程 2023-06-02 v1 密码学与安全

摘要

Go 编程语言提供了针对内存损坏的强保护。作为其保护机制的逃逸通道,它提供了 unsafe 包。先前的研究发现,该 unsafe 包在真实代码中被频繁用于多种目的,例如序列化或类型转换。由于这些原因多样,有可能对特定用法进行重构以避免潜在漏洞。然而,不安全用法的分类具有挑战性,且需要调用上下文及程序结构信息。本文提出首个 Go 语言中不安全用法的自动化分类器 UNGOML,用以识别 unsafe 包做了什么以及为何被使用。对于 UNGOML,我们基于手动标注数据集构建了四个定制深度学习分类器。我们将 Go 代码表示为增强的控制流图(CFG),并使用一个单顶点分类器与三个上下文感知分类器解决标签预测任务。所有三个上下文感知分类器在 WHAT 与 WHY 两个维度上的 top-1 准确率均超过 86%。此外,在集合值共形预测设定下,我们在两个维度上以平均标签集大小为 2 取得了超过 93% 的准确率。因此,UNGOML 可用于高效过滤不安全用法,适用于重构或安全审计等场景。UNGOML: https://github.com/stg-tud/ungoml 工件: https://dx.doi.org/10.6084/m9.figshare.22293052

关键词

引用

@article{arxiv.2306.00694,
  title  = {UNGOML: Automated Classification of unsafe Usages in Go},
  author = {Anna-Katharina Wickert and Clemens Damke and Lars Baumgärtner and Eyke Hüllermeier and Mira Mezini},
  journal= {arXiv preprint arXiv:2306.00694},
  year   = {2023}
}

备注

13 pages, accepted at the 2023 IEEE/ACM 20th International Conference on Mining Software Repositories (MSR 2023)