首页
/ Mbed TLS 2.28.10 版本发布:安全加固与功能优化

Mbed TLS 2.28.10 版本发布:安全加固与功能优化

2025-06-10 15:28:35作者:庞队千Virginia

Mbed TLS 是一个开源的、易于使用的 SSL/TLS 实现库,专为嵌入式系统设计。它提供了加密、SSL/TLS 协议实现以及 X.509 证书处理等功能,广泛应用于物联网设备、网络通信等场景。作为 ARM 公司维护的项目,Mbed TLS 以其轻量级和模块化设计著称,特别适合资源受限的环境。

版本概述

Mbed TLS 2.28.10 是该 2.28 长期支持(LTS)分支的最终版本,此后将不再提供错误修复或安全更新。建议所有用户尽快升级到受支持的版本。本次更新主要包含安全修复和功能增强,特别是针对 TLS 握手过程中的潜在安全问题进行了加固。

重要安全更新

TLS 客户端主机名验证强化

在 TLS 客户端中,如果未调用 mbedtls_ssl_set_hostname() 函数,且尝试进行基于证书的服务器身份验证时,mbedtls_ssl_handshake() 现在会失败并返回 MBEDTLS_ERR_SSL_CERTIFICATE_VERIFICATION_WITHOUT_HOSTNAME 错误。这一变更源于安全考虑:在不知道预期主机名的情况下验证服务器通常是不安全的。

开发者可以通过两种方式恢复旧行为:

  1. 调用 mbedtls_ssl_set_hostname() 并将主机名参数设为 NULL
  2. 启用新的编译时选项 MBEDTLS_SSL_CLI_ALLOW_WEAK_CERTIFICATE_VERIFICATION_WITHOUT_HOSTNAME

需要注意的是,ssl->hostname 在调用 mbedtls_ssl_set_hostname(ssl, NULL) 后的内容已发生变化,具体细节请参考 mbedtls_ssl_context 结构类型中 hostname 字段的文档说明。

TLS 1.2 握手问题修复

修复了 TLS 1.2 握手过程中的一个重要问题。当计算 Finished 消息时,如果内存分配失败或出现加密硬件故障,可能导致计算错误,从而影响 TLS 握手的安全保证。此问题编号为 CVE-2025-27810。

其他安全改进

  • 清零 PSA 操作中使用的临时堆缓冲区
  • 修复了 psa_key_derivation_input_integer() 在操作中止后未检测错误状态的问题

功能优化与错误修复

网络连接处理改进

在网络组件中,使用 mbedtls_net_close 替代了原始的 close 函数,应用于 mbedtls_net_bindmbedtls_net_connect 中,防止可能的文件描述符双重关闭问题。

平台兼容性增强

  • 修复了在 MS-DOS DJGPP 环境下的编译问题
  • 修正了 AES-NI 内联汇编的约束条件,该问题可能在某些 GCC 类编译器为通用 x86_64 目标构建 AES 时导致代码错误
  • 移除了 Everest Visual Studio 2010 兼容头文件,这些文件可能在不完整实现的情况下遮蔽标准 CRT 头文件

调试输出修复

修正了 MBEDTLS_PRINTF_SIZET 的定义,解决了在启用 SSL 调试功能时,使用 Visual Studio 2013 或 MinGW 构建的 Mbed TLS 副本可能出现的运行时崩溃问题。

升级建议

所有用户都应考虑在适当的开发周期内升级到此版本,以利用其中的安全修复和功能改进。特别需要注意的是,2.28 LTS 分支将不再接收更新,长期使用的项目应规划迁移到受支持的版本。

对于 TLS 客户端实现,开发者应确保正确调用 mbedtls_ssl_set_hostname() 函数,特别是在使用证书认证(而非预共享密钥)的场景下。这一实践对于防止服务器冒充攻击至关重要。

登录后查看全文
热门项目推荐

项目优选

收起
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
136
187
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
881
521
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
361
381
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
181
264
kernelkernel
deepin linux kernel
C
22
5
nop-entropynop-entropy
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
7
0
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
1.09 K
0
note-gennote-gen
一款跨平台的 Markdown AI 笔记软件,致力于使用 AI 建立记录和写作的桥梁。
TSX
83
4
cherry-studiocherry-studio
🍒 Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端
TypeScript
613
60
open-eBackupopen-eBackup
open-eBackup是一款开源备份软件,采用集群高扩展架构,通过应用备份通用框架、并行备份等技术,为主流数据库、虚拟化、文件系统、大数据等应用提供E2E的数据备份、恢复等能力,帮助用户实现关键数据高效保护。
HTML
118
78