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,需确认配置
- 修复建议:
- 确保管理接口仅监听 127.0.0.1
- 添加强认证(预共享 Token 或 Basic Auth over localhost)
- 危险命令(exec、kill)要求二次确认
- 记录所有管理操作审计日志
P0-2: init.txt 配置文件无完整性校验,可注入恶意命令
- 位置:
src/main/main.cpp init.txt 解析
- 问题: init.txt 定义了启动哪些子进程及参数,若文件被篡改:
- 可添加任意启动条目,执行恶意二进制
- 命令行参数可被注入
- 修复建议:
- init.txt 添加数字签名/校验和验证
- 运行时监控 init.txt 修改,变更需管理员确认
- 文件权限设为 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) |
✅ 已有安全机制
- ✅ 进程生命周期管理: 自动重启异常退出的子进程,保障服务可用性
- ✅ 线程池模型: 固定线程数,防止无限线程创建
- ✅ 日志集中管理: 统一日志格式和输出
- ✅ C++ RAII 内存管理: 使用智能指针减少内存泄漏风险
- ✅ 依赖审计: 使用经过审计的 libth 线程库、libhttp HTTP 库、libcrypt 加密库
修复路线图
立即(24小时)
短期(72小时)
中期