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

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

2025-06-10 17:22:57作者:庞队千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() 函数,特别是在使用证书认证(而非预共享密钥)的场景下。这一实践对于防止服务器冒充攻击至关重要。

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

项目优选

收起
kernelkernel
deepin linux kernel
C
22
6
docsdocs
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
163
2.05 K
nop-entropynop-entropy
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
8
0
leetcodeleetcode
🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解
Java
60
16
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
199
279
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
952
558
ShopXO开源商城ShopXO开源商城
🔥🔥🔥ShopXO企业级免费开源商城系统,可视化DIY拖拽装修、包含PC、H5、多端小程序(微信+支付宝+百度+头条&抖音+QQ+快手)、APP、多仓库、多商户、多门店、IM客服、进销存,遵循MIT开源协议发布、基于ThinkPHP8框架研发
JavaScript
96
15
apintoapinto
基于golang开发的网关。具有各种插件,可以自行扩展,即插即用。此外,它可以快速帮助企业管理API服务,提高API服务的稳定性和安全性。
Go
22
0
金融AI编程实战金融AI编程实战
为非计算机科班出身 (例如财经类高校金融学院) 同学量身定制,新手友好,让学生以亲身实践开源开发的方式,学会使用计算机自动化自己的科研/创新工作。案例以量化投资为主线,涉及 Bash、Python、SQL、BI、AI 等全技术栈,培养面向未来的数智化人才 (如数据工程师、数据分析师、数据科学家、数据决策者、量化投资人)。
Python
77
71
giteagitea
喝着茶写代码!最易用的自托管一站式代码托管平台,包含Git托管,代码审查,团队协作,软件包和CI/CD。
Go
17
0