Files
micro_servers/core/docs/SECURITY_AUDIT_20260801.md
T

2.9 KiB
Raw Blame History

core(Nidus)模块安全审计报告

审计日期: 2026-08-01
审计范围: src/main/、src/shared/
代码版本: dev_qing 分支


修复进度

优先级 总数 已修复 待修复
P0 2 0 2
P1 3 0 3
P2 3 0 3

🔴 P0 — 严重问题

P0-1: PMC HTTP 管理接口无认证,可执行任意系统命令

  • 位置: src/main/HttpTask.cpp
  • 问题: Core(PMC)作为进程管理器,暴露了 HTTP 管理接口(/exec 等),无任何认证:
    • 任意能访问管理端口的本地/远程攻击者可执行任意 shell 命令
    • 可启停任意托管服务、读取日志、获取运行状态
    • 当前缓解:应仅绑定 127.0.0.1,需确认配置
  • 修复建议:
    1. 确保管理接口仅监听 127.0.0.1
    2. 添加强认证(预共享 Token 或 Basic Auth over localhost)
    3. 危险命令(exec、kill)要求二次确认
    4. 记录所有管理操作审计日志

P0-2: init.txt 配置文件无完整性校验,可注入恶意命令

  • 位置: src/main/main.cpp init.txt 解析
  • 问题: init.txt 定义了启动哪些子进程及参数,若文件被篡改:
    • 可添加任意启动条目,执行恶意二进制
    • 命令行参数可被注入
  • 修复建议:
    1. init.txt 添加数字签名/校验和验证
    2. 运行时监控 init.txt 修改,变更需管理员确认
    3. 文件权限设为 0600,仅 root/运行用户可写

🟠 P1 — 高危问题

# 问题 位置
P1-1 子进程异常退出无次数限制,可被反复重启消耗资源 进程监控逻辑
P1-2 日志路径穿越:子进程日志文件名可控时可能写入任意位置 日志配置
P1-3 C++ HTTP 解析器需审计缓冲区溢出 libhttp 库(shared 模块)

🟡 P2 — 中危问题

# 问题
P2-1 信号处理函数中使用非异步安全函数(如 printf、log)
P2-2 线程池任务队列无上限,可 OOM
P2-3 崩溃 core dump 可能包含敏感信息(密码、Token)

✅ 已有安全机制

  1. ✅ 进程生命周期管理: 自动重启异常退出的子进程,保障服务可用性
  2. ✅ 线程池模型: 固定线程数,防止无限线程创建
  3. ✅ 日志集中管理: 统一日志格式和输出
  4. ✅ C++ RAII 内存管理: 使用智能指针减少内存泄漏风险
  5. ✅ 依赖审计: 使用经过审计的 libth 线程库、libhttp HTTP 库、libcrypt 加密库

修复路线图

立即(24小时)

  • 确认 PMC HTTP 接口仅绑定 127.0.0.1
  • 检查 init.txt 文件权限

短期(72小时)

  • PMC HTTP 接口添加认证
  • 子进程重启频率限制(指数退避或熔断)
  • 审计 libhttp HTTP 解析器

中期

  • init.txt 完整性校验
  • 管理操作审计日志
  • 信号处理函数安全改造