Files
Nexus/docs/audit/2026-05-26-terminal-sidebar-ssh-key-fix.md
2026-07-08 22:31:31 +08:00

2.3 KiB
Raw Permalink Blame History

2026-05-26 — Terminal左侧导航+右侧面板 + SSH密钥修复 + 认证切换清理 审计

审计信息

  • 日期: 2026-05-26
  • 审计人: Claude (AI)
  • 触发原因: Bug修复(SSH密钥双重加密+认证切换残留) + 功能新增(Terminal侧边栏/面板) + 安全加固

审计范围

文件 行数 状态
web/app/terminal.html 278 ☑ 已审
web/app/servers.html 978 ☑ 已审
server/api/servers.py 1173 ☑ 已审

审计8步结果

Step 1: 登记

3个文件,共2429行

Step 2: 全文Read

全部Read至EOF

Step 3: 规则扫描H

  • terminal.html: 3H (H1 innerHTML, H2 esc()完备性, H10 外部输入→DOM)
  • servers.html: 7H (S1 innerHTML×7, S10 CSV错误, S11 属性突破×2, L7 null清除)
  • servers.py: 6H (S2 命令注入×3, S4 大规模赋值, S7 双重加密, S8 认证切换清理)

Step 4: Closure表

# H 判定 依据
C1 H1 innerHTML SAFE 所有${}为整数或esc()
C2 H2 esc() SAFE textContent→innerHTML + 双引号转义
C3 H10 外部输入 SAFE msg.message/ev.reason经esc()
C4 S1 innerHTML×7 SAFE 全部esc()或整数
C5 S10 CSV错误 SAFE esc()全字段
C6 S11 属性突破 SAFE esc(p.id)含双引号转义
C7 L7 null清除 SAFE Pydantic exclude_unset+setattr
C8 S2 命令注入 SAFE shlex.quote()全参数
C9 S4 大规模赋值 SAFE ALLOWED_FIELDS白名单
C10 S7 双重加密 SAFE 预设存明文+单次加密
C11 S8 认证切换 SAFE setdefault+ssh_key_configured联动

Step 5: 入口表

Step 6: 输入→Sink

(详见本次会话完整审计输出)

Step 7: 归类

terminal.html   278行   3H  0FINDING
servers.html    978行   7H  0FINDING
servers.py     1173行   6H  0FINDING
─────────────────────────────────────
总计            16H    0FINDING

Step 8: DoD

  • 安全: 0 FINDING
  • 逻辑: 空catch/except已消除
  • 认证切换联动清理完整
  • 双重加密已修复
  • 所有innerHTML经esc()
  • 命令注入防护
  • 大规模赋值防护
  • 审计日志完整

FINDING 列表

结论

☑ 审计通过,0 FINDING,可部署