feat: A+B 缺口全补 + README 待办记录

A 结构层小缺口 (3/3):
  ✅ structure.py 加 LongFilename 告警 (>120 字符成员名)
  ✅ extractor.py _SAFE_NAME_RE 扩展 emoji 范围 (保留 emoji 文件名不崩)
  ✅ 重生成 L0-023_5layer_nested.zip (5 层真嵌套)

B 白名单机制 (2/2):
  ✅ policy.yaml 加 keyword_whitelist (内网 IP/域名自动放行 RemoteDownloadUnix/PowerShell)
  ✅ policy.yaml 加 yara_hash_whitelist (MD5 在白名单跳过 YARA 告警)
  ✅ policy.py Property 类加两个 property 读取白名单
  ✅ policy.py PolicyEngine.decide() 步骤 -1: 白名单过滤 (优先级最高)
  ✅ scanner.py decide() 调用补传 md5

外部资源缺口 (3 条,README 已记录):
  - L1-009/010 需真实签名 .cvd 文件
  - L1-014 需压测脚本 stress_test.py

测试靶场:
  ✅ rules/test_rules.yar (7 条自动生成 YARA 规则)
  ✅ README 新增测试靶场待办 + 白名单机制说明 + 脚本清单
This commit is contained in:
2026-10-29 14:40:49 +08:00
parent 6e3c1a40e5
commit 57d89b3d05
7 changed files with 125 additions and 1 deletions

View File

@@ -398,6 +398,37 @@ keyword_rules:
weight: 30
severity: high
# ---------- 白名单(规则命中后二次放宽) ----------
# 优先级:白名单 > 关键词规则 > YARA 规则 > 评分累加
# 命中白名单的规则会从 findings 中过滤,不再进入裁决
keyword_whitelist:
# ---- 内网合法运维地址/域名(白名单放行 curl/wget 下载)----
- rule: RemoteDownloadUnix # curl/wget 下载特征
allowed_keywords:
- "192.168."
- "10."
- "172.16."
- "172.17."
- "172.18."
- "172.19."
- "172.2"
- "172.3"
- ".senmesh.com"
- "repo.internal"
- "mirror.internal"
- rule: RemoteDownloadPowerShell # Invoke-WebRequest/BitsAdmin
allowed_keywords:
- "192.168."
- "10."
- ".senmesh.com"
yara_hash_whitelist:
# YARA 命中后,文件 MD5 在此列表 → 跳过告警
# 典型场景:已知安全的开源工具被 YARA 误匹配
- md5: "00000000000000000000000000000000"
note: "示例:占位,生产按需补充"
# ---------- 审计 ----------
audit:
# 记录扫描结果明细到审计日志