Cyber Security汽车网络安全DoS/DDoS攻击,和防御手段,举例讲解,深入浅出

本文主要是介绍Cyber Security汽车网络安全DoS/DDoS攻击,和防御手段,举例讲解,深入浅出,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

DoS 攻击

DDoS 攻击

汽车被DoS攻击的例子

汽车可被DoS攻击的漏洞

可能遭受DoS攻击的车载通讯协议

1、TCP

2、CAN

3、SOME/IP-TP

 防御DoS攻击的手段

1. 防火墙

2.SecOC (Secure Onboard Communication)

3.IDPS (Intrusion Detection & Prevention System)


DoS 攻击

DoS是Denial of Service的缩写,即拒绝服务。

DoS攻击是一种用于拒绝合法用户访问某种资源的攻击,例如访问网站、网络、电子邮件等,或使其速度极慢。这种类型的攻击通常是通过在同一时间向目标资源(如网络服务器)发出过多的请求来实现的。这将导致服务器无法响应所有的请求,使服务器崩溃或使其速度减慢。

举个栗子(这个例子后面会频繁使用)

银行是提供金融和现金服务的服务器,大家也都知道银行柜台资源是有限的,平时进去都要取号和排队。但如果有一个流氓,他就是进去银行然后不断的存取现金零钱,影响其他人排队的速度和心情,更过分的话甚至会挤爆小网点的柜台资源,让网点无法给其他合法用户提供现金和金融服务。这个流氓的恶意行为就是现实版DoS攻击。(哎呀妈呀,这么有钱当什么流氓,走VIP专人服务通道呀)

DDoS 攻击

DDoS是Distributed Denial of Service的缩写,即分布式拒绝服务。DDoS实际上是一种特殊的DoS。它是一种分布的、协同的大规模攻击方式,它一般先通过隐藏病毒感染很多主机,让这些主机成为攻击的傀儡,同时向服务器请求服务,让网络充斥的大量数据包压垮服务器,让其不能正常提供服务。这些傀儡主机也称为“肉鸡”或者“僵尸主机”。

同样以上文银行服务为例:

DDoS攻击就像是这个流氓先群发了好多诈骗短信,谎称某银行存取现金有礼品送,然后导致大量的市民到银行取号排队,挤爆银行。

汽车被DoS攻击的例子

2016年日产聆风(Nissan Leaf)配套的 NissanConnect 应用被曝存在安全隐患,黑客能够在车辆静止时控制该车的风扇设置,导致汽车电池耗尽。这就是对汽车的DoS攻击。

The NissanConnect EV app

 NissanConnect可以显示驾驶习惯、充电水平等,而且它允许用户在充电时远程控制车辆的某些行为,例如提前打开空调和风扇。但是App通过http发起操作请求时,车辆端并没有进行权限鉴定,而是通过请求指令中包含的VIN号(车辆唯一识别号)来作简单的匹配。这就意味着攻击者只需要一个VIN号就能匿名访问车端服务API。而VIN号并不是什么“秘密”。一般汽车VIN号的前几个字符指的是品牌、型号和原产国,所以只有最后几个数字可以将每辆车区分开来。这个VIN号一般就在前挡风玻璃下方就可以找到。

A LEAF on the internet showing the VIN

 虽然这个漏洞只在车辆静止时存在,不会影响行车安全。但如果恶意攻击者通过狂开空调耗尽电池,让正常用户准备出门时却发现车辆没电,那也是很让人窝火的。漏洞披露之后,日产公司就停止了全球的NissanConnect服务,直到软件得以更新。

汽车可被DoS攻击的漏洞

对于无线连接,TBox一般是汽车与车外网络的第一接入点。当前主流电子电气架构下TBox一般与车载网关连接,由网关负责车内网络与车外网络的隔离。而对于有线连接,像OBD、USB、充电接口等都是通讯的接入点。而有接入的地方,都可能受到DoS攻击。下图是汽车容易被攻击的接入点的示意图。

 随着RoboTaxi和共享汽车的发展,汽车除了可能会被远程攻击,近距离的本地攻击也有了更多的可能性。例如以前的网络安全威胁分析可能会认为驾驶员不会对自己的车辆发起攻击,但这在共享汽车上却不一定。上一个共享汽车的用户可能通过本地USB或者蓝牙接口发起攻击,威胁下一个使用共享汽车的用户。接下来我们看几个使用最广泛而又有可能遭受DoS攻击的车载通讯协议。

可能遭受DoS攻击的车载通讯协议

1、TCP

TCP作为可靠的传输层协议,在车载以太网上应用广泛。它的可靠性很大程度上来源其通过“三次握手”建立连接,通过“四次挥手”断开连接。但这种可靠性的“来来回回”也给DoS攻击留了可乘之机。如下图所示,TCP SYN泛洪攻击是一种常见的DoS攻击。

 它利用了TCP握手的可靠性要求,先发起建立连接的“SYN”请求。当服务器打开端口,回复“SYN-ACK”时,攻击者却不再继续,让服务器继续等着,端口资源也就那样耗着。这样的请求再多来若干次,服务器的资源就容易被耗尽,导致正常的客户端请求被拒绝。

举个例子

这种攻击的恶心程度就与下图的例子类似。

2、CAN

如果说TCP/IP是先在互联网流行再传到汽车上,那么CAN通讯就是汽车行业根正苗红的教父了。但也因为CAN原生就是针对汽车设计,早些时候的汽车没有联网,也不会共享,相对于安全和稳定性需求,其信息安全需求是被忽视的。CAN总线有两个重要特点很容易被DoS攻击:无身份验证接入和竞争仲裁。

(1)无身份接入:CAN是典型的总线结构,总线上可以随意增加节点而不必验证节点的身份。增加节点也可以自由在总线上读写。当然这为测试和调试汽车CAN总线提供了很大便利,物理上改装一下线束,甩出一个DB9的接头连接一个Vector盒子和笔记本电脑就能实现节点的收发。当然,出于OBD排放法规和诊断的考虑,普通用户也可以通过量产车上OBD接口接入车载CAN网络。

(2)竞争仲裁:CAN总线上是基于竞争仲裁机制的,也就是谁的报文优先级高,谁就能往总线上发数据,其他节点就得先等等。而谁的报文ID小,谁的优先级就高。这种方式保证了车上ECU之间通讯的高效和可靠。但如果有恶意接入点,例如车载中央网关被劫持,那么只要往总线上发高优先级的报文,就可以堵住其他ECU的嘴,让它们发不出报文,提供不了服务,实现DoS攻击。其实早在2010年就有相关论文发表,详细分析了CAN总线技术的信息安全脆弱点。鼎鼎大名的克莱斯勒吉普被黑事件中,攻击者也是远程获得了CAN权限后,利用CAN总线漏洞开展了例如高速上关掉发动机等操作。

3、SOME/IP-TP

近年来火热地谈论下一代EE架构和SOA的时候,总离不开SOME/IP这个进程间通讯协议。在许多应用场景中,需要通过UDP传输大型的SOME/IP有效载荷。鉴于在以太网上传输数据包的大小限制,SOME/IP-TP是针对有效载荷分段的协议,它将一个大型的消息分割成若干小段发送,然后在接收端再组装起来。

2019年Argus研究小组就在AUTOSAR CP 4.3(包括4.4)中发现了一个设计缺陷。对在SOME/IP-TP上使用SecOC对完整的载荷信息进行认证时,会产生一个漏洞,如果被利用,将导致接收信息的ECU丢掉载荷信息,也就是DoS攻击,示意图如下。

 防御DoS攻击的手段

这个世界上有矛的地方就会有盾,DoS攻击(尤其是DDoS攻击)到目前为止也没有完全彻底的防御办法,但这当然并不意味着躺倒了。事实上,尽管不能100%彻底防御,但网络信息安全界还是有不少防御神器,可以与DoS攻击抗衡。下面我们就来看看几种常见于智能网联汽车上的手段:

1. 防火墙

像上文微信聊天例子中的攻击者,你是不是会把他拉黑?没错,这就相当于防火墙技术。

设置防火墙规则,例如只有白名单上的IP地址才能访问服务器,就是IP防火墙

又或者只有白名单上的应用进程才能访问某个服务,就是应用防火墙

AUTOSAR AP中的IAM模块结合EM模块就可以实现应用防火墙。

硬件防火墙
防火墙本质就是设置过滤规则,简单的静态过滤规则可以通过软件实现,但是复杂的动态规则如果只靠软件,容易造成系统或者主机自身资源的浪费和不可控。因此可以针对过滤规则特性设计专门的硬件来实现防火墙,也就是“硬件防火墙”。它把“软件防火墙”嵌入在硬件中,把“防火墙程序”加入到芯片里面,由硬件执行这些功能,从而减少主机或服务器的CPU负担。

例如用来防御TCP SYN泛洪攻击的状态检测机制就常常通过硬件防火墙在网络接入点实现。

当然硬件防火墙在IT行业比较常见,笔者尚未见到汽车行业的专用硬件防火墙。但是相信随着汽车智能网联化的发展,也会催生出相应的硬件防火墙芯片。

2.SecOC (Secure Onboard Communication)

SecOC是AUTOSAR针对CAN总线等信息安全能力薄弱的情况所推出的安全校验机制。它简单来说就是发送方在报文结尾加上一个消息验证码,而接收方在使用报文之前先校验验证码。消息验证码采用对称加密,用于车内ECU之间的通讯鉴权,密钥也是在汽车出厂前先预置好的。通过校验消息验证码,可以让接收端ECU过滤掉一些非法节点的报文,防御恶意中间人攻击导致的服务失效(DoS攻击)。SecOC可以用于CAN通讯,也可以用于FlexRay或者以太网。但如上文提到,当应用在SOME/IP-TP时,仍然有被DoS攻击的脆弱性。

3.IDPS (Intrusion Detection & Prevention System)

IDPS的核心思路其实包括IDS和IPS。在各个通讯节点内部的安全环境下部署一个模块,用来监视、检测、记录和上报异常数据,这就是IDS。而IPS则是发现异常之后,通过远程升级(OTA)等手段针对性地更新软件,进行防御。例如下图是AUTOSAR中的分布式IDS方案。

 车端各个ECU内部署IDS模块,最终通过无线通讯单元把数据上传给云端作分析判断。云端部分可以更多地融合IT界的方案,可以做更复杂的运算以作最终判断。当然车端ECU也要作适当的初步判断和筛选,否则车云通讯的带宽不支持。以之前提到的银行的例子来说,IDPS就相当于大堂保安,如果看到人太多,就作出限流措施,如果看到流氓,就把他抓住。

转载:汽车Cyber Security入门之DoS 攻防——焉知汽车

这篇关于Cyber Security汽车网络安全DoS/DDoS攻击,和防御手段,举例讲解,深入浅出的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/304490

相关文章

Python中注释使用方法举例详解

《Python中注释使用方法举例详解》在Python编程语言中注释是必不可少的一部分,它有助于提高代码的可读性和维护性,:本文主要介绍Python中注释使用方法的相关资料,需要的朋友可以参考下... 目录一、前言二、什么是注释?示例:三、单行注释语法:以 China编程# 开头,后面的内容为注释内容示例:示例:四

Spring Security中用户名和密码的验证完整流程

《SpringSecurity中用户名和密码的验证完整流程》本文给大家介绍SpringSecurity中用户名和密码的验证完整流程,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定... 首先创建了一个UsernamePasswordAuthenticationTChina编程oken对象,这是S

嵌入式数据库SQLite 3配置使用讲解

《嵌入式数据库SQLite3配置使用讲解》本文强调嵌入式项目中SQLite3数据库的重要性,因其零配置、轻量级、跨平台及事务处理特性,可保障数据溯源与责任明确,详细讲解安装配置、基础语法及SQLit... 目录0、惨痛教训1、SQLite3环境配置(1)、下载安装SQLite库(2)、解压下载的文件(3)、

Python包管理工具核心指令uvx举例详细解析

《Python包管理工具核心指令uvx举例详细解析》:本文主要介绍Python包管理工具核心指令uvx的相关资料,uvx是uv工具链中用于临时运行Python命令行工具的高效执行器,依托Rust实... 目录一、uvx 的定位与核心功能二、uvx 的典型应用场景三、uvx 与传统工具对比四、uvx 的技术实

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

Java中常见队列举例详解(非线程安全)

《Java中常见队列举例详解(非线程安全)》队列用于模拟队列这种数据结构,队列通常是指先进先出的容器,:本文主要介绍Java中常见队列(非线程安全)的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一.队列定义 二.常见接口 三.常见实现类3.1 ArrayDeque3.1.1 实现原理3.1.2

Java进程CPU使用率过高排查步骤详细讲解

《Java进程CPU使用率过高排查步骤详细讲解》:本文主要介绍Java进程CPU使用率过高排查的相关资料,针对Java进程CPU使用率高的问题,我们可以遵循以下步骤进行排查和优化,文中通过代码介绍... 目录前言一、初步定位问题1.1 确认进程状态1.2 确定Java进程ID1.3 快速生成线程堆栈二、分析

Spring Security介绍及配置实现代码

《SpringSecurity介绍及配置实现代码》SpringSecurity是一个功能强大的Java安全框架,它提供了全面的安全认证(Authentication)和授权(Authorizatio... 目录简介Spring Security配置配置实现代码简介Spring Security是一个功能强

javascript fetch 用法讲解

《javascriptfetch用法讲解》fetch是一个现代化的JavaScriptAPI,用于发送网络请求并获取资源,它是浏览器提供的全局方法,可以替代传统的XMLHttpRequest,这篇... 目录1. 基本语法1.1 语法1.2 示例:简单 GET 请求2. Response 对象3. 配置请求

Java Stream.reduce()方法操作实际案例讲解

《JavaStream.reduce()方法操作实际案例讲解》reduce是JavaStreamAPI中的一个核心操作,用于将流中的元素组合起来产生单个结果,:本文主要介绍JavaStream.... 目录一、reduce的基本概念1. 什么是reduce操作2. reduce方法的三种形式二、reduce