Mosquitto 2.0.16 版本解析:三个 CVE 安全漏洞修复与 Broker、客户端库关键改进
物联网消息队列后端网络/通信【免费下载链接】mosquittoEclipse Mosquitto - An open source MQTT broker项目地址https://gitcode.com/gh_mirrors/mo/mosquitto点击查看免费下载导读Mosquitto 2.0.16 于 2023-08-16 发布是一个以安全修复为主、兼顾稳定性缺陷修复的维护版本一次性修复了 CVE-2023-28366、CVE-2023-0809、CVE-2023-3592 三个安全漏洞并同步修复了 Broker、客户端库libmosquitto、命令行客户端mosquitto_pub/mosquitto_sub与应用工具mosquitto_passwd、mosquitto_ctrl中的一批缺陷。本文以官方发布公告为骨架结合仓库源码与完整 ChangeLog.txt 逐条解析每项修复的成因、影响范围与验证依据帮助运行 1.3.22.0.15 版本的部署方评估升级必要性并指导升级前后的配置与运维动作。版本概览为什么 2.0.16 值得优先升级官方发布公告将该版本定性为security and bugfix release安全与缺陷修复版本。从 ChangeLog.txt 可以看到该版本共包含 7 项安全相关修复、16 项 Broker 修复、3 项客户端库修复、2 项客户端工具修复与 2 项应用工具修复密度和覆盖面在 2.0.x 维护序列中相当突出。三个 CVE 分别覆盖了 QoS 2 消息处理、恶意初始报文、v5 Will 消息属性解析三条攻击路径且均为可远程触发的资源耗尽内存泄漏/过量分配型漏洞对长期运行的公开 Broker 影响尤为直接。任何运行在1.3.22.0.15之间的版本都应优先评估升级。条目说明发布时间2023-08-16版本性质安全修复 缺陷修复security and bugfix release安全漏洞CVE-2023-28366、CVE-2023-0809、CVE-2023-3592受影响范围1.3.2 ~ 2.0.15视具体 CVE 而定详见下文仓库依据ChangeLog.txt、www/pages/security.md安全修复三个 CVE 逐一拆解CVE-2023-28366QoS 2 重复消息 ID 引发内存泄漏漏洞描述客户端反复发送相同消息 ID 的 QoS 2 消息但从不回应 Broker 下发的 PUBREC 报文导致 Broker 内存持续泄漏。受影响版本1.3.2 至 2.0.15含在 2.0.16 修复见 www/pages/security.md。源码视角QoS 2 的完整交付依赖 PUBLISH → PUBREC → PUBREL → PUBCOMP 四步握手每一份未完成的 QoS 2 消息都会以 inflight 状态驻留在 Broker 内存中。从 src/context.c 可以看到每个客户端连接的入站msgs_in与出站msgs_out消息队列都受inflight_maximum/inflight_quota约束其默认值来自配置项max_inflight_messages 20见 src/conf.c。攻击者只需让大量只发 PUBLISH、不回 PUBREC的连接停留在线Broker 便会在每个连接上持续累积未完成状态从而耗尽内存。2.0.16 修复了这种同 ID 消息反复提交场景下的泄漏路径同时max_inflight_messages默认 20上限 65535见 src/conf.c与max_inflight_bytes默认 0即不限制依然是运维层面控制 inflight 水位的关键旋钮。CVE-2023-0809恶意初始报文导致过量内存分配漏洞描述针对并非 CONNECT 报文的恶意初始报文Broker 会基于其内容分配过量内存。受影响版本1.5.0 至 2.0.15含在 2.0.16 修复见 www/pages/security.md。源码视角MQTT 连接建立后Broker 需要先读取第一个报文并判断其类型。对非 CONNECT 报文Broker 会按报文头携带的长度字段进行读入与解析攻击者可通过伪造的长度值诱导 Broker 预先分配远超实际需要的内存形成资源耗尽。2.0.16 对该分配路径增加了约束避免基于不可信报文头进行过量分配。CVE-2023-3592v5 Will 消息非法属性类型引发内存泄漏漏洞描述客户端发送包含非法属性类型的 v5 CONNECT 报文携带 Will 消息时Broker 解析失败后未正确释放已分配内存造成泄漏。受影响版本1.6.0 至 2.0.15含在 2.0.16 修复见 www/pages/security.md。源码视角MQTT v5 的 CONNECT 报文允许携带 Will PropertiesBroker 在 src/handle_connect.c 中读取 Will 消息并逐项解析属性。当属性类型非法时解析流程需进入错误清理路径2.0.16 修复了该路径上对已分配 Will 相关内存的释放遗漏。安全加固类修复非 CVE除三个 CVE 外2.0.16 还包含多项主动安全加固拒绝 Will 消息发布到$CONTROL/主题从 src/handle_connect.c 可以看到Broker 在 CONNECT 阶段即检查 Will 主题若以$CONTROL/开头则直接返回MOSQ_ERR_ACL_DENIED拒绝连接。$CONTROL/是 Broker 内部控制主题如$CONTROL/broker/v1见 src/broker_control.c 与 src/control.c此前允许 Will 向其发布意味着攻击者可借遗嘱机制向控制通道注入消息。校验 TLS 证书或 TLS-PSK 身份中的用户名是否为合法 UTF-8防止通过证书字段注入畸形用户名绕过认证或触发编码问题。修复加载无效持久化文件时可能崩溃的问题见下文 Broker 部分。客户端库不再允许单级通配符证书如*.comTLS 证书校验更加严格避免通配符覆盖范围过宽导致的信任风险。Broker 修复稳定性与兼容性细节运行时行为修复$SYS消息 60 秒过期问题修复了$SYS消息在 60 秒后被错误过期、导致不变数值消失的缺陷。$SYS主题是 Broker 自监控统计的载体对应 src/sys_tree.c该修复保证了统计值的持续可见。保留消息内存未即时释放修复了部分保留主题内存使用后未被立即清理的问题降低长期运行的内存占用保留消息逻辑见 src/retain.c。bind_interface选项错误处理修复了该配置项相关错误路径上的处理缺陷保证绑定指定网卡失败时能给出正确反馈配置解析见 src/conf.c。移除断言构建下的守护进程标准流重定向以无断言NDEBUG方式编译并 daemon 化时stdin/stdout/stderr 未正确重定向的问题得到修复。stdout 改为行缓冲模式Broker 日志输出在管道/重定向场景下不再因全缓冲而延迟落盘便于mosquitto -d与日志采集工具的实时对接。配置与安全默认值修复默认设置不再错误允许 TLS v1.1修复了默认 TLS 版本设置允许 v1.1 的问题。由于默认值同时影响 Brokerlistener的tls_version配置与客户端库升级后请确认依赖旧默认值的存量客户端兼容性TLS 配置文档见 man/mosquitto.conf.5.xml。Windows 连接数上限 2048 → 8192修复了 Windows 平台连接数被固定限制在 2048 的问题在支持的平台上提升至 8192。敏感文件权限告警Broker 在启动/加载阶段若发现敏感文件如密码文件、ACL 文件、持久化文件对全体用户可读/可写或属主/属组与 Broker 运行身份不一致将输出警告日志发布公告明确指出未来版本将直接拒绝打开这些文件建议升级后立即清理文件权限如chown mosquitto:mosquitto并收紧权限位为后续大版本平滑过渡做准备。mosquitto_memcmp_const更接近常数时间用于密码/密钥比较的常数时间比较函数被强化降低时序侧信道风险该函数在认证路径中被使用。仅在启用 DLT 日志时注册 DLT避免在未启用 DLT 日志功能时多余注册减少日志后端副作用。持久化与插件修复桥接会话恢复错误修复了桥接的cleansession与local_cleansession不匹配时从持久化恢复后在启动时被错误过期的缺陷。dynsec 配置 JSON 加载崩溃修复了从文件加载动态安全Dynsec插件配置时若角色role的textname或textdescription字段不是字符串类型可能因 JSON 字符串加载错误而崩溃的问题相关配置加载逻辑见 plugins/dynamic-security/config.c。dynsec 禁止重复条目从文件加载配置时不再允许重复的客户端/组/角色与运行时创建时的行为保持一致相关校验逻辑见 plugins/dynamic-security/clientlist.c、plugins/dynamic-security/grouplist.c、plugins/dynamic-security/rolelist.c。log_dest file配置读取堆溢出修复了读取损坏配置包含异常log_dest file指令时的堆溢出问题该修复同样属于防御畸形配置输入的加固。客户端库libmosquitto修复使用 CLOCK_BOOTTIME 追踪时间解决系统休眠导致的 Keepalive 失效这是 2.0.16 客户端库最具代表性的改动当系统支持时改用CLOCK_BOOTTIME时钟追踪时间解决客户端操作系统休眠suspend后无法正确计算 keepalive 实际时间的问题。从 common/time_mosq.c 可以看到mosquitto_time()的时钟选择逻辑#elif _POSIX_TIMERS0 defined(_POSIX_MONOTONIC_CLOCK) struct timespec tp; #ifdef CLOCK_BOOTTIME clock_gettime(CLOCK_BOOTTIME, tp); #else clock_gettime(CLOCK_MONOTONIC, tp); #endif return tp.tv_sec;CLOCK_BOOTTIME与CLOCK_MONOTONIC的差异在于单调时钟在系统休眠期间会暂停计时而 BOOTTIME 会将休眠时间计入。此前客户端休眠后单调时钟停表导致 keepalive 间隔被严重低估Broker 可能误判客户端失联而主动断开或客户端实际已超时却未察觉。改用 BOOTTIME 后休眠时长被正确计入keepalive 与连接保活行为在笔记本、嵌入式网关等经常休眠的设备上回归正确。该时钟选择逻辑同样用于 lib/mosquitto.c 中随机数种子生成保证进程时间戳的全局一致性。其余客户端库修复默认设置不再错误允许 TLS v1.1与 Broker 修复同源保证客户端库与 Broker 的 TLS 默认策略一致lib/mosquitto.c 中 TLS 相关默认值设置。慢速 TLS 连接下的高 CPU 占用修复了 TLS 握手在慢速网络下客户端空转忙轮询导致的高 CPU 问题改善弱网/慢速 TLS 场景下的功耗与资源占用。命令行客户端与应用工具修复Clientsmosquitto_pub / mosquitto_sub / mosquitto_rrmosquitto_sub JSON 输出的 topic-alias 属性值错误修复了mosquitto_sub -F的 JSON 输出格式中 topic-alias 属性值不正确的问题输出格式化实现见 client/sub_client_output.c。TLS 证书校验失败时的提示信息更清晰修复了证书验证失败时易产生误解的提示文案相关 TLS 处理见 client/client_shared.c。Appsmosquitto_passwd / mosquitto_ctrlmosquitto_passwd 使用 mkstemp() 创建备份文件密码文件修改时的备份文件改用mkstemp()创建消除临时文件名可预测带来的符号链接攻击面实现见 apps/mosquitto_passwd/mosquitto_passwd.c。mosquitto_ctrl dynsec init拒绝覆盖已存在文件初始化动态安全配置文件时若目标文件已存在则拒绝覆盖且该检查是无竞态race-condition free的避免两个管理进程同时初始化时互相覆盖实现见 apps/mosquitto_ctrl/dynsec.c。升级与运维建议升级必要性评估结合 www/pages/security.md 的受影响版本矩阵CVE受影响版本触发条件CVE-2023-283661.3.2 ~ 2.0.15含客户端发送重复 ID 的 QoS 2 消息且不回应 PUBRECCVE-2023-08091.5.0 ~ 2.0.15含任意客户端发送非 CONNECT 的恶意初始报文CVE-2023-35921.6.0 ~ 2.0.15含客户端发送含非法属性类型的 v5 Will 消息三个漏洞均无需认证即可远程触发Broker 在认证之前便需解析 CONNECT 报文因此凡是暴露在公网或不可信网络中的 Broker均应尽快升级至 2.0.16 或更高版本。从源码结构看这些漏洞与 MQTT 报文解析、inflight 队列管理、Will 属性解析等 Broker 核心路径直接相关无法通过配置规避。升级后建议执行的检查项清理敏感文件权限2.0.16 已对权限不当的敏感文件输出告警日志请检查/var/lib/mosquitto/持久化文件、密码文件、ACL 文件、动态安全配置文件的属主与权限位因为未来版本将直接拒绝打开这些文件。复核 TLS 配置确认 Broker 与客户端均显式配置了 TLS 版本如tls_version tlsv1.2或tlsv1.3参见 man/mosquitto.conf.5.xml不要依赖已被收紧的旧默认值同时检查所用证书是否符合禁止单级通配符的新校验规则*.com这类证书将被拒绝。复核桥接配置确认各桥接的cleansession与local_cleansession设置一致或符合预期避免持久化恢复后的会话被过早过期桥接配置说明见 mosquitto.conf 与 src/bridge.c。回归 QoS 2 与 Will 场景重点回归测试 QoS 2 消息收发、带属性properties的 v5 Will 消息以及$CONTROL/控制主题相关插件场景。关注 inflight 水位若此前曾受 QoS 2 资源占用困扰可结合max_inflight_messages默认 20与max_inflight_bytes默认 0即不限制审视队列水位配置src/conf.c。小结Mosquitto 2.0.16 是一个小而关键的维护版本三个可远程触发的内存类 CVE 覆盖了 QoS 2、初始报文与 v5 Will 三条常见攻击路径$CONTROL/Will 拦截与证书校验收紧进一步压缩了攻击面同时CLOCK_BOOTTIME 时钟切换解决了真实设备上长期存在的休眠场景 keepalive 失效问题Windows 连接上限提升与 daemon 日志重定向等修复也让生产部署更稳。对于运行 1.3.22.0.15 的部署本版本应视为优先级最高的升级目标升级后按上文清单复核文件权限、TLS 与桥接配置即可平滑落地。赞分享物联网消息队列后端网络/通信【免费下载链接】mosquittoEclipse Mosquitto - An open source MQTT broker项目地址https://gitcode.com/gh_mirrors/mo/mosquitto点击查看免费下载相关推荐Mosquitto 2.0.16 版本解析CVE 安全修复、Broker 与客户端库关键改进全解读Mosquitto 2.0.16 版本解析CVE 安全修复、Broker 与客户端库关键改进全解读 本篇文章以 Eclipse Mosquitto 官方发布说后端消息队列消息路由Mosquitto 2.0.15 发布详解安全修复、Broker 关键缺陷与客户端库改进全解析Mosquitto 2.0.15 发布详解安全修复、Broker 关键缺陷与客户端库改进全解析 本文基于官方发布公告与仓库源码系统梳理 Mosquitto后端消息队列消息路由Eclipse Mosquitto 1.4.13 发布详解CVE 安全修复与 Broker/客户端稳定性改进Eclipse Mosquitto 1.4.13 发布详解CVE 安全修复与 Broker/客户端稳定性改进 本文基于仓库 www/posts/2017/07后端消息队列消息路由上一篇60 秒彻底卸载 Microsoft EdgeEdgeRemover 完整操作指南Win10/11下一篇Shizuku开发者接入教程5步集成Shizuku-API让你的App调用特权系统API创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

GitHub热榜五项目解析:Agent记忆、桌面操作、自托管与安全评测

GitHub热榜五项目解析:Agent记忆、桌面操作、自托管与安全评测

9.22这期GitHub热榜有个很明显的信号:榜单前排不再是清一色的“新模型发布”或者“LLM工具链缝合怪”,而是agent框架、computer-use、自托管环境这三个关键词来回刷屏。我把榜单上下的项目筛了一遍,挑了5个方向有代表性的,覆盖了A…

2026/9/26 8:46:34 阅读更多 →
Origin 2025b正版安装与科研绘图配置指南

Origin 2025b正版安装与科研绘图配置指南

1. 先说清楚:Origin不是“破解软件”,而是科研绘图领域的专业工具OriginLab公司开发的Origin,是全球高校、研究所和工业研发实验室中广泛使用的科学数据分析与可视化平台。它不是Photoshop或Excel的替代品,而是一个专为实验数据处…

2026/9/26 8:45:32 阅读更多 →
OpenClaw部署门槛高?上门安装是智商税还是真省事?

OpenClaw部署门槛高?上门安装是智商税还是真省事?

这段时间身边陆续有朋友问我:OpenClaw 上门安装这门生意到底靠不靠谱?说实话,我一开始看到有人在网上挂“OpenClaw 部署服务,上门安装,跑通为止”的链接时,第一反应是这东西也有人付费?但当我实…

2026/9/26 8:45:32 阅读更多 →

最新新闻

Qlib 上手实录:快速跑通第一个 AI 量化回测的实操笔记

Qlib 上手实录:快速跑通第一个 AI 量化回测的实操笔记

Qlib 上手实录:快速跑通第一个 AI 量化回测的实操笔记 【免费下载链接】qlib Qlib is an AI-oriented Quant investment platform that aims to use AI tech to empower Quant Research, from exploring ideas to implementing productions. Qlib supports diverse …

2026/9/26 10:08:18 阅读更多 →
Bifrost 多接口插件实战:一个插件同时接入 HTTP、LLM、MCP 与 Observability 全链路

Bifrost 多接口插件实战:一个插件同时接入 HTTP、LLM、MCP 与 Observability 全链路

人工智能LLM 网关API网关后端 【免费下载链接】bifrost Fastest enterprise AI gateway (50x faster than LiteLLM) with adaptive load balancer, cluster mode, guardrails, 1000 models support & <100 s overhead at 5k RPS. 项目地址&#xff1a; https://gitcode.…

2026/9/26 10:08:18 阅读更多 →
OpenClaw在K8s Pod中稳定运行的Docker制作指南(源码版):TaoToken统一Key接入与配置骨架

OpenClaw在K8s Pod中稳定运行的Docker制作指南(源码版):TaoToken统一Key接入与配置骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/26 10:08:18 阅读更多 →
基于观测器法的气动力辨识:从飞行数据中挖掘气动导数的实用工具

基于观测器法的气动力辨识:从飞行数据中挖掘气动导数的实用工具

简介&#xff1a;基于状态观测器&#xff08;Observer&#xff09;法的气动力辨识MATLAB程序&#xff0c;面向航空航天专业学生、飞行控制工程师及参数辨识科研人员&#xff0c;旨在利用观测器解决升力、阻力等气动力参数难以直接测量的问题&#xff0c;为飞行器建模与控制提供…

2026/9/26 10:08:18 阅读更多 →
Baserow 文件上传与文件管理完整指南:收集、存储、权限一次讲清

Baserow 文件上传与文件管理完整指南:收集、存储、权限一次讲清

Baserow 文件上传与文件管理完整指南&#xff1a;收集、存储、权限一次讲清 【免费下载链接】baserow Build databases, automations, apps & agents with AI — no code. Open source platform available on cloud and self-hosted. GDPR, HIPAA, SOC 2 compliant. Best A…

2026/9/26 10:08:18 阅读更多 →
AI前沿 | 2026年9月26日:OpenAI 失控智能体调查实录 + 53 张用户图片泄露 + Agent 行为账本缺失

AI前沿 | 2026年9月26日:OpenAI 失控智能体调查实录 + 53 张用户图片泄露 + Agent 行为账本缺失

AI前沿 | 2026年9月26日&#xff1a;OpenAI 失控智能体调查实录 53 张用户图片泄露 Agent 行为账本缺失 &#x1f4d6; 首屏导读 本教程配套付费专栏&#xff1a;《大模型工程师修炼手记》 19.9 元&#xff08;AI 编程 Agent 实战 本文同主题系统课程&#xff09; 《AI时代…

2026/9/26 10:07:18 阅读更多 →

日新闻

数据库课后习题答案别硬背:当测试用例集刷,效率翻倍

数据库课后习题答案别硬背:当测试用例集刷,效率翻倍

简介&#xff1a;万常选版《数据库原理与设计》课后习题答案资源&#xff0c;覆盖第2至6章及第9章&#xff0c;适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件&#xff0c;含3个doc参考答案、2个sql示例脚本、…

2026/9/26 0:00:25 阅读更多 →
学校官网模拟全流程实践:从页面布局到后端接口与部署

学校官网模拟全流程实践:从页面布局到后端接口与部署

如果你正在找一门 Web 大作业的题目&#xff0c;或者刚开始接触 Web 前端开发想做点能拿来展示的东西&#xff0c;“学校官网模拟”几乎是最稳的选择。题目看着简单&#xff0c;但要把导航、新闻列表、轮播 Banner、二级页面、后台数据都串起来&#xff0c;其实已经把前端布局、…

2026/9/26 0:00:25 阅读更多 →
超级玛丽游戏源码C++:从零搭建横版跳跃游戏工程

超级玛丽游戏源码C++:从零搭建横版跳跃游戏工程

简介&#xff1a;这是一份面向游戏开发初学者与C进阶学习者的超级玛丽&#xff08;超级马里奥&#xff09;游戏源码&#xff0c;基于C面向对象编程实现&#xff0c;适合想通过经典项目理解游戏主循环、角色类设计、地图关卡加载与物理碰撞检测的读者参考。压缩包共49个文件&…

2026/9/26 0:00:25 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事&#xff1a;用Flutter给OpenHarmony做一款游戏集合类的App&#xff0c;说白了就是把若干小游戏塞进一个壳里&#xff0c;用统一入口分发。这个方向本身不算新鲜&#xff0c;真正让我花了不少心思的&#xff0c;是首页那堆游戏卡…

2026/9/25 19:27:14 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档&#xff0c;最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事&#xff1a;今天在表后面多加了两个空白行&#xff0c;明天给客户交稿前发现整个章节的编号全部错位&#xff0c;光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/25 11:15:26 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年&#xff0c;说实话&#xff0c;第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年&#xff0c;流量惨淡、功能臃肿、代码自己都懒得看第二遍之后&#xff0c;我才慢慢琢磨明白一个道理&#xff1a;第一个网站是练手&…

2026/9/25 20:29:09 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践&#xff1a;原型怎样变成可用功能分类&#xff1a;[AI/大模型]细分主题&#xff1a;AI 增强型 CI/CD 流水线自动化与 GitOps 实践&#xff1a;Agent 工作流、工具调用与任务拆解&#xff1a;从原型到生产的验收清单很多团队在尝试用大…

2026/9/25 20:29:43 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战&#xff1a;复盘记录怎样真正派上用场分类&#xff1a;[工程技术]细分主题&#xff1a;Kubernetes 生产环境运维与排障实战&#xff1a;可复制的项目复盘模板与决策记录大部分团队的事故复盘报告&#xff0c;最后都变成了躺在 Confluence 或钉…

2026/9/25 20:29:31 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理&#xff1a;核心链路应该先拆哪一步分类&#xff1a;[工程技术]细分主题&#xff1a;Docker 容器化技术与镜像安全管理&#xff1a;核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用&#xff08;包含 Web 接口、后台…

2026/9/25 19:27:26 阅读更多 →