找回密码
 立即注册
查看: 12|回复: 0

[行业新闻] 一个串口错误就能让MCU死机?Zephyr披露瑞萨RA系列UART驱动漏洞

[复制链接]
连续签到天数:1天
签到总天数:11天
签到总奖励:52金币
发表于 昨天 21:40 | 显示全部楼层 |阅读模式

马上注册,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
11月8日,Zephyr项目公开了一项涉及瑞萨RA系列MCU的UART驱动安全漏洞,编号为CVE-2026-90585,CVSS评分4.6分。
这个漏洞比较有意思:不需要复杂的数据包,也不涉及缓冲区溢出,仅仅是一个普通的串口接收错误,就可能让整个系统陷入死循环。
一、问题出在哪里?
漏洞位于Zephyr的`uart_renesas_ra_sci.c`驱动中。
正常情况下,UART发生溢出、帧错误或奇偶校验错误时,处理器进入中断服务程序,读取并清除错误标志,然后继续执行其他任务。
但受影响版本的驱动存在一个问题:只有注册了用户回调函数,才会清除相关错误状态。
如果没有注册回调,而错误中断又处于使能状态,处理器就可能不断进入同一个中断。
二、为什么会导致系统卡死?
原因其实很简单。
UART错误标志没有被清除,中断控制器就会再次触发中断。CPU刚退出中断服务程序,又立即进入同一个中断。
如此反复,普通线程和其他任务就无法正常运行。
最终表现为设备失去响应,直到外部复位或者硬件看门狗触发。
三、什么情况下会触发?
官方指出,问题主要涉及启用中断驱动、但未启用异步UART API的配置。
例如程序运行过程中调用`uart_configure()`重新配置串口,就可能使错误中断重新开启。
此时如果串口接收到错误波特率产生的数据,或者出现Break信号,就可能触发问题。
不过,并非所有使用Zephyr或瑞萨RA芯片的设备都会受到影响。
四、官方如何修复?
修复方案是在中断处理程序中,无论是否注册用户回调,都先清除UART硬件错误标志及中断挂起状态。
官方列出的修复版本为Zephyr 4.3.2和4.5.0。
对于使用相关驱动的项目,建议检查Zephyr版本、UART配置及补丁状态。
这个漏洞也提醒我们:嵌入式开发中,中断标志的清除顺序非常重要。一个看似不起眼的判断条件,就可能影响整个系统的可靠性。
大家在开发UART驱动时,有没有遇到过类似的中断风暴问题?

楼主热帖
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|我爱蓝牙网 - 52Bluetooth

GMT+8, 2026-11-11 06:00 , Processed in 0.022510 second(s), 8 queries , Gzip On, Redis On.

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表