Skip to content

Security: nasa-runtime/telegram-bots

Security

SECURITY.md

安全说明

信任边界

bot token、调用方 Bearer 凭据、真实 chat ID、话题 ID 和实际目的地映射不得提交到公开仓库、Issue、构建日志或可下载制品。错误报告只包含稳定错误类别和脱敏结构,不附完整配置、Telegram 响应正文或抓包。

目录文件决定允许发送到哪里、谁可以发送以及读取哪些本地凭据文件。应只允许可信部署主体修改目录和 secret 挂载。只读容器挂载限制应用写入,不限制宿主机或平台部署者的修改权。

主程序通过 fork 创建只读子进程,关闭子进程继承的业务连接,只保留匿名读取通道。子进程拥有服务用户的文件读取权限及 fork 时的地址空间副本;进程隔离用于终止阻塞读取,不是操作系统权限或内存沙箱。程序及安装目录必须禁止不受信主体写入。napp 首次同步读取的引导文件与活动 profile 应位于可靠、不可变的本地存储。

文件 SHA-256 将 YAML 与确切材料绑定,防止分别更新目录和 Secret 时混用材料;它不证明文件作者身份,也不替代平台访问控制。调用方凭据必须是高熵随机值,不能依赖摘要隐藏弱口令。

网络与调用

  • Telegram 出站默认使用官方 HTTPS 根来源。自定义来源只能使用 HTTPS,回环地址才允许 HTTP;修改出站来源需要重启。
  • HTTP 客户端不跟随重定向、不自动重试、不读取系统代理环境,避免凭据跨来源发送和隐式重复通知。
  • 业务端点需要 X-Client-Id 和 Bearer 凭据;重复认证头拒绝。调用方不能传 token、任意 chat_id 或任意 Telegram 参数。
  • /api/config/status 向所有已认证调用方提供服务级配置状态和排空 bot 别名,不提供配置正文、文件路径或其它调用方权限表。
  • /healthz、/readyz 和 /metrics 不要求业务认证,只能暴露给内部探针及监控网络。
  • 由可信代理终止入站 TLS,并限制请求头大小、连接数、请求头读取期限及来源网络。

凭据轮换与撤销

正常轮换时,把新材料写入受限文件,更新目录内 SHA-256 并增加 generation。必须确认 applied 代号已推进且没有拒绝原因。只修改文件而不更新摘要不会切换材料;只观察 readiness 也不能确认轮换完成。

发布新目录后旧凭据不再认证新请求。已经认证但尚未入队的旧代请求会被拒绝;已经受理的消息继续使用其原始材料和目的地,在排空期限内可能继续发送。

疑似 Telegram token 泄露时,先通过 Telegram 的机器人管理入口撤销 token,并停止受影响实例。目录移除不能撤回已发出的网络请求,也不是立即取消所有已受理工作的开关。随后用新 token、新摘要及新的目录代号恢复服务。

数据与可用性

服务不持久化消息和回执;内存或进程快照仍可能含尚未处理的消息和材料,应限制进程调试、core dump 和宿主机访问。零化材料不能保证网络库内部临时副本或操作系统缓冲已经清除。

code=200 仅表示内存受理。强制退出丢失待发消息,网络异常可能导致发送结果未知。不要自动重发未知结果,也不要把服务部署为多个共享同一 bot 的活动副本。

安全报告

优先使用仓库的 GitHub Private Vulnerability Reporting。该入口不可用时,先通过仓库所有者提供的私有渠道建立联系,不在公开 Issue 中提交凭据、利用材料或未脱敏记录。

There aren't any published security advisories