Skip to content

Security: tcpqueue/quectel-rgmii-toolkit-Rust

Security

docs/security.md

安全与资源说明(v0.2.8)

本页说明 v0.2.8 对管理后台的安全加固和后台资源调整,以及升级、回退时需要注意的地方。

跨站请求防护

管理后台以 Cookie 维持登录。旧版本的接口同时接受 GET 和 POST,Cookie 为 SameSite=Lax;用户登录后打开恶意网页,对方可以通过一个跳转链接让模块执行 AT 指令、重启、修改 IMEI 或删除短信。

v0.2.8 起:

  • 只有读取类接口接受 GET,例如总览、设备信息、短信列表、TTL 状态。执行 AT、修改设置、删除短信、扫描小区等操作必须使用 POST。规则集中在 src/server.rs 的 method_allowed。
  • 浏览器标记为跨站(Sec-Fetch-Site: cross-site 或 same-site)的 /api/、/cgi-bin/ 请求一律拒绝。直接输入地址、书签和脚本工具(不发送该头)不受影响。
  • Cookie 改为 SameSite=Strict,任何跨站跳转都不会携带登录状态。
  • 带 Origin 的请求仍需与当前地址一致;WebSocket 握手同样校验来源。
  • /logout.html 只清除当前浏览器的 Cookie;跨站跳转不会注销其他会话。脚本请使用 POST /api/logout。

如果你用 curl 等脚本调用了修改类接口,请改为 POST,例如:

curl -b "zbims_session=..." -d "ttlvalue=64" http://192.168.225.1/api/set_ttl

密码错误限速

Web 登录、修改 Web/root 密码、修改 HTTP 端口和网页终端 root 登录共用一个按客户端地址计数的失败记录:

  • 前 5 次错误不限制;之后每次错误分别锁定 1、2、4、8 秒……,最长 15 分钟。锁定期间返回 429 和 Retry-After,正确密码也需等待。
  • IPv6 按 /64 网段计数。登录成功后清零;一小时没有新的错误也会遗忘。
  • 网页终端重新连接不会重置计数。
  • 密码校验逐个排队,排到时再检查一次锁定,同时发出的大量请求也只有前 6 次会真正校验密码。

Web 密码存储

/usrdata/simpleadmin/simpleadmin.auth 仍是一行 用户名:密码,其中密码改为 SHA-512 crypt($6$ 开头,随机盐)。旧版明文文件、安装器写入的凭据和 simplepasswd 设置的密码,都会在服务启动时自动转换。root 密码仍写入系统 /etc/shadow,不受影响。

回退提示: v0.2.7 及更早版本只认明文。从 v0.2.8 回退时,请在安装器中勾选“修改 Web 账号与密码”重新设置,或在模块上执行 simplepasswd;否则旧版本会提示密码错误。

后台采集与轮询

  • 延迟监测(ICMP)和信号/流量采样可分别关闭或调整间隔,见 五分钟趋势与延迟监测。延迟监测默认 1 秒一次,往返约 120 字节,约 9.9 MB/天的蜂窝流量;改为 10 秒约 1 MB/天。
  • 短信转发按新短信通知读取,确认通知可用后兜底轮询为 60 秒。
  • 网页 API 走同一条 WebSocket 时可以并行等待,每条连接最多 8 个进行中的请求。前端请求默认 30 秒超时,扫描小区、发送短信和手动 AT 为 150 秒;总览在上一次刷新未返回或标签页处于后台时不发新请求。

验证

  • cargo test:跨站与 GET 修改拦截、限速与客户端隔离、并发登录不绕过限速、明文密码迁移、监测计划校验与持久化、WebSocket 慢请求不阻塞快请求(模拟 1.5 秒的小区扫描)。
  • node tests/monitor-schedule-browser.cjs 以及现有浏览器测试全部在模拟模式下通过。
  • 本版本未在真机验证 +CMTI 是否送达 /dev/smd11;未送达时转发会保持 10 秒轮询,行为与旧版一致。

There aren't any published security advisories