Open Malicious-Code Benchmark (OMCBench)
收藏资源简介:
OMCBench是一个用于评估恶意代码检测能力的基准测试套件。该基准测试包含一个标记的数据集,由800个Python和JavaScript包组成:每种语言包括400个良性包和400个恶意包。数据集提供了文件级的地面真值标签(file_labels.parquet),并用于比较不同恶意代码检测工具的性能。
OMCBench is a benchmark suite for evaluating malicious code detection capabilities. This benchmark includes an annotated dataset composed of 800 Python and JavaScript packages, with 400 benign packages and 400 malicious packages for each language. The dataset provides file-level ground-truth labels (file_labels.parquet) and is used to compare the performance of different malicious code detection tools.
数据集概述:Open Malicious-Code Benchmark (OMCBench)
OMCBench 是一个用于评估恶意代码检测能力的基准测试套件。它由一组标记好的 800 个 Python 和 JavaScript 软件包组成,每个语言各包含 400 个良性 和 400 个恶意 软件包。
该基准测试还发布了 MOLOT 系统卡,描述了其在恶意代码检测方面的进展。MOLOT 与三种开源工具进行了对比:OSSGadget BackdoorRules、bandit4mal 和 Semgrep。
核心性能指标
以下为各工具在软件包级别(400 个软件包/语言,良性与恶意各半)的表现:
Python 生态系统
| 工具 | 代码类型 | 精确率 | 召回率 | F1 分数 |
|---|---|---|---|---|
| MOLOT (ours) | 商业使用 | 0.896 | 0.865 | 0.880 |
| ossgadget | 开源 | 0.554 | 0.770 | 0.644 |
| bandit4mal | 开源 | 0.519 | 0.885 | 0.654 |
| semgrep | 开源 | 0.557 | 0.685 | 0.614 |
JavaScript 生态系统
| 工具 | 代码类型 | 精确率 | 召回率 | F1 分数 |
|---|---|---|---|---|
| MOLOT (ours) | 商业使用 | 0.912 | 0.885 | 0.898 |
| ossgadget | 开源 | 0.671 | 0.805 | 0.732 |
| semgrep | 开源 | 0.746 | 0.645 | 0.692 |
数据集构成
- 来源:良性软件包从 PyPI 和 npm 下载量最高的包中采样,并限制为宽松许可证(如 MIT、BSD、Apache-2.0 等)。恶意软件包来自公开的恶意软件源。
- 标签:每个软件包有真值标签,此外还提供了文件级别的标签(
data/file_labels.parquet)。 - 规模:总计 800 个包,每个生态系统(Python 和 JavaScript)各 200 个良性 + 200 个恶意。
仓库布局
| 路径 | 内容 |
|---|---|
benchmark/ |
基准测试代码:工具运行器、输出解析器、指标计算、命令行接口 |
data/ |
参考数据(file_labels.parquet — 文件级真值) |
results/ |
已发布的基准测试结果 |
packages/ |
800 个软件包存档 |
tests/ |
单元测试 |
安装与使用
-
环境要求:Python >= 3.11
-
安装命令: bash pip install -e .
-
外部工具:扫描工具需要单独安装,包括:Application Inspector CLI (1.9.55)、OSSGadget BackdoorRules、bandit4mal、Semgrep (1.162.0) 和 Apiiro malicious-code-ruleset。
-
主要命令:
python -m benchmark run— 运行完整的基准测试python -m benchmark recalculate— 从保存的原始输出重新计算指标python -m benchmark recompute-ci— 计算自助法置信区间
结果文件
results/ 目录包含已发布的基准测试输出:
| 文件 | 内容 |
|---|---|
manifest.csv |
800 个测试包的清单 |
predictions.parquet |
每个工具在包和文件级别的预测结果 |
metrics.csv |
精确率、召回率、F1 分数、ROC-AUC 指标 |
metrics_ci.csv |
包含自助法置信区间的指标 |
注意事项与局限
- bandit4mal 仅支持 Python 软件包。
- Semgrep 在约 10 个大型良性软件包上可能超时(默认 600 秒),这会在
as_benign模式下略微提高其精确率。 - 错误处理:
metrics.csv中报告了两种模式:as_benign(将工具错误视为良性预测)和exclude(排除出错包)。 - 基准测试中的恶意软件包包含真实的恶意负载,必须在隔离环境中处理,切勿安装或执行。




