跳转至

HiGraph: A Large-Scale Hierarchical Graph Dataset for Malware Analysis

会议: NeurIPS 2026
arXiv: 2509.02113
代码: https://github.com/hzcheney/HiGraph
领域: 图学习 / Graph Learning
关键词: 分层图学习, 恶意软件分析, 控制流图, 函数调用图, 概念漂移

一句话总结

本文构建了首个针对移动端恶意软件分析的大规模分层图数据集 HiGraph(包含 49.9 万个全局函数调用图与逾 2 亿个嵌套局部控制流图),并通过十年跨度的时空评估证实:过程内控制流圈复杂度是抵御概念漂移的关键判别信号。

研究背景与动机

基于图神经网络(GNN)的恶意软件检测已成为网络安全领域对抗代码混淆与对抗样本的重要技术路线。然而,现有用于图学习的基准数据集(如 MalNet 等)普遍存在关键缺陷:它们将复杂的软件程序过度简化为单一层级的“平坦图”(flat graph),通常仅保留顶层的函数调用图(FCG)或粗粒度的依赖网络。这种表征抽象割裂了程序深层语义:它完全忽略了函数内部底层的细粒度控制逻辑与高层函数交互之间的嵌套依赖,导致模型在面对浅层代码重构、控制流平坦化或混淆变种时脆弱不堪。

更严峻的挑战在于安全数据集中普遍存在的“时空偏置”(spatio-temporal bias)。许多过往数据集缺乏严格的时间戳约束,容易引发未来样本泄漏;在空间分布上,人为提高恶意样本占比使得模型在真实世界极不平衡(约 1:9)的落地场景中虚高过拟合。与此同时,恶意软件家族的表面代码虽然高速演化,但其核心攻击逻辑具有高度稳定性(例如勒索软件的核心流程始终是“文件遍历 → 加密 → 勒索通知”,仅加密算法由异或演变为 AES/RSA)。要捕捉这种结构不变量,迫切需要一种同时具备全局调用拓扑与局部过程流的多层级数据载体。

为此,本研究打破了平坦图建模的局限,构建了首个真正意义上的大规模分层图恶意软件分析基准。核心 idea:通过构建跨越 10 年(2012–2022)、包含 49.9 万个全局函数调用图(FCG)及 2 亿余个局部控制流图(CFG)的双层嵌套图数据集 HiGraph,证明恶意软件的核心区分性信号高度聚集于函数内部的圈复杂度(Cohen's \(d=+0.48\)),并通过自底向上的分层 GNN 赋予模型显著超越平坦图架构与图 Transformer 的长周期抗概念漂移能力。

方法详解

整体框架

HiGraph 的构建与评估体系涵盖三个核心阶段:海量样本采集与可信标注、双层分层图(FCG-CFG)抽取与敏感行为剪枝、以及自底向上的层次图神经网络(Hi-GNN)建模。首先,从 AndroZoo 收集 2012 年至 2022 年间带有严格时间戳的 APK,通过 VirusTotal 严格筛选(\(\ge 15\) 款杀软报毒为恶意,0 报毒为良性,保持 1:9 的自然空间比率),并用 AVClass2 生成细粒度家族标签。接着,利用 Androguard 反编译并抽取每款应用的全局函数调用图(全局图 \(\mathcal{G}\))与每个本地函数的基本块级控制流图(局部图 \(G_f\)),同时提取 11 维字节码语义特征向量,并施加敏感 API 过滤以聚焦高风险交互。最后,利用层次编码器逐层聚合程序表征进行分类与纵向演化评测。

%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
    A["原始 APK 样本集<br/>AndroZoo 2012–2022 (49.9万)"] --> B["可信数据清洗与家族标注<br/>VT≥15 / AVClass2 标签映射"]
    B --> C["分层程序图解构与抽取"]
    C --> D["局部控制流图 (CFG) 构建<br/>基本块分割 + 11维字节码特征"]
    C --> E["全局函数调用图 (FCG) 构建<br/>过程间调用拓扑 + 敏感API剪枝"]
    D --> F["Hi-GNN 层次图聚合架构"]
    E --> F
    F --> G["时序鲁棒性评测<br/>IID / 短期 / 长期概念漂移基准"]

关键设计

1. 细粒度双层图解构与敏感 API 拓扑剪枝:聚焦高危过程间调用
传统方法将程序调用图视为无差别拓扑,引入大量冗余库函数调用噪声,掩盖了恶意行为模式。HiGraph 将程序抽象为双层嵌套图(Graph of Graphs, GoG):全局图 \(\mathcal{G} = (\mathcal{V}_{loc}, \mathcal{E})\) 建模自定义局部函数间的交互,每个局部函数节点 \(f \in \mathcal{V}_{loc}\) 内部嵌套一个由基本块构成的局部有向控制流图 \(G_f = (V_f, E_f)\)。为了从海量库调用中提炼安全核心,设计了涵盖 10 个敏感类别的 24 个敏感 API 匹配规则(涉及短信、网络连接、动态类加载、加密变换、文件 I/O、地理位置、设备管理、反射执行、电话状态、WebView 等)。只有至少一端触达敏感 API 的调用边才予以保留,大幅降低图规模的同时保留了高危恶意行为的拓扑上下文。

2. 字节码级 11 维基本块语义特征工程:屏蔽源语言演化干扰
Android 平台源码从 Java 快速演进至 Kotlin,源码层面的符号与语法特征容易因编译选项或语言变动失效。为了实现跨语言与混淆鲁棒的特征表示,HiGraph 直接针对 Dalvik 字节码层面的基本块进行特征工程,为每个基本块节点提取 11 维数值向量。该特征向量融合了三重视角:(1)指令语义特征(统计算术、逻辑、调用等 7 类字节码操作的操作码频次);(2)内容度量特征(基本块内的总指令数以及是否包含常量字面量);(3)局部拓扑特征(该基本块在 CFG 内的出度)。由于完全立足于底层操作码序列与结构,该特征空间在长达十年的代码生态变迁中保持了高度的语义稳定性。

3. 层次聚合神经网络(Hi-GNN):自底向上的跨尺度归纳偏置
为了充分发挥 HiGraph 的双层嵌套结构,本文设计了双编码器分层网络 Hi-GNN。底层采用两层 GCN 编码器对各函数的局部 CFG 进行消息传递,聚合基本块的 11 维特征并进行全局平均池化,生成表征该函数内部逻辑的局部嵌入向量 \(h_f \in \mathbb{R}^{d}\)。顶层将该嵌入与函数出入度特征拼接后赋予 FCG 对应的函数节点,再通过两层顶层 GCN 进行过程间调用关系的消息传播与整图池化,最终通过全连接层与 LogSoftmax 输出判定。相比于平坦图基线仅使用启发式池化(如对函数简单取特征均值),Hi-GNN 显式建模了“语句级逻辑 → 函数级行为 → 应用级拓扑”的抽象路径,使得模型能够感知复杂的控制流平坦化混淆。

4. 纵向长周期概念漂移评测协议:十年真实时空基准
针对传统网络安全模型在离线静态划分上虚高、在线部署后迅速崩溃的痛点,HiGraph 建立了贯穿 2012–2022 年度的概念漂移评测体系。评测分为三大基准:(1)静态独立同分布(IID)基准(基于 2012 年 5.3 万样本做 70/15/15 划分);(2)短期漂移(以 2012 年训练,逐月测试 2013 年);(3)长期漂移(以 2012 年为训练锚点,连续测试 2013–2016 年共 48 个月,以及以 2016 年为训练锚点测试 2017–2022 年共 70 个月,涵盖逾 43.3 万个真实测试样本)。评测采用时间下面积指标 \(\mathrm{AUT}(f, N) = \frac{1}{N-1}\sum_{k=0}^{N-1}\frac{f(k+1)+f(k)}{2}\),能够精确刻画模型在时间推移中的性能退化轨迹。

一个完整示例

以恶意木马应用中的短信拦截与泄露模块为例: 1. 反编译与基本块切分:应用反编译后识别出本地函数 sendPayload()。该函数被切分为 6 个基本块(Entry、解密分支、权限检查、网络封装、SmsManager 发送、Exit)。 2. CFG 抽取与 11 维特征编码:每个基本块被转化为 CFG 节点。其中解密分支基本块包含 14 条指令、多次逻辑运算与常量装载,其特征向量被编码为 [0, 3, 2, 0, ..., 14, 1, 2]。 3. 敏感边关联与 FCG 构建:在 FCG 层面,sendPayload() 调用了系统敏感 API android/telephony/SmsManager,该调用匹配敏感过滤规则,保留在全局 FCG 拓扑中。 4. Hi-GNN 分层推断:底层 GCN 遍历 sendPayload() 的 CFG,提炼出其高度复杂的圈复杂度与异常控制分支模式,生成紧凑的函数嵌入;顶层 GCN 进而捕捉到该函数与主广播接收器的调用拓扑,最终判定该样本为恶意短信木马。

损失函数 / 训练策略

模型采用标准交叉熵损失函数(Cross-Entropy Loss)进行二分类优化: $\(\mathcal{L} = -\frac{1}{|\mathcal{B}|} \sum_{i \in \mathcal{B}} \left[ y_i \log \hat{y}_i + (1 - y_i) \log (1 - \hat{y}_i) \right]\)$ 其中 \(\mathcal{B}\) 表示训练批次样本集,\(y_i \in \{0, 1\}\) 为真实标签,\(\hat{y}_i\) 为预测的恶意概率。优化器选用 Adam,学习率在 \(\{0.001, 0.01\}\) 范围内网格搜索,隐藏层维度严格固定为 128 以对齐各模型容量。训练最大轮数为 200 个 Epoch,并以验证集上的 Macro F1 为指标实施早停机制(Early Stopping),以避免在高度不平衡的分布下过拟合于多数良性类。

实验关键数据

主实验

在统一隐藏维度(128)与相同 11 维输入特征设定下,对比经典单层 GNN 基线、前沿图 Transformer(GraphGPS)以及层次图模型 Hi-GNN 在 2012 静态 IID 划分及跨年度时间漂移上的表现(均值 \(\pm\) 标准差):

模型 静态 IID (2012) PR-AUC 静态 IID (2012) Macro F1 短期 (2012→2013) AUT(PR-AUC) 短期 (2012→2013) AUT(F1) 长期 (2012→2016) AUT(PR-AUC) 长期 (2012→2016) AUT(F1)
GCN \(0.627 \pm 0.025\) \(0.640 \pm 0.022\) \(0.516 \pm 0.015\) \(0.604 \pm 0.021\) \(0.489 \pm 0.018\) \(0.572 \pm 0.024\)
GAT \(0.641 \pm 0.012\) \(0.719 \pm 0.021\) \(0.513 \pm 0.012\) \(0.691 \pm 0.018\) \(0.483 \pm 0.014\) \(0.651 \pm 0.020\)
GIN \(0.615 \pm 0.035\) \(0.690 \pm 0.021\) \(0.550 \pm 0.019\) \(0.743 \pm 0.023\) \(\mathbf{0.520 \pm 0.021}\) \(0.703 \pm 0.025\)
GraphSAGE \(0.619 \pm 0.014\) \(0.678 \pm 0.017\) \(0.518 \pm 0.014\) \(0.612 \pm 0.019\) \(0.489 \pm 0.016\) \(0.574 \pm 0.021\)
GraphGPS \(0.774 \pm 0.064\) \(0.743 \pm 0.043\) \(\mathbf{0.673 \pm 0.100}\) \(0.689 \pm 0.037\) \(0.462 \pm 0.192\) \(0.582 \pm 0.092\)
Hi-GNN \(\mathbf{0.785 \pm 0.012}\) \(\mathbf{0.761 \pm 0.028}\) \(0.564 \pm 0.011\) \(\mathbf{0.755 \pm 0.017}\) \(0.498 \pm 0.026\) \(\mathbf{0.715 \pm 0.019}\)

结构区分性与概念漂移统计实验

为了定位恶意软件与良性软件区分性信号的层级归属,作者对成功抽取非空 CFG 的 50,252 款恶意应用与 442,225 款良性应用进行了 Welch's t 检验与 Cohen's \(d\) 效应量统计:

图层级 结构度量指标 恶意软件 (均值 \(\pm\) 标准差) 良性软件 (均值 \(\pm\) 标准差) \(p\) 检验值 Cohen's \(d\) 效应量 实际效应解释
CFG (局部) 圈复杂度 (Cyclomatic Complexity) \(\mathbf{5.20 \pm 2.67}\) \(\mathbf{4.09 \pm 1.92}\) \(<10^{-3}\) \(\mathbf{+0.48}\) 中等效应 (判别信号主力)
CFG (局部) 最大节点度 (Max Degree) \(1.56 \pm 0.21\) \(1.57 \pm 0.27\) \(<10^{-56}\) \(-0.07\) 极微弱效应
FCG (全局) 平均入度 (Avg. In-Degree) \(1.47 \pm 0.47\) \(1.48 \pm 0.32\) \(0.013\) \(-0.01\) 可忽略效应
FCG (全局) 最大节点度 (Max Degree) – – 不显著 – 无统计分离度

在跨锚点纵向追踪中,GraphGPS 在 Train 2012 锚点(测试 2013–2016)与 Train 2016 锚点(测试 2017–2022)的年化均值显示:Train 2012 的 Macro F1 从 2013 年的 \(0.69 \pm 0.05\) 骤降至 2016 年的 \(0.50 \pm 0.01\);而 Train 2016 锚点在 2017–2019 年间稳定维持在 \(0.81 \sim 0.83\),但在 2020 年后受生态演化与样本收敛影响出现明显漂移,印证了该基准能有效捕捉非单调真实漂移。

关键发现

  • 判别信号深锁于微观圈复杂度:统计检验表明,宏观 FCG 拓扑指标在两类软件间几乎没有实际效应量差异(\(|d| \le 0.01\)),唯一的关键分离度集中在局部 CFG 的圈复杂度(\(d = +0.48\))。这直接否定了“仅凭宏观调用图即可精准检测”的传统假设。
  • 层次归纳偏置击败全局自注意力:现代图 Transformer(GraphGPS)凭借自注意力机制虽然在静态 IID 及短期 PR-AUC 上表现抢眼,但在四年长期漂移中其 AUT(F1) 仅为 \(0.582\),大幅落后于 Hi-GNN 的 \(0.715\)(差距达 0.133)。这表明缺乏显式层次约束的平坦注意力机制更容易过拟合于短期的表面特征变动。
  • 统计特征易受时间侵蚀:在基于 6 项图汇总统计特征的 XGBoost 实验中,尽管静态均衡集 F1 可达 0.829,但长期时间测试 AUT(F1) 迅速退化至 0.585,证明纯手工统计量无法抵抗长周期的概念漂移。

亮点与洞察

  • 建立最大规模分层图基准:HiGraph 提供了近 50 万 FCG 与 2.01 亿嵌套 CFG,规模不仅在网络安全领域独树一帜,在整个图学习领域亦远超分子化学与引文网络(如 Arxiv 数据集全局节点均值仅 30.9,而 HiGraph 达 741.1)。
  • 发现良恶性演化的结构性背离:长期时空分析揭示出极富洞察力的现象——良性应用的 FCG 随年代剧烈膨胀且日益稀疏(向模块化发展),而恶意软件的 FCG 倾向于紧凑且维持高局部密度,其核心高 PageRank 函数与高圈复杂度高度正相关(\(R=0.48\)),呈现“核心枢纽即混淆中枢”的攻击特征。
  • 方法设计可泛化至代码智能与跨平台安全:该双层嵌套抽取与字节码表征方案本质上是平台中立的,可无缝迁移至 Windows PE(结合 x86/x64 CFG)及 Linux ELF 固件漏洞检测中。

局限与展望

  • 近端年份样本预算限制:由于坚持严格的 VirusTotal \(\ge 15\) 引擎检出标准,2022 年被确认的恶意样本仅 67 个,导致末期漂移度量存在一定的样本统计方差。
  • 仅限静态分析表征:当前仅抽取反编译静态图,未结合沙箱动态调用追踪与网络流量,对利用高级反射及纯运行时动态解密的样本可能存在检测盲区。
  • 跨平台扩展空间:目前数据集仅覆盖 Android 生态,未来可利用 Ghidra 或 IDA Pro 将该分层抽取框架推广至二进制可执行文件。

相关工作与启发

  • vs MalNet (Freitas et al., 2020): MalNet 虽包含百万级图,但仅为单一层级的“平坦图”,缺失函数内部控制流;HiGraph 构建了双层嵌套图,将建模粒度从调用级深化到基本块级。
  • vs APIGraph (Zhang et al., 2020): APIGraph 聚焦于 API 关系与语义扩充,但缺乏过程内指令流拓扑;HiGraph 同时保留了 10 个维度的敏感 API 剪枝边与底层 11 维字节码语义向量。
  • vs GraphGPS (Rampášek et al., 2022): GraphGPS 代表顶尖的单图 Transformer,但在长周期概念漂移测试中表现出对累积漂移的敏感性;Hi-GNN 证明在安全任务中,层次化物理归纳偏置比纯参数量与全局自注意力更具泛化韧性。

评分

  • 新颖性: ⭐⭐⭐⭐⭐ (首个千万级过程流嵌套的大规模分层恶意软件图数据集与交互平台)
  • 实验充分度: ⭐⭐⭐⭐⭐ (覆盖十年 43.3 万测试样本的纵向基准,多维度严格假设检验)
  • 写作质量: ⭐⭐⭐⭐⭐ (逻辑严谨,动机与实验结论高度自洽闭环)
  • 价值: ⭐⭐⭐⭐⭐ (为安全图学习提供了迫切亟需的权威标准化基准,数据与代码完全开源)