跳转至

tor daemon 更新日志

tor daemon(社区惯称 c-tor)是 Tor 网络的 C 语言实现,中继、网桥与 onion 服务都运作在它上面。这一页整理每次发布修了什么、需不需要立刻升级,读者主要是自己架设中继或 onion 服务的人。用 Tor Browser 上网的读者不需要看这一页,浏览器会自己带着对应版本,那些变动整理在 Tor 更新日志。

新版本永远在最上面。原始数据来自官方的 ChangeLog。

紧急程度怎么判断

  • 立刻官方标为安全发布(security release),通常带 TROVE 编号(Tor Project 对外公布安全问题时用的编号)。中继与 onion 服务是长期在线的目标,这一级的问题多半可以被远程触发。
  • 尽快影响连接质量或网络健康,但没有可被远程利用的安全问题。
  • 一般其余维护性发布。

这一页的「立刻」依据的是官方的发布形式(标为安全发布、带 TROVE 编号),不是已经有人在攻击。中继与 onion 服务长期在线,被扫到的机会远高于个人设备,所以门槛设得比 iOS 那几页低。判断不确定时以较高一级为准。

2026 年上半的发布几乎都落在「立刻」。这段期间 Tor 的安全审视强度提高,连续修出多个可被远程触发的问题,分级反映的就是实际状况。运营中继的人这半年确实需要每次都跟上。

两条维护线

0.4.9.x 是目前的主线。0.4.8.x 曾经是长期支持线,安全修补同步 backport,发行版软件包也常常停在那里。

0.4.9.12(2026-09-08)改变了这件事。目录权威从那一版起在权威层级拒绝 0.4.8.x,留在那条线上的中继会被挡在网络外面,所以对中继与 onion 服务运营者来说 0.4.8.x 已经不可用。用软件包安装的人要确认软件源提供的是 0.4.9.x,源没跟上就要换一个源,或者自己编译。

conflux 是什么

下面多则条目都在修 conflux。它让客户端同时用两条电路传同一个连接的数据以提升速度,2023 年进入 Tor,是这半年多起安全问题的共同来源。新的代码路径带来新的错误面,这批修补集中在那里并不意外。

tor 0.4.9.14

2026-10-07 · ChangeLog

  • 立刻安全释出,距离 0.4.9.13 两周,带三个 TROVE 编号,另有一项没有编号、同样列在安全修补下的 conflux 问题。官方写明中继、客户端、onion 服务与目录权威全部受影响,强烈建议尽快升级。上游没有提到已被实际利用。
  • 截至 10 月 8 日,Tor Browser 与 Tails 都还没有带这一版的新版本,稳定版 15.0.24 内置的仍是 0.4.9.13。架设中继、网桥与 onion 服务的人要自己升级。
  • conflux 那一项影响中继。客户端可以把会合点电路接进 conflux 组,再发送序号伪造的 LINK 信元,让中继在会合拼接的过程中拆掉整组电路,触发致命的断言失败,中继进程直接退出(bug 41328,问题从 0.4.8.1-alpha 就存在)。修正后中继只在普通电路上接受 CONFLUX_LINK,也不再让 conflux 的电路转成引介点或会合点。
  • TROVE-2026-067:目录权威以外的节点原本会忽略 MiddleOnly 标记。目录权威用这个标记把可疑的中继限制在中间位置,忽略之后,客户端在 onion 服务电路里可能把这些中继放在不该用的位置(bug 41410,问题从 0.4.8.15 开始)。
  • TROVE-2026-062:中继描述文件里任何一张家族证书过期,整份描述文件就视为过期。原本会忽略家族证书的到期时间(bug 41413,问题从 0.4.9.2-alpha 开始)。
  • TROVE-2026-064 只影响目录权威。限制同一个地址上中继数量的 AuthDirMaxServersPerAddr,现在只计算实际连得上的中继,也不再重置超出上限那些中继的在线记录(bug 41405)。
  • 客户端有两项跟连接稳定与流量分析相关的修正。电路在第一跳完成前被取消时,tor 原本会停用一条正常的入口守卫连接,并中断无关的目录请求。取消动作可以从远程触发,对同一个守卫多开的 TLS 连接可能有助于流量分析(bug 41412)。另一项是电路建立超时的历史记录可能被「放弃」的条目塞满,超时值卡在过低的数字就会无法连接(bug 41420)。
  • onion 服务运营者要留意一项行为变更。HiddenServiceAllowUnknownPorts 用来拖慢对 onion 服务的端口扫描,过渡到 v3 onion 服务时逻辑被意外反转。这一版改回原本的设计,客户端请求连接没有配置的端口时,服务端会关掉那条电路(bug 41435)。

tor 0.4.9.13

2026-09-23 · ChangeLog

  • 立刻安全释出,距离 0.4.9.12 只隔两周,一次带十个 TROVE 编号。官方写明中继、客户端与 onion 服务全部受影响,强烈建议尽快升级。上游没有提到已被实际利用。
  • 官方说明写这批问题同样来自持续涌入的 LLM 报告。
  • Tor Browser 稳定版从 9 月 29 日的 15.0.24、Alpha 从 10 月 1 日的 16.0a13 起内置这一版,Tails 也在 9 月 30 日的 7.14 跟上。用浏览器的人更新到 15.0.24 即可,架设中继、网桥与 onion 服务的人要自己升级。
  • 对一般用户影响最直接的是 TROVE-2026-053,客户端连 onion 服务时如果原本的流已经关闭,电路上的隔离参数会被误清掉,之后来自不同隔离情境的流就能重用这条电路。上游写明恶意的 onion 服务或 HSDir(存放 onion 服务描述文件的中继)可以拿它打破 Tor Browser 的第一方隔离(first-party isolation,让不同网站各走各的电路)(bug 41368,问题从 0.2.3.3-alpha 就存在)。
  • TROVE-2026-051 与 050 都在反向 DNS(由 IP 查回域名)。前者是设了某些虚拟地址时可能出现的内存损坏、重复释放与空指针问题(bug 41381)。后者是关掉 DNS 缓存时 PTR 响应仍然会被缓存,原本的防护解析地址出错,解析不了就默认走向缓存(bug 41380)。
  • TROVE-2026-056:TCP 连接立刻成功、TLS 握手却启动失败时的 use-after-free(bug 41398)。
  • TROVE-2026-058 与 012 在 onion 服务端。前者是服务端的会合电路在抵达会合点之前失败,会被重新建立两次,两条电路带着同一组会合 cookie 与密钥材料。连续失败时每一条 INTRODUCE2 触发的电路数呈指数增长,N 次失败从 N+1 条变成 2^(N+1)-1 条(bug 41408)。后者是 INTRODUCE2 的重放缓存满了就换一个引介点(bug 41256)。
  • TROVE-2026-030、038、041 属于同一类,电路、流、目录请求与一般通道关闭的失败原本都会记在入口守卫上,现在只有对外建立连接失败时才记一次(bug 41360、41365、41366)。入口守卫是客户端长期固定使用的第一跳,失败记录会影响客户端是否改用其他守卫。TROVE-2026-030 另外涵盖一项修正,拒绝会合点 ntor 公钥为全零的 INTRODUCE2 信元。
  • TROVE-2026-052:客户端不再重新附挂 BEGIN_DIR 目录流。原本会依 END 信元的理由字段,把它当成一般的出口请求重试,行为难以预期(bug 41369)。
  • 出口节点或 onion 服务用理由码 0 的 END 信元回应 BEGIN 时,客户端原本会当成连接成功(bug 41353)。SOCKS 客户端因此收到成功响应,HTTP CONNECT 收到 200 OK,实际上连接根本没有建立。
  • 运营者相关的修正有三项。中继端标为关闭的电路立刻从等待通道的清单移除(bug 41393)。HSDir 对「descriptor 签名长度无效」的日志做限速,官方写明这只让洪泛攻击比较容易承受,没有解决它(ticket 41339)。网桥客户端或网桥中继第二次变更 pluggable transport 或 socksproxy 设置时,不再造成内存损坏(bug 41375)。

tor 0.4.9.12

2026-09-08 · ChangeLog

  • 立刻安全释出,一次修掉七个带 TROVE 编号的问题,官方用的字是强烈建议尽快升级。上游没有提到已被实际利用。中继运营者另外有必须处理的协议变更,写在这一则的最后两点。
  • 这批问题的来源跟先前几次不同,官方说明写是由 LLM 报告的。
  • TROVE-2026-043:内存不足(OOM)的处理从底层搬到调用栈上层。原本在 append_cell_to_circuit_queue 里就直接清内存,那个函数可能出现在栈的各个位置,对象会在出乎意料的时机被释放,带来 use-after-free 的风险。这是四个 bug 的共同根因(41341、41336、41326、41363)。
  • TROVE-2026-034:恶意的目录缓存可以让客户端误以为某些中继的 microdescriptor 或 router descriptor 不可用。客户端这一侧也会受影响(bug 41358)。
  • TROVE-2026-036:设定 AutomapHostsOnResolve 时的 use-after-free。用 IPv4 或把 VirtualAddrNetwork 设得很小的人风险最高(bug 41319)。
  • TROVE-2026-042:共识差异文件(consensus diff)的字节数与行数现在有上限,挡掉一类靠耗尽内存达成的拒绝服务(bug 41329)。
  • TROVE-2026-032 与 TROVE-2026-033 都在拥塞控制。前者是没有要求拥塞控制的握手也会处理 CC_RESPONSE 扩展,把状态带进无效值而可能造成远程崩溃(bug 41345)。后者是 CGO 加密原本只跟电路的最后一跳协商,现在每一跳只要支持就协商(bug 41348)。
  • TROVE-2026-040:conflux 的流隔离状态在附挂新流时没有同步到每一条腿(bug 41325)。流隔离决定哪些连接共用同一条电路,状态不同步会让隔离的效果跟预期不同。
  • TROVE-2026-035:提供给 evdns 或从它取回域名时都会做合规验证,缩小一类应用程序与库错误的暴露面(bug 41320)。
  • 中继运营者要处理的第一件事:目录权威从此不再接受含 TAP key 的中继描述文件。TAP 是 Tor 早年的握手协议,已经淘汰多年,这一版把它从描述文件里清干净。没有升级的中继交不出合格的描述文件。
  • 第二件事:权威层级开始拒绝 0.4.8.x 系列(ticket 41234),同时带进新的共识方法 36 与给客户端和中继的新推荐协议版本(ticket 41316)。新增的 AuthDirSupport048Clients 选项默认关闭,只有目录权威运营者需要碰它。

tor 0.4.9.11

2026-06-25 · ChangeLog

  • 立刻距离上一版只隔两天的安全发布,官方说明是又发现高优先级的问题,其中一个影响 onion 服务。上游没有提到已被实际利用。
  • 修掉一个竞态条件:在特定情况下,会合点(rendezvous point)可以冒充客户端想连的那个 onion 服务,形成中间人。架设 onion 服务的人这一版务必要升(bug 41297,问题从 0.3.5.3-alpha 就存在)。
  • 客户端遇到 onion 服务把某个引介点的公钥编成全零时,不再直接中止退出(bug 41295)。
  • 目录权威不再接受出口策略里把端口写成 0 的写法。原本的次要检查误把 0 解析成 1-0 这个端口范围,生成 networkstatus 投票时会触发 assert。
  • TROVE-2026-026:conflux 对象的 use-after-free,甚至可能重复释放。上游写明恶意的出口节点可以拿它让客户端崩溃,所以这一版不只跟 onion 服务运营者有关,一般客户端也在范围内(bug 41306)。

tor 0.4.9.10

2026-06-23 · ChangeLog

  • 立刻安全发布,官方强烈建议尽快升级。上游没有提到已被实际利用。
  • TROVE-2026-025:拒绝在已经有附挂流的电路上收到的 CONFLUX_LINK 信元。恶意客户端可以先发 RELAY_COMMAND_BEGIN 再发 CONFLUX_LINK,挂上的出口流最后会变成孤儿,留下悬空的电路反向指针,电路被释放时形成 use-after-free,也就是内存还回去之后又被拿来用,结果是中继当掉(bug 41258)。
  • 未设置 SafeSocks 时,恢复对不安全 SOCKS 协议(socks4 或不带主机名的 socks5)的警告。这个警告消失了很久,而它防的是把要解析的域名直接泄漏给本机以外的地方(bug 41290)。
  • 客户端的入口守卫(entry guard)过期时间回到一致的 48 到 60 天。

tor 0.4.9.9

2026-06-01 · ChangeLog

  • 立刻安全发布,一次修掉十个带 TROVE 编号的问题(TROVE-2026-013 到 022)。上游没有提到已被实际利用。
  • TROVE-2026-022:压缩炸弹检查可以被绕过。攻击者把多个 gzip 或 zlib 子流接在一起,每一段都刚好低于单流的检测门槛,整体就闪过了检查(bug 41275,问题从 0.3.1.1-alpha 就存在)。
  • TROVE-2026-021:解压被截断的 zlib/gzip 流时陷入无穷循环。截断的流永远到不了 Z_STREAM_END,zlib 返回的 Z_BUF_ERROR 被误判成输出缓冲区满了,于是无限重试(bug 41274)。
  • TROVE-2026-017:发出 CONFLUX_SWITCH 信元失败时的 NULL write after free。发送失败会关闭电路并移除该条腿,但返回值被忽略,调用端接着往已经释放的内存写入而崩溃(bug 41263)。
  • 客户端也在影响范围:TROVE-2026-014 是 conflux 的 heap-use-after-free,客户端或出口中继都诱发得了。TROVE-2026-013 与 015 让恶意 onion 服务可以用特制的 descriptor 把客户端弄到中止。TROVE-2026-018 是 DNSPort 的崩溃。
  • 另外三个:TROVE-2026-019 解析 consensus 或分离签名时的越界读写,对目录权威影响最大。TROVE-2026-020 是启用工作量证明防御的 onion 服务可能除以零崩溃。TROVE-2026-016 同属这一批。

tor 0.4.9.8

2026-05-07 · ChangeLog

  • 尽快前一版发出后的紧急补发,起因是 CI 构建过程的一个无声错误,把备援目录(fallback directory)清单整份清空了。这一版没有安全问题,也就没有利用与否的问题。
  • 影响的是新安装的客户端:没有备援目录可用时,只能直接对目录权威做 bootstrap,那几台机器的负载与可观测性都因此变差。
  • 重新生成 2026 年 5 月 7 日版本的备援目录清单。

tor 0.4.9.7、0.4.8.24

2026-05-06 · ChangeLog

  • 立刻安全发布,两条维护线同时发布。上游没有提到已被实际利用。
  • TROVE-2026-011:处理 END、TRUNCATE 与 TRUNCATED 信元时,若载荷里没有原因字段会发生越界读取,也就是读到不该读的内存,可能让中继当掉或泄漏内存内容。这个问题从 0.1.1.1-alpha 存在到现在(bug 41254)。
  • TROVE-2026-008:不再通过 conflux 的分腿尝试或接受 BEGIN_DIR(bug 41243)。
  • TROVE-2026-010:清空 conflux 的乱序队列时修正计数(bug 41251)。
  • 另外三个:TROVE-2026-009 是电路在队列内存压力下被重复关闭造成的客户端崩溃,TROVE-2026-006 是收到顺序错乱的 CERT 信元时的空指针解引用,TROVE-2026-007 是收到格式错误的 BEGIN 信元时的差一越界读取。

tor 0.4.9.6、0.4.8.23

2026-03-25 · ChangeLog

  • 立刻安全发布,两个问题都可能让中继被远程弄崩。上游没有提到已被实际利用。
  • TROVE-2026-003:恶意的 CREATED2 造成 11 个字节的栈溢出,结果是远程崩溃(bug 41231)。
  • TROVE-2026-004:conflux 子系统的内存比对用错长度,同样可能导致远程崩溃(bug 41232)。
  • 另外修了一批纵深防御性质的问题,以及 big-endian 平台上的 polyval 实现。