Files
qiming/qimingclaw/crates/agent-electron-client/docs/reviews/SECURITY-REVIEW.md

50 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 敏感信息与安全自查agent-electron-client
## 结论
**当前代码未发现硬编码密钥或明显敏感信息泄露。** 已对以下点做了修正与约定说明。
---
## 已修正
### 1. 日志中泄露 API KeyprocessHandlers.ts
- **问题**`agentRunner:start``log.info(..., args.join(' '))` 会输出完整命令行参数,包含 `--api-key <真实 key>`
- **修正**:仅记录 `binPath``backendPort``proxyPort``apiBaseUrl`,不再记录含 apiKey 的 args。
### 2. 登录失败时打印完整 errorauth.ts
- **问题**`console.error('[Auth] 登录失败:', error)` 可能把含请求体(如 password的 error 对象输出到控制台/日志。
- **修正**:改为只输出 `console.error('[Auth] 登录失败:', errorMessage)`,不再打印整个 error。
### 3. 登录成功时打印 configKeyauth.ts
- **问题**`console.log('[Auth] 登录成功:', { configKey: response.configKey, ... })` 会把客户端 configKey 写入日志。
- **修正**:改为 `configKeySet: !!response.configKey`,只记录是否设置,不记录内容。
---
## 已确认安全或低风险
| 项 | 说明 |
|----|------|
| **API Key 占位符** | UI 中 `placeholder="sk-ant-..."` 仅为占位文案,非真实密钥。 |
| **acpClient 日志** | `ANTHROPIC_API_KEY` / `OPENAI_API_KEY` 仅打印前若干字符 + `...`,已脱敏。 |
| **凭证存储** | API key、password、configKey、saved_key 等均通过 IPC 存 SQLitesettings未写进代码或仓库。 |
| **环境变量** | `dist:mac:unsigned` 等脚本中 `APPLE_API_KEY=` / `APPLE_ISSUER_ID=` 等置空,用于关闭签名与公证,不涉及真实密钥。 |
| **文档** | SIGNING.md、verify-sign.js 仅说明 env 名称,无密钥内容。 |
| **公开 URL** | `DEFAULT_SERVER_HOST`、npm/pypi 镜像等为公开默认配置,非敏感。 |
---
## 建议
1. **生产构建**:若使用 electron-log 等写文件,确保日志轮转与权限控制,避免日志文件被未授权访问。
2. **configKey / saved_key**:已不在日志中输出全文;若后续有调试需要,仅建议在开发环境且脱敏后使用。
3. **依赖**:定期 `npm audit`,及时升级存在已知漏洞的依赖。
---
*自查日期2026-02*