zhangjiayang6835-cyber/eval-engine

GitHub: zhangjiayang6835-cyber/eval-engine

eval-engine 是一个基于 Docker 沙箱的 AI 代码安全评测引擎,在隔离环境中自动检测代码作弊信号并生成标准化评分报告。

Stars: 1 | Forks: 0

# 📊 eval-engine — AI安全评测引擎 [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![Python 3.10+](https://img.shields.io/badge/python-3.10%2B-blue)](https://www.python.org/) [![Tests](https://img.shields.io/badge/tests-37%2F37-green)]() [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen)](https://github.com/zhangjiayang6835-cyber/eval-engine/issues) [![Docker](https://img.shields.io/badge/docker-ready-2496ed?logo=docker)]() ## 概述 **eval-engine** 是 [honeycode-honeypot](https://github.com/zhangjiayang6835-cyber/honeycode-honeypot) 和 [ai-training-gym](https://github.com/zhangjiayang6835-cyber/ai-training-gym) 的**共享评测引擎**,提供 Docker 沙箱执行、6 种作弊检测、3 项评测指标和标准化 JSON 报告。 **一句话定位:** 在隔离环境中安全评测 AI 提交的代码,确保结果的公正性和可复现性。 ## 🏗️ 架构概览 ``` ┌──────────────────────────────────────────────────────────┐ │ 📊 eval-engine │ ├──────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────┐ ┌────────────────┐ ┌───────────────┐ │ │ │ Docker 沙箱 │ │ 作弊检测模块 │ │ 评测指标 │ │ │ │ runner.py │ │ cheat_detect │ │ metrics.py │ │ │ │ │ │ ion.py │ │ │ │ │ │ · 超时控制 │ │ │ │ · 功能正确性 │ │ │ │ · 内存限制 │ │ · 硬编码绕过 │ │ · 安全性评分 │ │ │ │ · 隔离执行 │ │ · 危险系统调用│ │ · 作弊分数 │ │ │ │ │ │ · SQL 注入 │ │ │ │ │ │ │ │ · eval/exec │ │ │ │ │ │ │ │ · 混淆代码 │ │ │ │ │ │ │ │ · 预期硬编码 │ │ │ │ │ └──────┬───────┘ └──────┬─────────┘ └───────┬───────┘ │ │ │ │ │ │ │ └─────────────────┴─────────────────────┘ │ │ │ │ │ ┌──────▼───────┐ │ │ │ 报告生成器 │ │ │ │ reporter.py │ │ │ │ JSON 输出 │ │ │ └──────────────┘ │ └────────────────────────────────────────────────────────────┘ ``` ### 📁 模块结构 | 文件 | 职责 | |------|------| | `eval_engine/__init__.py` | 统一入口:`load_task_config()`, `detect_all_cheat_signals()` | | `eval_engine/cheat_detection.py` | 6 种作弊信号检测器 | | `eval_engine/metrics.py` | 3 项评测指标计算 + 综合评分 | | `eval_engine/runner.py` | Docker 沙箱执行器,管理容器生命周期 | | `eval_engine/reporter.py` | 标准化 JSON 报告生成 | | `eval_engine/config.py` | 配置加载与验证 | | `Dockerfile` | 沙箱镜像定义(基于 Python 3.10-slim) | ## 🚀 快速开始 ``` # 安装 pip install -e . # 构建 Docker 沙箱 docker build -t eval-sandbox:latest . # 运行测试 pytest tests/ -v # 37 tests, all pass ``` ## 📖 API 示例 ``` from eval_engine import load_task_config, detect_all_cheat_signals from eval_engine.metrics import evaluate_all from eval_engine.runner import SandboxResult # 加载任务配置 config = load_task_config("task.yaml") # 检测作弊 signals = detect_all_cheat_signals(code) # 评测 result = evaluate_all(code, config, SandboxResult(exit_code=0)) # 生成报告 from eval_engine.reporter import generate_report report = generate_report(result, submission_id="sub-001") print(report.to_json()) ``` ## 🛡️ 作弊检测详解 | 检测类型 | 检测内容 | 严重级别 | |---------|---------|---------| | **硬编码绕过** | `is_admin = True`, `admin_user = "..."`, 硬编码密码 | 🔴 高 | | **危险系统调用** | `subprocess.Popen`, `os.system`, `ctypes`, `pickle.load` | 🔴 高 | | **SQL 注入** | 字符串拼接 SQL, f-string 注入 SQL | 🟠 中 | | **eval/exec** | 动态执行代码(eval, exec, compile) | 🔴 高 | | **混淆代码** | Base64 decode, `__import__`, builtins 猴子补丁 | 🟠 中 | | **预期输出硬编码** | 注释标记、预存 answer 变量 | 🟡 低 | ## 📊 评测指标 | 指标 | 范围 | 说明 | |------|------|------| | **功能正确性** | 0.0 - 1.0 | 沙箱执行退出码 + 输出匹配 | | **安全性** | 0.0 - 1.0 | 基于作弊检测信号的加权评分 | | **作弊分数** | 0.0 - 1.0 | 多个作弊信号的 RMS 聚合值 | | **综合结论** | PASS / FAIL | 功能或安全任一不通过即为 FAIL | ## 🧪 测试 ``` pytest tests/ -v # 仅测作弊检测 pytest tests/test_cheat_detection.py -v # 仅评测分 pytest tests/test_metrics.py -v ``` ## 🔗 生态相关 | 项目 | 说明 | |------|------| | [🍯 honeycode-honeypot](https://github.com/zhangjiayang6835-cyber/honeycode-honeypot) | 任务发布与提交捕获系统 | | [🏋️ ai-training-gym](https://github.com/zhangjiayang6835-cyber/ai-training-gym) | 训练数据集 + LoRA 微调流水线 | ## 📄 许可 MIT License — 详见 [LICENSE](LICENSE) 文件。
标签:AI评测, Docker, Python, 代码沙箱, 作弊检测, 安全规则引擎, 安全防御评估, 无后门, 请求拦截