Skip to content

Latest commit

 

History

History
35 lines (18 loc) · 5.23 KB

File metadata and controls

35 lines (18 loc) · 5.23 KB

安全报告

请遵守 README 使用限制,仅用本地隔离环境和合成数据验证问题。

本仓库已启用 GitHub 私密漏洞报告。请通过 Security → Advisories → Report a vulnerability 报告尚未修复的漏洞。若该入口暂时不可用,可在 issue 中仅请求维护者提供私密渠道,不公开漏洞细节、利用代码、密钥或用户数据。

报告中请提供受影响 commit/版本、触发条件、本地最小复现、预期与实际行为、影响及可能的修复方向。日志、请求和数据库样例应脱敏。维护者确认修复并协调公开后,再提交公开问题或说明。普通功能问题和已公开的修复可使用 issue/PR。

修复验证以当前代码和实际测试结果为准;历史 issue 的关闭状态不证明所有版本已修复。本项目尚未承诺特定版本的维护期限或响应时间。

日常检查

Dependabot 检查 Go、前端和采集脚本的依赖。quality 在 PR 中检查两棵 npm 依赖树、当前文件和提交历史中的密钥,以及镜像文件层;新提交必须重新通过该检查。CodeQL 使用默认查询分析 Go、JavaScript/TypeScript、Python 和 Actions,结果在 Security 页面中审阅,不作为额外的合并批准流程。

告警优先通过升级依赖或移除未使用的依赖修复。重复的更新 PR 应链接替代 PR 后关闭,已修复的告警由默认分支分析自动更新;不为清空页面而批量忽略告警。采集脚本依赖 Puppeteer Core 和系统 Chromium,Node.js 最低版本为 22.12。

运行边界

ARTEX 的单管理员可以配置 MCP、模型接口和自定义 HTTP 工具,也可以执行命令;服务应只开放给可信操作员,并使用 HTTPS。允许配置本地和私有网络目标是产品能力。MCP、模型发现和自定义 HTTP 工具仅跟随同源重定向,SSE 提供的发送端点也必须同源,以保护配置的凭据;请直接配置最终接口地址。

浏览器会话使用服务端签发的 HttpOnly、SameSite=Lax cookie,HTTPS 部署还设置 Secure;前端不持久化 JWT,也不将其放入 SSE URL。旧版浏览器会话升级后需要重新登录一次。命令行客户端继续使用 Bearer 认证。反向代理应保留外部 Host 并覆盖 X-Forwarded-Proto;Next 本机代理的转发 Host 只在后端确认连接来自 loopback 时采用。开发环境保留同一 localhost/私有 IP 上的前端 3000 或 5173 → 后端 8787 连接。

首次设置管理员密码需要本机初始化令牌。启动日志只提供 setup.token 的位置,令牌与 jwt.key 默认保存在共享工作区外的实例目录;POSIX 文件权限为 0600,Windows 继承用户实例目录的 ACL。公开状态接口不返回令牌,已设置密码后拒绝初始化重放;数据库故障仍拒绝操作,首次写入仍由数据库唯一约束控制。已有密钥和冲突文件不会被自动覆盖。

管理员会话签名绑定当前密码哈希;修改或外部重置密码后,旧 cookie/Bearer 在下一次请求失效。本次改密的浏览器获得新 cookie。升级前的会话需重新登录;已建立的 SSE 连接不会由本次变更主动断开。会话校验读取当前数据库凭据,数据库不可用时返回 503。实现参考 OWASP 认证指引。

工作区浏览、读写、下载及工作区/聊天附件上传通过持有的 Go os.Root 访问文件,拒绝越出工作区的符号链接;聊天附件使用排他创建,避免同名并发覆盖。这约束这些文件 API,不隔离 Agent 执行的进程、挂载或设备文件。

可选 HTTP Basic Auth 默认关闭,在管理员系统设置中启用;密码以 bcrypt 哈希保存在数据库中。通过验证后使用独立的 12 小时 HttpOnly、SameSite=Strict cookie,HTTPS 下设 Secure;管理员 cookie 和配置写入的 CSRF 检查继续生效。健康检查和 API 预检保持公开。Next 开发代理仅向同源地址或明确的 loopback HTTP 后端发送访问验证凭据,不跟随重定向。

发布更新源固定为 2217173240/ARTEX,下载使用 HTTPS 和 Release 校验和。容器镜像为 ghcr.io/2217173240/artex;Release 的 IMAGE_DIGEST 可用于固定镜像清单。源码安装脚本安全引用输入、编码连接串并限制新配置权限;已有配置保持原样,手动编辑时仍需正确引用 .env 值和编码 DSN。

运行时采集默认验证 TLS。授权的自签名目标可在采集配置中显式设置 insecureTLS: true,只对本次独立采集进程生效。enrich.ProbeSite 的证书跳过属于自签名目标/录制代理的探测能力,所发请求不携带配置密钥。审阅 CodeQL 时保留这些功能边界;确认的误报应逐条记录校验位置和理由。

Worker 与 planner 将观察数据编码为 <untrusted-data> 并在系统提示中声明其不是指令;这是提示边界,不能保证完全防止提示注入。目标响应、工具输出及报告中的指令不增加操作权限。启用模型兜底审批时,缺失或新建配置默认在审批模型失败后拒绝执行;已有用户显式配置的失败动作继续保留。