sungmoon2/HLF_Chaincode_VulnDetect_LocalLM
GitHub: sungmoon2/HLF_Chaincode_VulnDetect_LocalLM
利用本地部署的小型语言模型检测 Hyperledger Fabric Go 链码中的共识层非确定性漏洞,在保护源码隐私的前提下实现超越云端大模型和传统静态分析工具的检测准确率。
Stars: 0 | Forks: 0
# 使用本地 sLM 进行 HLF 链码漏洞检测
**基于本地小型语言模型的 Hyperledger Fabric 链码安全漏洞检测**
已被 **AMLDS 2026**(第二届先进机器学习与数据科学国际会议,日本大阪,2026年7月21-23日)**接收** | 论文 ID:S2700
[](LICENSE)
[](https://amlds.site)
## 概述
本仓库包含使用本地部署的小型语言模型检测 Hyperledger Fabric (HLF) Go 链码中**共识层非确定性漏洞**的实验成果。传统的静态分析工具(例如 Semgrep)无法检测导致背书策略不匹配等特定于 HLF 的语义漏洞。我们证明了在本地 GPU 上运行的 7B 参数模型能够达到与云端大型语言模型相当的检测准确率,同时保护了源代码隐私且 API 成本为零。
## 主要结果
| 模型 | 类型 | TPR (9个漏洞) | TNR (6个安全) | 平均时间/文件 |
|:------|:-----|:-------------|:-------------|:--------------|
| **Qwen2.5-Coder-7B** | 本地 (7B) | 9/9 (100%) | 6/6 (100%) | 3.94s |
| Llama-3.1-8B | 本地 (8B) | 9/9 (100%) | 1/6 (17%) | 10.09s |
| Claude Haiku 4.5 | 云端 | 9/9 (100%) | 5/6 (83%) | 12.89s |
| Claude Opus 4.5 | 云端 | 9/9 (100%) | 5/6 (83%) | 22.49s |
| Gemini 2.5 Pro | 云端 | 9/9 (100%) | 0/6 (0%) | 19.63s |
| Semgrep 1.151.0 | 静态 | 0/9 (0%) | — | — |
*零样本提示,原始数据集,分类器 v2。完整结果请参见 `01_contexts/current/WORK_STATUS.md`。*
## 仓库结构
```
.
├── scripts/ # 18 Python experiment scripts
│ ├── 01_download_models.py # Model download (HuggingFace)
│ ├── 02_run_audit_v3.py # Main audit: multi-prompt, multi-model
│ ├── 03_obfuscate_dataset.py # Identifier obfuscation (459 replacements)
│ ├── 04_run_claude_audit.py # Claude API audit
│ ├── 05_run_traditional_tools.py # Semgrep baseline
│ ├── 06_run_gemini_audit.py # Gemini API audit
│ ├── 08_run_golisa_validation.py # GoLiSA 657-file external validation
│ ├── 09_reclassify_and_ablation.py # Classifier v2 + ablation studies
│ ├── 10_run_json_mode_microbenchmark.py # JSON mode evaluation
│ ├── 11~13_*.py # Cloud/Llama Running_Examples experiments
│ └── 14~17_*.py # Repeat + CoT experiments (1,800 runs)
│
├── 02_resources/
│ ├── dataset/ # 15 Go chaincodes (vuln 9 + safe 6)
│ ├── dataset_obfuscated/ # 15 obfuscated Go files
│ ├── models/ # .gguf files (excluded via .gitignore)
│ └── golisa_benchmark/ # 657 Go files from 326 GitHub repos
│ ├── Benchmark/ # Extracted .go files
│ └── api_research/ # GitHub/Zenodo API exploration data
│
├── 03_artifacts/
│ └── raw_results/ # CSV audit results + meta.json
│
├── 04_feedback/ # Issue tracking (23 issues)
│
├── 01_contexts/ # Session tracking, references
│
├── PROMPTS.md # All prompt templates (P1-P4) verbatim
├── CLASSIFIER.md # Classifier v1/v2/JSON logic + keyword lists
├── LABELING_CRITERIA.md # Ground truth labels + consensus-relevant definition
├── PIPELINE_WORKFLOW.md # Experiment pipeline description
├── requirements.txt # Python dependencies (version-pinned)
├── REPRODUCTION.md # Step-by-step reproduction guide
├── CITATION.cff # Citation metadata
├── LICENSE # MIT License
└── .gitignore # Excludes models (9GB), VM images (22GB)
```
## 可复现性
### 提示策略
四种提示策略记录在 [`PROMPTS.md`](PROMPTS.md) 中:
| 提示 | 描述 |
|:-------|:------------|
| P1: Zero-shot | 6个漏洞类别,结构化输出 |
| P2: Few-shot | P1 + 2个示例(易受攻击 vs. 安全的 `time.Now()` 用法) |
| P3: Chain-of-Thought | 6步推理:PutState 反向追踪 |
| P4: JSON 模式 | 包含 `is_vulnerable` 布尔值的结构化 JSON 输出 |
### 分类逻辑
三种分类器记录在 [`CLASSIFIER.md`](CLASSIFIER.md) 中:
| 分类器 | 核心特性 |
|:-----------|:------------|
| v1(原版) | 安全短语早期返回及矛盾检查 |
| v2(改进版) | 自相矛盾检测:结构化证据覆盖安全短语 |
| JSON 解析器 | 解析 `is_vulnerable` 字段,失败时回退到 v2 |
### 真实值与标注
标注标准记录在 [`LABELING_CRITERIA.md`](LABELING_CRITERIA.md) 中:
- 15个带有手动分配标签的微基准测试文件
- 5个具有已知漏洞类型的 GoLiSA Running_Examples
- 用于 Semgrep 发现分类的 12个与共识相关的关键词
## 硬件
| 组件 | 规格 |
|:----------|:-------------|
| GPU | NVIDIA GeForce RTX 3090 Ti (24564 MiB VRAM) |
| CUDA | 13.0 (V13.0.88) |
| Python | 3.11.9 |
| llama-cpp-python | 0.3.16 (CUDA 版本) |
| Semgrep | 1.151.0 |
## 模型(不包含在仓库中)
| 模型 | 文件 | 大小 | 来源 |
|:------|:-----|:-----|:-------|
| Qwen2.5-Coder-7B-Instruct | Q4_K_M.gguf | 4.4 GB | HuggingFace |
| Meta-Llama-3.1-8B-Instruct | Q4_K_M.gguf | 4.6 GB | HuggingFace |
可通过 `scripts/01_download_models.py` 下载。
## 复现
有关复现所有实验的分步指南,请参见 [`REPRODUCTION.md`](REPRODUCTION.md)。
## 引用
如果您使用了本代码或数据集,请引用:
```
@inproceedings{park2026local,
title={Local Small Language Models for Consensus-Layer Vulnerability Detection in Hyperledger Fabric Chaincode: A Qualitative Feasibility Study},
author={Park, Sungmoon and Jeong, Misook and Choi, Hoansuk and Yang, Jinhong},
booktitle={Proceedings of the 2nd International Conference on Advanced Machine Learning and Data Science (AMLDS 2026)},
year={2026},
publisher={IEEE},
address={Osaka, Japan}
}
```
## 许可证
本项目基于 [MIT 许可证](LICENSE) 授权。`02_resources/golisa_benchmark/` 中的 GoLiSA 基准测试文件源自 GoLiSA 项目(Olivieri 等人,ECOOP 2023),并保留其原始许可。
## 致谢
本工作得到了信息与通信技术规划与评估研究院 (IITP) 的资助(编号:IITP-2026-RS-2024-00436773)以及韩国产业技术振兴院 (KIAT) 的资助(编号:P0026190)的支持。
# HLF 链码漏洞检测(本地 sLM)
**基于本地小型语言模型的 Hyperledger Fabric 链码安全漏洞自动检测**
已被 **AMLDS 2026**(第二届先进机器学习与数据科学国际会议,日本大阪,2026年7月21-23日)**接收** | 论文 ID:S2700
## 概述
本仓库包含了使用本地小型语言模型检测 Hyperledger Fabric (HLF) Go 链码中**共识层非确定性漏洞**的实验成果。传统的静态分析工具(如 Semgrep)无法检测导致背书策略不匹配的 HLF 特有语义漏洞。本研究证实,70亿参数的本地模型在达到与云端大语言模型相当检测准确率的同时,具备保护源代码隐私及 API 零成本的优势。
## 主要结果
| 模型 | 类型 | TPR (9个漏洞) | TNR (6个安全) | 平均时间/文件 |
|:------|:-----|:-------------|:-------------|:--------------|
| **Qwen2.5-Coder-7B** | 本地 (7B) | 9/9 (100%) | 6/6 (100%) | 3.94秒 |
| Llama-3.1-8B | 本地 (8B) | 9/9 (100%) | 1/6 (17%) | 10.09秒 |
| Claude Haiku 4.5 | 云端 | 9/9 (100%) | 5/6 (83%) | 12.89秒 |
| Claude Opus 4.5 | 云端 | 9/9 (100%) | 5/6 (83%) | 22.49秒 |
| Gemini 2.5 Pro | 云端 | 9/9 (100%) | 0/6 (0%) | 19.63秒 |
| Semgrep 1.151.0 | 静态工具 | 0/9 (0%) | — | — |
*零样本提示,原始数据集,分类器 v2 标准。完整结果请参见 `01_contexts/current/WORK_STATUS.md`。*
## 仓库结构
```
.
├── scripts/ # 18개 Python 실험 스크립트
│ ├── 01_download_models.py # 모델 다운로드 (HuggingFace)
│ ├── 02_run_audit_v3.py # 메인 감사: 다중 프롬프트, 다중 모델
│ ├── 03_obfuscate_dataset.py # 식별자 난독화 (459개 치환)
│ ├── 04_run_claude_audit.py # Claude API 감사
│ ├── 05_run_traditional_tools.py # Semgrep 베이스라인
│ ├── 06_run_gemini_audit.py # Gemini API 감사
│ ├── 08_run_golisa_validation.py # GoLiSA 657개 파일 외부 검증
│ ├── 09_reclassify_and_ablation.py # Classifier v2 + 절제 연구
│ ├── 10_run_json_mode_microbenchmark.py # JSON 모드 평가
│ ├── 11~13_*.py # 클라우드/Llama Running_Examples 실험
│ └── 14~17_*.py # 반복 + CoT 실험 (1,800건)
│
├── 02_resources/
│ ├── dataset/ # 15개 Go 체인코드 (취약 9 + 안전 6)
│ ├── dataset_obfuscated/ # 15개 난독화 Go 파일
│ ├── models/ # .gguf 파일 (.gitignore로 제외)
│ └── golisa_benchmark/ # 326개 GitHub 저장소에서 추출한 657개 Go 파일
│ ├── Benchmark/ # 추출된 .go 파일
│ └── api_research/ # GitHub/Zenodo API 탐색 데이터
│
├── 03_artifacts/
│ └── raw_results/ # CSV 감사 결과 + meta.json
│
├── 04_feedback/ # 이슈 추적 (23개 안건)
│
├── 01_contexts/ # 세션 추적, 참고문헌
│
├── PROMPTS.md # 모든 프롬프트 템플릿 (P1-P4) 전문
├── CLASSIFIER.md # Classifier v1/v2/JSON 로직 + 키워드 리스트
├── LABELING_CRITERIA.md # Ground truth 라벨 + consensus-relevant 정의
├── PIPELINE_WORKFLOW.md # 실험 파이프라인 설명
├── requirements.txt # Python 의존성 (버전 고정)
├── REPRODUCTION.md # 단계별 재현 가이드
├── CITATION.cff # 인용 메타데이터
├── LICENSE # MIT 라이선스
└── .gitignore # 모델(9GB), VM 이미지(22GB) 제외
```
## 可复现性
### 提示策略
四种提示策略已在 [`PROMPTS.md`](PROMPTS.md) 中详细公开:
| 提示 | 描述 |
|:---------|:-----|
| P1: Zero-shot | 6个漏洞类别,结构化输出 |
| P2: Few-shot | P1 + 2个示例(易受攻击 vs. 安全的 `time.Now()` 用法) |
| P3: Chain-of-Thought | 6步推理:PutState 反向追踪 |
| P4: JSON 模式 | 包含 `is_vulnerable` 布尔值的结构化 JSON 输出 |
### 分类逻辑
三种分类器及其完整代码已在 [`CLASSIFIER.md`](CLASSIFIER.md) 中公开:
| 分类器 | 核心功能 |
|:-------|:---------|
| v1(原版) | 安全短语早期返回 + 矛盾检查 |
| v2(改进版) | 自相矛盾检测:结构化证据优先于安全短语 |
| JSON 解析器 | 解析 `is_vulnerable` 字段,失败时回退到 v2 |
### 真实值与标注
标注标准已在 [`LABELING_CRITERIA.md`](LABELING_CRITERIA.md) 中公开:
- 15个微基准测试文件的手动标注
- 5个 GoLiSA Running_Examples 的漏洞类型
- 12个与共识相关的关键词(用于 Semgrep 结果分类)
## 硬件
| 组件 | 规格 |
|:----------|:-----|
| GPU | NVIDIA GeForce RTX 3090 Ti (24564 MiB VRAM) |
| CUDA | 13.0 (V13.0.88) |
| Python | 3.11.9 |
| llama-cpp-python | 0.3.16 (CUDA 版本) |
| Semgrep | 1.151.0 |
## 模型(不包含在仓库中)
| 模型 | 文件 | 大小 | 来源 |
|:------|:-----|:-----|:-----|
| Qwen2.5-Coder-7B-Instruct | Q4_K_M.gguf | 4.4 GB | HuggingFace |
| Meta-Llama-3.1-8B-Instruct | Q4_K_M.gguf | 4.6 GB | HuggingFace |
可通过 `scripts/01_download_models.py` 下载。
## 复现
有关所有实验的分步复现指南,请参阅 [`REPRODUCTION.md`](REPRODUCTION.md)。
## 引用
如果您使用了本代码或数据集,请引用上方英文部分中的 BibTeX。
## 许可证
本项目基于 [MIT 许可证](LICENSE) 授权。`02_resources/golisa_benchmark/` 中的 GoLiSA 基准测试文件源自 GoLiSA 项目(Olivieri 等人,ECOOP 2023),并保留其原始许可。
## 致谢
本工作得到了信息通信规划评价院 (IITP) 支持项目(编号:IITP-2026-RS-2024-00436773)和韩国产业技术振兴院 (KIAT) 支持项目(编号:P0026190)的支持。
标签:AMLDS 2026, Apex, Chaincode安全, CISA项目, DLL 劫持, EVTX分析, Go语言, Hyperledger Fabric, Llama-3, Qwen2.5-Coder, sLM, Vectored Exception Handling, Web报告查看器, 云安全监控, 人工智能安全, 代码分析, 凭证管理, 区块链安全, 合规性, 大语言模型, 实时告警, 小语言模型, 数据科学, 日志审计, 智能合约安全, 本地部署, 机器学习, 程序破解, 网络安全, 网络安全, 论文复现, 资源验证, 逆向工具, 隐私保护, 隐私保护, 零样本提示, 静态分析, 非确定性漏洞