揭示AUTOSAR中隐藏的漏洞

Autosar模块介绍:AutosarOS_5(错误处理、跟踪与调试) 主要介绍了Autosar OS中hook机制: 1)、Hook函数的特点以及作用 2)、各种情况下Hook函数的应用 3)、Hook函数在调试中可能作用 阅读详情

AUTOSAR是一个普遍采用的软件框架,用于各种汽车零部件,如ABS, ECU,自动照明、环境控制、充电控制器、信息娱乐系统等。AUTOSAR的创建目的是促进汽车零部件之间形成标准接口,可以在不同制造商之间互通。

因此,任何配备微控制器(MCU)的汽车零部件都应符合AUTOSAR的规定。

AUTOSAR标准不仅管理用于模块间通信的数据格式,还规定了这些模块的标准API。在汽车行业内使用的AUTOSAR平台有两个版本:Classic和Adaptive。

Adaptive平台是为高性能设备量身定制的,例如信息娱乐系统或高级驾驶辅助系统(ADAS),这些设备通常在Linux或QNX等资源丰富的操作系统上运行。另一方面,Classic平台部署于运行在微控制器单元裸板(MCU)上的低性能设备中,包括ABS, EBD, 安全气囊控制单元、车身控制模块、传输控制模块等系统。

虽然AUTOSAR是一个稳健而可靠的开发框架,但它并非没有潜在的错误和漏洞。在对AUTOSAR文件进行内部分析时,我们偶然发现了一个特别有趣的漏洞,这个漏洞可能会带来很大的安全风险。代码中的缺陷并不是由于AUTOSAR本身造成的,而是对AUTOSAR使用不当的结果。

在本文中,我们打算深入研究和剖析这个具体的案例。

AUTOSAR Classic固件开发

在大多数情况下,固件是利用两家领先的AUTOSAR软件提供商(Vector和Elektrobit)提供的工具链开发的。

Vector和Elektrobit都提供了配置工具和SDK,其中包括标准AUTOSAR模块的预构建实现,如MicroSAR OS运行时、CAN接口、NVM API、诊断模块、加密和内存接口等。这种被称为基本软件(Basic Software,简称BSW)的SDK是以中间件方式执行,因此不能在目标硬件上独立运行。

除了BSW之外,还有一套被称为微控制器抽象层(Microcontroller Abstraction Layer,简称MCAL)的驱动程序和库,用于对硬件的访问。每个打算将其MCU用于汽车行业的硬件制造商都提供了适用于其MCU的AUTOSAR MCAL。例如,有来自博世、恩智浦、瑞萨和英飞凌的MCAL。MCAL驱动程序和库也需要遵循AUTOSAR标准,以确保BSW可以与任何硬件制造商的MCAL一起使用。

新固件的开发通常从配置工具开始。在这里,开发人员构建要使用的硬件平台,为他们的项目选择所需的MCAL和BSW模块,然后在所有模块之间建立连接。例如,开发人员可以指定BSW中的CanIf模块应该使用哪个MCAL的CAN接口。一旦配置阶段完成,配置工具就会生成源代码,这些源代码本质上是MCAL和BSW的一个子集。

生成源代码之后,可以使用任何编译器或集成开发环境(IDE)对其进行编译,然后再将其安装到目标设备上。由配置工具输出的源代码已经包含了设备以默认行为操作所必需的一切。因此,开发人员可能不需要对所生成的代码进行任何修改。在BSW层之上的任何自定义代码往往都是最小化了的,通常占固件总大小的10%以下。

基于AUTOSAR的固件漏洞

在我们进行红队渗透测试的过程中,我们获得了基于AUTOSAR的固件进行安全评估。从攻击者和渗透测试者的角度来看,基于AUTOSAR的文件的潜在攻击点非常有限。该模块的源代码非常可靠,始终经过代码审查和漏洞分析。

关于常规漏洞和通用缺陷枚举(CWE),发现它们的可能性相当小。没有动态内存分配,所有变量要么是全局的,要么是堆栈上的,从而消除了发现double-free或use-after-free等漏洞的机会。汽车代码不执行字符串操作,而只关注二进制解析。因此,通过sprintf, sscanf, strcpy等操作遇到堆栈溢出的可能性在这里是不存在的。

当涉及到潜在的竞态条件漏洞时,AUTOSAR Classic不允许动态任务初始化或动态创建的同步原语。任务和同步事件列表是在配置阶段预先确定的。因此,考虑到静态的、预先配置的任务资源和事件集,自动生成的代码不太可能包含死锁或竞态条件。

因此,我们必须深入研究AUTOSAR框架,了解它的用法和对API的潜在使用不当,特别关注用户如何以可能导致漏洞的方式调用它。

我们在NvM模块中遇到了一组函数:NvM_ReadBlock, NvM_WriteBlock和NvM_RestoreBlockDefaults,这组函数通常用于在NVM中加载和存储设备设置(如EEPROM, NAND, NOR内存等)。

通过对NVRAM管理器规范中的函数原型进行研究:

很明显,这些函数缺少缓冲区大小检查,仅使用块ID来确定在配置阶段配置的特殊块表中的数据大小。换句话说,用户有责任包含在写入时验证保存在NvM块中的数据大小是否合适的代码。同样,当从NvM块中读取数据时,用户有责任提供足够大的缓冲区,因为NvM_ReadBlock只是根据NvM块的大小简单地覆盖缓冲区。

因此,这样的API调用可能会导致越界(Out of Bounds, 简称OOB)读取或写入。根据作为NvM_DstPtr/NvM_SrcPtr传递的缓冲区类型,可能会出现各种问题:

  • 如果用户提供了一个小的堆栈变量,但读取了一个大的NvM块,NvM_ReadBlock将在堆栈变量之外写入数据,这会导致堆栈损坏,并可能为远程代码执行(Remote Code Execution,简称RCE)打开大门。
  • 如果提供的变量是全局变量,NvM_ReadBlock将覆盖邻近的全局变量。这可能会导致代码中出现未定义的行为。
  • 如果用户为NvM_WriteBlock提供了一个小的堆栈或全局变量,将导致NvM_WriteBlock读取变量外的数据,并将随机数据存储到NVM中。

利用这种方法,我们发现了一个有趣的由于AUTOSAR API使用不当导致缓冲区溢出漏洞的案例。

发现基于AUTOSAR的漏洞

让我们看一下我们遇到的漏洞的简化版本:

NvM_ReadBlock将从NVM读取0x110字节,然后将其写入myVar的位置。虽然NvM_ReadBlock会准确地写入myVar的值,但之后它仍将继续用不可预测的值覆盖邻近的全局变量。

在我们发现的案例中,NvM_ReadBlock被设置为在堆栈上执行越界写入操作,这可能会覆盖函数的返回地址。

在这个具体案例中,对易受攻击函数的调用被MCU复杂的自定义工作流程所掩盖。然而,它仍然是可触发的,并且确实导致了执行崩溃。

缓解威胁

代码生成之后,管理源代码中与NvM API一起使用的变量大小就完全是开发人员的责任了。因此,AUTOSAR开发人员应当尽一切努力在配置器中对齐变量和NVM块的大小。AUTOSAR开发人员还应当避免修改生成的代码,除非他们完全理解有关NVM块大小的约束。

此外,没有NVM函数可以提供NVM块的大小来执行如下检查:assert(sizeof(myVar) == NvM_BlockSize(Block_ID));这是因为块大小被硬编码到NvM模块配置中,并被视为内部数据。

即使在使用AUTOSAR这样的标准化框架时,在某些情况下,也可能无意中引入重大的内存漏洞。为了减少这种情况,强烈建议采用持续的质量保证措施和定期的渗透测试。

总结

虽然AUTOSAR为汽车软件开发提供了一个稳健而标准的框架,但由于使用不当,特别是在NvM API的变量管理中,仍然可能出现潜在的漏洞。随着汽车技术越来越复杂,有必要通过持续的质量保证和定期的渗透测试来加强软件安全性。这些实践,加上对正在使用的框架的深刻理解,可以帮助开发人员降低潜在的安全风险,并提高汽车系统的整体安全性。

“原创内容,转载请标明出处”

告别手搓代码!用Matlab/Simulink Stateflow快速搞定AUTOSAR NM网络管理模块 本文探讨了如何利用Matlab/Simulink Stateflow工具快速开发AUTOSAR NM网络管理模块,显著提升开发效率。通过图形化建模和基于模型设计(MBD)方法,开发周期从120人天缩短至15人天,首次测试通过率提高300%。文章详细介绍了状态机建模、消息处理优化及测试验证策略,为嵌入式软件开发提供了高效解决方案。 阅读详情

相关推荐

Mythos模型:AI驱动的自动化漏洞挖掘与安全范式重构

AI安全模型正从辅助工具演进为自主攻防主体,其核心在于将软件系统建模为可微分状态机,结合静态分析、符号执行与强化学习实现端到端漏洞发现。Mythos代表了这一代际跃迁,它不再依赖规则匹配或人工提示,而是通过跨层语义推理(如协议逆向、内存布局推演、控制流扭曲分析)重构漏洞定义本身。这种能力已突破传统SWE-bench Pro和CyberGym基准,在RCE级利用链生成、零日挖掘及长程攻击规划中展现工程级可靠性。其技术价值不仅体现于高检出率,更在于倒逼开发者转向‘可辩护代码’实践,并推动安全运营从周期性渗透转向

weixin_34384681的博客 367

[AutoSar] FEE NVM BUG记录

在开发memory相关工作时出现的问题记录。Fee NVM 双扇区回收机制

汽车-嵌入式-工作笔记-autosar 1881

Mythos:首个可规模化漏洞挖掘的AI安全模型

漏洞挖掘正从传统模糊测试与人工审计,转向基于状态空间建模与符号执行的确定性导航范式。随着大模型在程序分析、逆向工程和POC自动生成等环节能力突破,‘AI驱动漏洞发现’已从概念验证迈入工程落地阶段。Mythos作为代表性系统,融合图神经网络(GNN)、强化学习路径搜索与语义级沙箱执行护栏,实现了对内存破坏、逻辑绕过等高危漏洞的端到端闭环识别。其技术价值在于将原本需数周的人工渗透流程压缩至小时级,并支持可复现、可调度的自动化流水线。典型应用场景覆盖操作系统内核审计、CI/CD安全门禁、遗留依赖风险扫描及云原生配

frank1998819 436

667_AUTOSAR目录框架梳理以及初步的计划

全部学习汇总: https://github.com/GreyZhang/hack_autosar 前面,看完了一个目录的信息,Main。先看这一部分的原因也是软件职业的一点感觉,以为这个会是一个起点或者概括性的东西。这一个目录的文件梳理也花了挺多时间了,大概得有我个人小2个月的夜晚吧!接下来需要看的东西还是需要确认下,这是我手里的所有的文件目录: 大概从上到下梳理一下主要的目录: 应用软件接口-通用 主要信息,现在已经看完 方法论以及模板-通用 方...

小灰笔记 2669

RH850U2A的RAM与Flash,汽车工程师必须知道的5个冷知识(从ECC到OTA升级)

本文深入解析RH850U2A芯片的RAM与Flash特性,揭示汽车工程师必须掌握的5个冷知识,包括软件复位后的RAM数据保留、ECC校验触发条件、Data Flash的4字节设计、量产软件安全逻辑以及LRAM与CRAM的实时性优化策略。这些知识对于汽车电子系统的OTA升级、安全设计和性能优化至关重要。

weixin_30765505的博客 288

保姆级拆解:VCU(整车控制器)如何管好你的电车门?从踩油门到挂挡的完整逻辑

本文深入解析VCU(整车控制器)在电动汽车中的核心作用,从启动自检、挡位管理到扭矩控制,详细拆解其工作原理与安全逻辑。VCU作为整车域控制器的智能中枢,通过精密算法协调各系统,确保驾驶安全与效率,展现了现代汽车电子控制的前沿技术。

weixin_30443075的博客 776

SOME/IP-SD服务发现:从AUTOSAR配置到车载ECU启动流程的完整避坑指南

本文深入解析SOME/IP-SD服务发现在AUTOSAR配置与车载ECU启动流程中的关键实践,涵盖服务实例生命周期管理、事件组订阅逻辑及版本兼容性挑战。通过实测数据和优化建议,帮助开发者规避配置陷阱,提升车载网络通信可靠性,特别适用于SOA架构下的汽车电子系统开发。

weixin_33713707的博客 690

企业级AI编程助手私有化部署指南:安全、信创与CI/CD集成实战

AI编程助手已从开发者效率工具升级为企业研发基础设施的核心组件,其本质是融合代码理解、生成与治理能力的智能编码引擎。原理上依赖大模型在私有知识库上的RAG增强与IDE/CI/CD深度嵌入,技术价值在于平衡安全可控与研发效能——既满足等保三级、信创适配、数据不出内网等强合规要求,又实现SonarQube零高危告警、GitLab流水线原生调用等工程落地指标。典型应用于金融核心系统重构、政务云代码合规加固、汽车电子AUTOSAR代码生成等高约束场景。本文聚焦2026年真实生产验证的8款工具,覆盖Trae、GitH

cuanwei9356的博客 449

从iPhone越狱到安全启动:BootROM漏洞如何影响嵌入式设备安全?

本文深入探讨了BootROM在嵌入式设备安全中的核心作用,从芯片级防护到物联网设备的安全实践。通过分析BootROM漏洞(如iPhone越狱案例)和安全启动机制,揭示了现代计算设备的安全基石。文章还提供了U-Boot加固方法和物联网设备的安全配置建议,帮助开发者构建更可靠的嵌入式系统。

pink的博客 759

COCOMO II软件成本估算实战:从公式到Excel落地的全流程指南

软件成本估算是项目管理与研发效能的核心能力,其本质是将模糊需求转化为可量化、可审计、可追溯的工作量推演。COCOMO II作为经NASA、欧盟航天及国内金融信创项目长期验证的工业级估算模型,以KLOC(千行逻辑代码)为基准,通过Effort Adjustment Factor(EAF)整合人员能力、可靠性要求、硬件约束等24个成本驱动因子,实现从规模到 effort 的结构化映射。它不追求绝对精确,而提供一套强证据链支撑的决策框架——例如RELY因子直连等保三级或DO-178B认证要求,HWR因子锚定国产飞

weixin_34025051的博客 432

[AUTOSAR][诊断管理][ECU][$14] 清除诊断相关信息

本文介绍了ISO14119-1标准中诊断服务14(清除诊断信息)的应用与实现。主要内容包括:14服务的典型应用场景(如ECU刷写后清除DTC、产线检测等)、清除DTC的工作原理、标准请求格式及参数定义。文章提供了示例代码实现,并总结了开发中的常见问题,特别是与AUTOSAR配置参数"DemClearDTCBehavior"相关的策略差异导致的典型Bug。该服务支持按DTC组或单个DTC清除,是汽车电子诊断系统中的重要功能模块。

嵌入式单片机实验室 673

避开这些坑!汽车诊断DID操作常见错误排查指南(0x2F控制指令特别篇)

本文深入解析汽车诊断DID操作中0x2F控制指令的常见错误与排查方法,特别针对状态机设计、时序约束等核心机制进行详细剖析。通过典型故障案例和实战调试技巧,帮助诊断工程师避开权限验证漏洞、状态叠加等陷阱,提升整车诊断效率与准确性。

weixin_30836759的博客 380

【AUTOSAR-CP-CAN-2】AUTOSAR COM

五万字长文深入 autosar com。

肥羊也 1万+

Linux与Windows操作系统选型实战指南:从开发到运维的决策框架

操作系统选型本质是工作流匹配问题,而非抽象优劣比较。Linux基于POSIX标准与内核可定制性,提供细粒度控制、原生容器支持和高自动化运维能力;Windows则依托NT内核与Active Directory生态,在GUI管理、.NET集成、硬件驱动兼容及企业级应用(如SQL Server、Exchange)方面具备深度黏性。技术价值体现在:Linux支撑Kubernetes、AUTOSAR实时调度、Redis高性能部署等场景;Windows保障AD域控、SSIS数据集成、Visual Studio全栈开发等

460

三、STM32F103ZET6最小系统

stm32最小系统除去主控CPU外,需要包含,电源电路,复位电路,BOOT电路,时钟电路(因为stm32有内置时钟,对时钟要求不高的话,可以不要)。NRST引脚其实芯片已经用一个约40K的电阻上拉了,所以理论上来说是不需要再外接上拉电阻的,但我看大家都是有外接上拉的,心里没有底,不管这么多,先预留着。吃过亏,特意查看了芯片手册资料,下图是官方建议的供电方案,图片来自stm32f103zet6数据手册。首先明白目标,单纯的学习软件知识并不是我希望的,我还希望会硬件设计,这样后面才能摆脱开发板。

sevendecsdn的博客 6450

Ansys口腔正畸有限元分析:从几何处理到接触设定的全流程解析

本文详细解析了Ansys在口腔正畸有限元分析中的全流程应用,从几何处理到接触设定,帮助医生精准预测牙齿移动趋势。通过有限元建模技术,可同时观察牙齿-牙周膜-牙槽骨的力学响应,显著提升矫治效果预测准确率。文章还分享了实用技巧和参数设置建议,适用于正畸医生和工程师。

weixin_30897233的博客 346

C++静态分析与编码规范检查实战:从工具配置到CI/CD集成

静态分析是一种在不运行程序的情况下,通过分析源代码来发现潜在缺陷、安全漏洞和编码规范违反的技术。其核心原理是基于预定义的规则集或抽象语法树(AST)对代码结构进行逻辑推理和数据流分析,从而识别出编译器无法捕获的深层问题。这项技术的核心价值在于实现质量保障的“左移”,将问题发现和修复的成本从测试或发布阶段提前到开发阶段,显著提升软件可靠性、安全性和可维护性。在嵌入式系统、汽车电子、航空航天等高可靠性要求领域,结合MISRA、AUTOSAR等行业标准进行静态分析,已成为保障代码质量的关键实践。本文以Paraso

weixin_30855099的博客 390

Ubuntu环境下读取罗技G29方向盘信息

Ubuntu环境下读取罗技G29方向盘信息

工大机器人工作室 3459

国产AI编程工具横评:2026企业级选型五大硬核维度

AI编程工具已从辅助补全演进为深度参与软件工程决策的核心组件。其本质是基于代码语义理解与上下文建模的智能协同系统,依赖AST解析、项目知识图谱构建和多语言工程规则内化等底层能力。技术价值不仅在于提升编码速度,更在于降低架构一致性风险、强化安全合规落地、缩短遗留系统现代化路径。典型应用场景覆盖Spring Boot微服务重构、PyTorch+CUDA混合开发、金融级日志脱敏、低代码到React转换及CI/CD脚本生成等真实产线任务。本文聚焦上下文感知深度、工程语义理解精度、安全边界控制粒度、本地化知识库响应速

abc20899的专栏 503

STM32H7+LAN8720A之ETH与LWIP配置问题(End)

开篇介绍 由于项目中需要使用到STM32H7系列的芯片,且该系列无法移植ST的标准库,只能使用ST的HAL库,通过STM32Cube生成HAL库的基本代码。在项目开发中需要使用到STM32板载的ETH口,在简化的四层模型中充当着数据链路层的角色,我们只需添加PHY并配置好IP,即可实现基本的TCP主从机通信、UDP通信等等。 一、激光雷达3i-T1 由于使用了一款只具有网口通信的单线激光雷达,其具有TCP和UDP方式的通信方式,为了避免进行TCP中的socket报文解析和繁琐的通信握手过程,我们首先将雷达配

weixin_42024702的博客 1万+

YOLOv8改进 | Neck篇 | Slim-Neck替换特征融合层实现超级涨点 (又轻量又超级涨点)

本文给大家带来的改进机制是Slim-neck提出的Neck部分,Slim-neck是一种设计用于优化卷积神经网络中neck部分的结构。在我们YOLOv8中,neck是连接主干网络(backbone)和头部网络(head)的部分,负责特征融合和处理,以便提高检测的准确性和效率。亲测在小目标检测和大尺度目标检测的数据集上都有大幅度的涨点效果(mAP直接涨了大概有0.4左右。同时本文对Slim-Neck的框架原理进行了详细的分析,不光让大家会添加到自己的模型在写论文的时候也能够有一定的参照。

Snu77的博客 1万+

tricore芯片发生了UnhandledException应该如何处理?

发生Os_UnhandledExc或者Os_Hal_UnhandledInterruptEntry的解决办法

qq_36420390的博客 973

【AI智能体】Coze 打通MySql实现数据报表展示应用搭建详解

Coze 打通MySql实现数据报表展示应用搭建详解

congge 3857

AUTOSAR实战教程-使用DET来发现开发错误

DET在我们调试协议栈的时候,能够帮助我们发现配置、开发中的错误,但对于程序跑飞这样的底层代码问题DET并不那么好用。这种情况下就需要借助我在《AUTOSAR实战教程 - 软件集成调试_程序跑飞一招解决》这篇文章里面介绍的方法来定位错误了。

大叔带刺的博客 2648

[Dify实战] Bug 自动归因与复现指南生成器-带绑定资源

摘要: 本文介绍如何利用Dify构建"Bug自动归因与复现指南生成器",解决研发测试中的常见痛点。该系统可自动解析Bug信息,结构化输出复现步骤、可能原因、修复建议和回归测试点,显著提升问题处理效率。文章详细阐述了方案流程、Prompt设计要点、输出模板及落地清单,并提供了RCA分析模板和标准复现步骤示例。通过统一Bug描述模板和自动化分析,该系统能有效降低人力成本,加速问题闭环,适用于持续迭代的中大型项目。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 293

按照CANoe模板制作seed&&key.dll

在canoe进行诊断测试的时候,在0x27服务中需要制作一个dll文件。可在canoe的诊断中进行加载,也可用于diva的自动化测试。 本文按照canoe提供的KeyGenDll_GenerateKeyEx模板制作。 KEYGENALGO_API VKeyGenResultEx GenerateKeyEx( const unsigned char* iSeedArray, /* Array for the seed [in] */ unsigned int

天赐好车的博客 6520
上一篇: CANoe与DDS
下一篇: 福特汽车公司Darren Shelcusky对UNECE R155/R156法规合规之见解访谈
Trinitytec
博客等级 码龄11年 165粉丝 81原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值