Commit Graph

7 Commits

Author SHA1 Message Date
1079ca16de fix: 空文件 verdict error→pass
console.py upload_multiple_files L1278-1291:
  空文件被硬编码成 verdict='error' ok=False
  根因: 把'没内容'当成'检测异常'
  修复: 空文件是合法文件, 改成 verdict='pass' ok=True reason='空文件,无风险'
2026-10-29 17:33:19 +08:00
c0cb292350 fix: 测试靶场只展示 index.json 登记的样本 + 清 4 个临时调试文件
问题:
  控制台测试靶场页面样本数: 目录 172 个 vs index.json 168 条
  差了 4 个是 YARA 调试时创建的临时文件 (L4-005_hotreload.txt 等)
  这些临时文件没进 index.json → meta_map 查不到 → category='未知' case_id='—'

修复:
  1) console.py test_center_page:
     samples_list 从遍历目录 (iterdir) 改成只从 index.json 来
     每个样本必须 index.json 有登记 + 磁盘上确实存在
     以后目录里即使有临时文件也不会混入靶场列表
  2) 清理 4 个重复临时调试文件:
     L4-005_hotreload.txt      → index.json 正式: L4-005_005_sample.txt
     L4-007_meta_rule.txt       → index.json 正式: L4-007_meta_rule_match.txt
     L4-010_regex_pattern.txt   → index.json 正式: L4-010_010_sample.txt
     L4-012_size_condition.txt  → index.json 正式: L4-012_size_condition.bin

控制台页面现在: 168 条, 全部有 case_id 和 category, 无 '未知' 和 '—'
2026-10-29 17:11:51 +08:00
1222238bf3 fix: 控制台隐藏内部测试 channel + DB 清理
问题:
  任务历史 / Dashboard 全是对账脚本/诊断脚本灌进 DB 的内部测试记录
  (test_center/v/verify/diag/debug/final/... 共 4624 条)
  用户误以为测试靶场页面在自动触发批量扫描

根因:
  scanner.scan_file() 内部无条件 persist_to_db()
  控制台页面查询完全没有 channel 过滤 — 直接 SELECT * FROM scan_tasks

修复:
  1) 代码层: INTERNAL_TEST_CHANNELS frozenset (19 个内部 channel 黑名单)
     - dashboard 6 个查询全加 .filter(ScanTask.channel.notin_(...))
     - tasks_page 2 个查询全加 .filter(...)
  2) 数据层: 删除内部测试 channel 记录
     - ScanTask 4624 条 (test_center 1929 / v 688 / verify 501 / ...)
     - ScanFinding 9101 条 (外键先删)
     - 保留生产: console_upload 3465 + duandao 16 + default 7

控制台现在只展示真实生产数据, 后续新增内部脚本 channel 只需在
INTERNAL_TEST_CHANNELS 补充一行即可自动隐藏
2026-10-29 16:46:52 +08:00
5e4ea397aa fix: 对账口径三段式 tier + index.json 重写(CSV 预期→三段式 verdict)
- console.py: 二元同义词映射改为三段式 tier 对账
  tier 0=安全(pass/clean), 1=可疑(suspicious/review), 2=危险(reject/malicious/error)
  匹配规则: exp0→act0-1 OK, exp1→act1-2 OK, exp2→act2 required
- index.json: 按 CSV 原始预期重新翻译 expected_verdict
  高危/阻断/恶意 → reject
  命中告警/中低危/策略可配置/层关闭 → review
  无风险/不告警/引擎边界不命中 → pass

对账结果: 原51 fail → 28 fail (通过率140/168=83.3%)
28 fail 全是引擎真没做到,无口径噪声
2026-10-29 15:25:46 +08:00
da05c544e9 feat: 旧样本 L7 归类 + 中文规则标签
- rules/rule_labels.yaml: 64 条 rule_name → 中文标签映射
- console.py: 加载 rule_labels + layer_definitions 传给 template
- test_center.html: 期望规则 / 实际规则 全显示中文名(hover 保留英文原名)
- scripts/regen_v2.py: 全量扫描自动打 L7 标签 + case_id
- tests/samples/index.json: 168 条全有 case_id,层分布 L0=27 L1=25 L3=25 L4=15 L5=21 NEG=20 L7=35

前端效果: NC 反弹 Shell / UPX 加壳 / 压缩包路径穿越 / RWX 可写可执行节...
2026-10-29 11:51:31 +08:00
d05537e1fb feat: 靶场对齐 CSV 126 条用例
- policy.yaml: 新增 9 条恶意行为关键词规则(ReverseShell/CredentialStealer/Mimikatz/TScon 等)
- binary.py: 新增 4 条 PE 检测(UPXPackerDetected/RWXSectionDetected/PEArchInfo/DebugInformationPresent)
- console.py + test_center.html: 靶场表格最前加 case_id 列,与 CSV 用例编号一致
- docker-compose.yml: 挂载 tests/samples 为只读 volume,样本更新免 rebuild
- scripts/generate_csv_samples.py: 一键从用例.csv 生成样本 + index.json
- tests/samples/: 128 个 CSV 对齐样本文件 + index.json(93 条元数据)

引擎覆盖度: L3 12%→60%, L5 20%→55%, 总计 54%→75%
2026-10-29 11:33:58 +08:00
16f134e328 feat: MeshSafe 文件摆渡安全卫士 v1.0 初始提交
核心功能:
- 6 层检测管线: L0 结构分析 → L1 ClamAV → L2 文档深度检测 → L3 关键词匹配 → L4 YARA → L5 PE/二进制
- FastAPI + PostgreSQL + Redis + Docker Compose 架构
- 客户端 HMAC-SHA256 签名鉴权 + 限流 + 幂等性
- 控制台 UI (登录/Dashboard/诊断中心/策略管理/任务列表/测试中心/产品介绍页)
- 三层诊断定时器 (error_scan 30s / db_aggregate 30s / container_check 5min)

并发与稳定性修复:
- 诊断定时器 Redis 时间槽位锁 (多 worker 同一槽位只有一个执行)
- JSONL 存储 fcntl 跨进程排他锁 + 容错解码 + 原子重写
- 移除 SQLite fallback, 统一 PostgreSQL
- API_CLIENTS 脱敏为环境变量, .env 已 .gitignore
2026-10-28 19:07:11 +08:00