1 Linux Kernel介绍

Linux Kernel是由 Linus Torvalds最初开发的开源的操作系统内核。实现了包括CPU、进程、内存、文件系统等核心模块,被广泛移植到Alpha、arc、arm、ia64、mips、powerpc、sparc、x86-64等许多体系结构上。目前多用于各种服务器和物联网终端等,也可在桌面终端使用Linux。

2 漏洞分析

该漏洞触发时需要本地低权限用户执行其具有执行权限的可执行文件,同时系统启用CAP_NET_RAW功能。CAP_NET_RAW是一种允许使用原始套接字的设置。

漏洞位于net/packet/af_packet.c文件,该文件参与Linux的TCP/IP协议套件实现中的原始数据包套接字。

图片1.png

unsigned short类型变量macoff(对应数据链路层的偏移)和netoff(对应网络层的偏移)在收到回环网卡的原始套接字数据包时,按照以上方式赋值。其中类型为数据报套接字(用于UDP)时两者的值都为数据包头部长度+16,否则将netoff赋值为数据包头部长度+16和maclen中较大的一个,在po->has_vnet_hdr存在(即存在虚拟网络,如NAT等)时加上其大小,再将macoff赋值为netoff减去mac头部的值(即减去数据链路层头部)。这里计算netlen时,可能出现传入的长度异常而导致上溢,此后计算macoff时,将会计算出不正常的结果。

图片2.png 

当执行virtio_net_hdr_from_skb函数时,该函数根据参数中的数值申请缓冲区,这里用到了macoff这一数值。从而分配异常长度的缓冲区,可能造成越界写从而出现容器逃逸,权限提升等。

图片3.png

分析补丁可以发现,补丁将netoff变量的类型改为了unsigned int,并且判断了该值是否大于unsigned_short的最大值,如过大则丢弃内存中的数据包,从而不会导致内存破坏。

3 影响范围

Linux kernel 4.6-5.9rc4

4 解决方案

4.1 检测方案

输入以下命令查看本机的内核版本

cat /proc/version

如显示的Linux version大于4.6且小于5.9,则漏洞可能存在。

4.2 修复方案

升级内核版本,安全版本的链接如下:

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=acf69c946233259ab4d64f8869d4037a198c7f06

或使用命令升级:

sudo apt-get install linux-generic-lts-xenial linux-image-generic-lts-xenial (ubuntu,debian等系统使用)

yum -y update kernel (CentOS,RedHat等系统使用)

4.3 临时修复方案

通过禁用CAP_NET_RAW可以临时缓解该漏洞,方法如下:

setcap cap_net_raw-ep /bin/ping

5 时间轴

2020/9/3   Oh Cohen发布关于该漏洞的说明

2020/9/23   深信服千里目安全实验室发布漏洞分析文章

6 参考链接

1. https://github.com/torvalds/linux/commit/8913336a7e8d56e984109a3137d6c0e3362596a4

2. https://www.openwall.com/lists/oss-security/2020/09/03/3

3. https://seclists.org/oss-sec/2020/q3/att-146/0001-net-packet-fix-overflow-in-tpacket_rcv.patch

1 Linux Kernel介绍

Linux Kernel是由 Linus Torvalds最初开发的开源的操作系统内核。实现了包括CPU、进程、内存、文件系统等核心模块,被广泛移植到Alpha、arc、arm、ia64、mips、powerpc、sparc、x86-64等许多体系结构上。目前多用于各种服务器和物联网终端等,也可在桌面终端使用Linux。

2 漏洞分析

该漏洞触发时需要本地低权限用户执行其具有执行权限的可执行文件,同时系统启用CAP_NET_RAW功能。CAP_NET_RAW是一种允许使用原始套接字的设置。

漏洞位于net/packet/af_packet.c文件,该文件参与Linux的TCP/IP协议套件实现中的原始数据包套接字。

图片1.png

unsigned short类型变量macoff(对应数据链路层的偏移)和netoff(对应网络层的偏移)在收到回环网卡的原始套接字数据包时,按照以上方式赋值。其中类型为数据报套接字(用于UDP)时两者的值都为数据包头部长度+16,否则将netoff赋值为数据包头部长度+16和maclen中较大的一个,在po->has_vnet_hdr存在(即存在虚拟网络,如NAT等)时加上其大小,再将macoff赋值为netoff减去mac头部的值(即减去数据链路层头部)。这里计算netlen时,可能出现传入的长度异常而导致上溢,此后计算macoff时,将会计算出不正常的结果。

图片2.png 

当执行virtio_net_hdr_from_skb函数时,该函数根据参数中的数值申请缓冲区,这里用到了macoff这一数值。从而分配异常长度的缓冲区,可能造成越界写从而出现容器逃逸,权限提升等。

图片3.png

分析补丁可以发现,补丁将netoff变量的类型改为了unsigned int,并且判断了该值是否大于unsigned_short的最大值,如过大则丢弃内存中的数据包,从而不会导致内存破坏。

3 影响范围

Linux kernel 4.6-5.9rc4

4 解决方案

4.1 检测方案

输入以下命令查看本机的内核版本

cat /proc/version

如显示的Linux version大于4.6且小于5.9,则漏洞可能存在。

4.2 修复方案

升级内核版本,安全版本的链接如下:

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=acf69c946233259ab4d64f8869d4037a198c7f06

或使用命令升级:

sudo apt-get install linux-generic-lts-xenial linux-image-generic-lts-xenial (ubuntu,debian等系统使用)

yum -y update kernel (CentOS,RedHat等系统使用)

4.3 临时修复方案

通过禁用CAP_NET_RAW可以临时缓解该漏洞,方法如下:

setcap cap_net_raw-ep /bin/ping

5 时间轴

2020/9/3   Oh Cohen发布关于该漏洞的说明

2020/9/23   深信服千里目安全实验室发布漏洞分析文章

6 参考链接

1. https://github.com/torvalds/linux/commit/8913336a7e8d56e984109a3137d6c0e3362596a4

2. https://www.openwall.com/lists/oss-security/2020/09/03/3

3. https://seclists.org/oss-sec/2020/q3/att-146/0001-net-packet-fix-overflow-in-tpacket_rcv.patch

概述:网络安全公司CheckPointResearch揭露了一场长达六年之久的针对伊朗侨民和持不同政见者的监视行动。据称,策划这场监视活动的攻击者来自伊朗,攻击者利用多种攻击手段监视受害者行为,其中包含针对个人计算机和移动设备的恶意软件。

攻击媒介:

· Windows信息窃取程序拥有四种变体,旨在窃取受害者的个人文档以及访问其Telegram和KeePass帐户信息。

· Android后门旨在从SMS消息中提取双因子验证码(sms验证码)并转发至攻击者手机以窃取用户设备Google账户信息以及对受害者设备环境进行录音。

· 使用伪造的Telegram服务帐户分发Telegram网络钓鱼页面。

攻击目标:

· 阿什拉夫营和自由居民家庭协会(AFALR)

· 阿塞拜疆民族抵抗组织等抵抗运动

· 俾路支省的公民。

暗影安全实验室通过对该监视活动中的移动恶意软件进行分析来对此次间谍活动做一次简要阐述。

1. 程序运行流程图

该应用程序安装启动后首先加载Google页面并通过JavascriptInterface接口获取用户输入的账户密码。接着请求敏感权限,将自身加入电池白名单对进程保活并请求超级用户权限以对Whatsapp的密钥文件进行复制转移。最后在主服务中每两秒启动一次线程,并在线程内开启多任务线程以获取用户设备敏感数据,获取的用户数据加密保存至本地文件之后上传至FTP服务器,该攻击者最主要目的就是获取Google及其他社交软件发送的短信验证码并将验证码转发至自己控制的手机。

图1-1 程序运行流程图

2. 行为分析

移动端恶意程序通过伪装成一种以帮助瑞典的波斯语使用者获得驾驶证的服务应用诱导用户安装使用。该应用程序有两种变体,一个似乎是为了测试目的而编译的,另一个是能目标设备上部署的发行版。

图2-1-恶意应用界面

2.1 恶意行为

· 窃取用户设备收件箱、发件箱、草稿箱短信息。

· 将双因子验证码以SMS消息形式转发到由攻击者控制电话号码。

· 窃取用户设备联系人、软件账户信息。

· 窃取用户设备已安装的应用程序和正在运行的进程信息。

· 通过网络钓鱼窃取用户Google账户信息

2.1.1 Google凭据盗窃

(1)恶意软件安装启动后主动加载Google账户登录页面。

图2-2 加载的Google登录界面

以下为恶意程序加载页面的配置列表,其中只加载了Google页面,其他页面URL可能会在更新版本的代码中使用:

图2-4目标应用列表

系统会在Android的WebView中向用户显示一个合法的登录页面。为了窃取输入的凭据,使用了Android的JavascriptInterface接口,以及一个计时器,该计时器每秒定期从用户输入的账号和密码文本框中中检索信息。

图2-5 加载JS代码检索用户输入信息

通过JS调用Android代码以获取用户输入的账户密码信息:

图2-6 调用android代码获取账户密码

2.1.1.2 服务器通信

该恶意软件使用常规HTTP与服务器通信,它将初始请求发送到alar**iye.net,通过FTP上传保存了用户已加密隐私数据的文件。并与服务器gradl***rvice.info通信以获取配置、状态的更新。

图2-7 服务器通信

代码中硬编码了FTP服务器的账户:APPUser202090P密码:[email protected]信息。

图2-8 连接FTP服务器

图片2.png

图2-9 FTP服务器登录页面

服务器地址列表:

image.png

2.1.1.3 隐私数据窃取

该恶意软件与其他恶意软件不同,它并不是通过远程控制指令来执行窃取用户隐私数据的行为。而是通过开启异步任务AsyncTask去执行不同的窃取用户隐私数据的行为。该应用启动后会启动应用主服务MainService。在主服务中每两秒启动一个主线程,在该主线程中执行异步任务。

图2-10 在线程内启动获取用户隐私数据的任务

应用最开始会启动一个获取用户联系人信息的异步任务,并在该异步任务的onPostExecute中启动获取用户短信息的异步任务SmsTask。

图2-11 启动获取短信息的异步任务

通过对tag标志(一个字符串标志短信箱的类型,如收件箱、发件箱、草稿箱)的hash值对比,执行获取用户不同短信箱内容的操作:

图2-12 获取用户收件箱、发件箱、草稿箱内容

之后在SmsTask异步任务中通过对比Type字符串的Hash值分别启动获取用户已安装应用信息,获取用户账户信息,发送隐私数据至服务器的任务。

图2-13 分别启动各项获取用户隐私数据的任务

恶意程序会根据服务器返回的配置信息判断是否对用户设备开启录音:

图2-14 开启录音功能

2.1.1.4 数据加密

应用窃取用户隐私数据后会将用户数据加密写入本地文件,之后便上传至FTP服务器。

图2-15 保存隐私数据的本地文件

数据采用了DES加密算法:

图2-16 DES加密算法

上传获取的所有用户信息,以文件名+文件内容的形式上传:

图2-17 上传用户隐私数据

2.1.1.5 超级用户权限

该应用安装启动后会请求加入电池白名单并申请超级用户权限,以使用shell命令对用户文件进行复制转移。

图2-18 请求超级用户权限

将应用进程加入白名单,以保护应用进程不被系统杀死:

图2-19 将应用加入电池白名单

执行shell指令获取root权限:

图2-20 执行shell命令获取root权限

通过root权限将/data/data/com.whatsapp/files/key文件复制到外部存储目录,/data/data/com.whatsapp/files/key文件目录下保存了Whatapp的加密密钥,该密钥可用于解密Whatsapp数据库。

图2-21 复制Whatapp加密密钥文件至外部存储目录

2.1.1.6 SMS双因子验证码

该恶意程序最主要的功能就是获取用户短信验证码,并将该验证码转发至攻击者指定的号码。通过注册短信接受广播,应用程序能监听用户设备所有接受的短信,过滤短信来自Telegram、Whatsapp、facebook和其他社交网络应用程序传入SMS消息并过滤短信内容为“G-”(Google的短信验证码)开头的短信内容。

图2-22 过滤用户接受的短信内容

将过滤出的短信内容进行转发,发送到攻击者控制的手机号码。在拥有了受害者Google账户及Google的短信验证码的情况下,攻击者就能登录受害者的Google账户。

图2-22 将用户短信进行转发

3. 总结

从恶意程序特殊的攻击目标以及恶意操作对用户Google账户信息、社交软件账户信息的重视程度表明,攻击者主要目的是收集有关这些受害者的情报,以更多的了解他们的活动。由此猜测这可能是一场有组织的政治的活动。

4. 样本MD5

· 4ae3654b7ed172b0273e7c7448b0c23c

· ca154dfd01b578b84c0ec59af059fb62

概述:网络安全公司CheckPointResearch揭露了一场长达六年之久的针对伊朗侨民和持不同政见者的监视行动。据称,策划这场监视活动的攻击者来自伊朗,攻击者利用多种攻击手段监视受害者行为,其中包含针对个人计算机和移动设备的恶意软件。

攻击媒介:

· Windows信息窃取程序拥有四种变体,旨在窃取受害者的个人文档以及访问其Telegram和KeePass帐户信息。

· Android后门旨在从SMS消息中提取双因子验证码(sms验证码)并转发至攻击者手机以窃取用户设备Google账户信息以及对受害者设备环境进行录音。

· 使用伪造的Telegram服务帐户分发Telegram网络钓鱼页面。

攻击目标:

· 阿什拉夫营和自由居民家庭协会(AFALR)

· 阿塞拜疆民族抵抗组织等抵抗运动

· 俾路支省的公民。

暗影安全实验室通过对该监视活动中的移动恶意软件进行分析来对此次间谍活动做一次简要阐述。

1. 程序运行流程图

该应用程序安装启动后首先加载Google页面并通过JavascriptInterface接口获取用户输入的账户密码。接着请求敏感权限,将自身加入电池白名单对进程保活并请求超级用户权限以对Whatsapp的密钥文件进行复制转移。最后在主服务中每两秒启动一次线程,并在线程内开启多任务线程以获取用户设备敏感数据,获取的用户数据加密保存至本地文件之后上传至FTP服务器,该攻击者最主要目的就是获取Google及其他社交软件发送的短信验证码并将验证码转发至自己控制的手机。

图1-1 程序运行流程图

2. 行为分析

移动端恶意程序通过伪装成一种以帮助瑞典的波斯语使用者获得驾驶证的服务应用诱导用户安装使用。该应用程序有两种变体,一个似乎是为了测试目的而编译的,另一个是能目标设备上部署的发行版。

图2-1-恶意应用界面

2.1 恶意行为

· 窃取用户设备收件箱、发件箱、草稿箱短信息。

· 将双因子验证码以SMS消息形式转发到由攻击者控制电话号码。

· 窃取用户设备联系人、软件账户信息。

· 窃取用户设备已安装的应用程序和正在运行的进程信息。

· 通过网络钓鱼窃取用户Google账户信息

2.1.1 Google凭据盗窃

(1)恶意软件安装启动后主动加载Google账户登录页面。

图2-2 加载的Google登录界面

以下为恶意程序加载页面的配置列表,其中只加载了Google页面,其他页面URL可能会在更新版本的代码中使用:

图2-4目标应用列表

系统会在Android的WebView中向用户显示一个合法的登录页面。为了窃取输入的凭据,使用了Android的JavascriptInterface接口,以及一个计时器,该计时器每秒定期从用户输入的账号和密码文本框中中检索信息。

图2-5 加载JS代码检索用户输入信息

通过JS调用Android代码以获取用户输入的账户密码信息:

图2-6 调用android代码获取账户密码

2.1.1.2 服务器通信

该恶意软件使用常规HTTP与服务器通信,它将初始请求发送到alar**iye.net,通过FTP上传保存了用户已加密隐私数据的文件。并与服务器gradl***rvice.info通信以获取配置、状态的更新。

图2-7 服务器通信

代码中硬编码了FTP服务器的账户:APPUser202090P密码:[email protected]信息。

图2-8 连接FTP服务器

图片2.png

图2-9 FTP服务器登录页面

服务器地址列表:

image.png

2.1.1.3 隐私数据窃取

该恶意软件与其他恶意软件不同,它并不是通过远程控制指令来执行窃取用户隐私数据的行为。而是通过开启异步任务AsyncTask去执行不同的窃取用户隐私数据的行为。该应用启动后会启动应用主服务MainService。在主服务中每两秒启动一个主线程,在该主线程中执行异步任务。

图2-10 在线程内启动获取用户隐私数据的任务

应用最开始会启动一个获取用户联系人信息的异步任务,并在该异步任务的onPostExecute中启动获取用户短信息的异步任务SmsTask。

图2-11 启动获取短信息的异步任务

通过对tag标志(一个字符串标志短信箱的类型,如收件箱、发件箱、草稿箱)的hash值对比,执行获取用户不同短信箱内容的操作:

图2-12 获取用户收件箱、发件箱、草稿箱内容

之后在SmsTask异步任务中通过对比Type字符串的Hash值分别启动获取用户已安装应用信息,获取用户账户信息,发送隐私数据至服务器的任务。

图2-13 分别启动各项获取用户隐私数据的任务

恶意程序会根据服务器返回的配置信息判断是否对用户设备开启录音:

图2-14 开启录音功能

2.1.1.4 数据加密

应用窃取用户隐私数据后会将用户数据加密写入本地文件,之后便上传至FTP服务器。

图2-15 保存隐私数据的本地文件

数据采用了DES加密算法:

图2-16 DES加密算法

上传获取的所有用户信息,以文件名+文件内容的形式上传:

图2-17 上传用户隐私数据

2.1.1.5 超级用户权限

该应用安装启动后会请求加入电池白名单并申请超级用户权限,以使用shell命令对用户文件进行复制转移。

图2-18 请求超级用户权限

将应用进程加入白名单,以保护应用进程不被系统杀死:

图2-19 将应用加入电池白名单

执行shell指令获取root权限:

图2-20 执行shell命令获取root权限

通过root权限将/data/data/com.whatsapp/files/key文件复制到外部存储目录,/data/data/com.whatsapp/files/key文件目录下保存了Whatapp的加密密钥,该密钥可用于解密Whatsapp数据库。

图2-21 复制Whatapp加密密钥文件至外部存储目录

2.1.1.6 SMS双因子验证码

该恶意程序最主要的功能就是获取用户短信验证码,并将该验证码转发至攻击者指定的号码。通过注册短信接受广播,应用程序能监听用户设备所有接受的短信,过滤短信来自Telegram、Whatsapp、facebook和其他社交网络应用程序传入SMS消息并过滤短信内容为“G-”(Google的短信验证码)开头的短信内容。

图2-22 过滤用户接受的短信内容

将过滤出的短信内容进行转发,发送到攻击者控制的手机号码。在拥有了受害者Google账户及Google的短信验证码的情况下,攻击者就能登录受害者的Google账户。

图2-22 将用户短信进行转发

3. 总结

从恶意程序特殊的攻击目标以及恶意操作对用户Google账户信息、社交软件账户信息的重视程度表明,攻击者主要目的是收集有关这些受害者的情报,以更多的了解他们的活动。由此猜测这可能是一场有组织的政治的活动。

4. 样本MD5

· 4ae3654b7ed172b0273e7c7448b0c23c

· ca154dfd01b578b84c0ec59af059fb62

9月25日记者获悉,腾讯云的提案在国际电信联盟ITU-T SG17会议中获全票通过,成为全球首个区块链智能合约安全领域的国际标准。

这也标志着以腾讯云为代表的中国科技公司在区块链领域的安全技术首次受到国际高度认可,可为中国企业在国际安全技术标准领域争取到更多话语权。 

ITU-T国际电信联盟是全球主流的通信标准组织,成立于1865年,是联合国下属机构,其成员包括190多个国家、700多个公司和学术机构,是全球范围内权威的国际标准化组织。其旗下的SG17研究组于2001年成立,主要负责通信安全研究与标准制定。

本次SG17会议共有来自32个国家的258名专家参加,提出21项标准新提案,共有11项提案获得立项,其中3项提案来自中国代表团,其中腾讯云提案项目全称为“Security  Requirements for Smart Contract Management (智能合约安全管理要求)”。

1.png 

腾讯云副总裁、腾讯安全平台部负责人杨勇表示,腾讯云区块链致力于打造数字经济时代的信任基石,而安全则是腾讯云区块链的基础要素,此次智能合约安全标准立项,为区块链产业生态建设提供了很重要的技术基础,未来腾讯云将与行业共建区块链安全标准,助力安全、高效的数字化万物互联。

填补智能合约标准空白,保障千亿区块链市场 

近年来区块链技术快速发展,有望成为下一代信息技术的重要基础,2017年,全球区块链技术市场规模已达到16.4亿美元,据《财富》旗下市场研究和咨询服务公司Fortune Business Insights预测,这一数字到2025年将会升至210.7亿美元。

伴随着区块链技术被应用到金融、政务、工业等关键信息领域,区块链的安全可控也受到各方重视,据区块链安全公司PeckShield (派盾)数据显示,2019 年共发生区块链安全事件 177 件,其中重大安全事件 63 起,损失达到 76.79 亿美元,较 2018 年增长约 60%。

智能合约是区块链的核心组件,也是确保数字资产安全、信息安全以及业务安全的基础。1995年,跨领域法律学者尼克·萨博(Nick Szabo)提出了智能合约这一术语,其实质是一种计算机协议,当智能合约的双方在区块链上产生资产交易时,就会触发代码自动完成具体的交易流程。如果智能合约在区块链上实现广泛运用,经济分工将在互联网时代进一步细化,全球范围内的各网络节点将直接对接需求和生产,更广泛的社会协同将得以实现。

与此同时,如果合约存在漏洞,则可能导致巨大的利益损失。这也是腾讯云在智能合约领域立项的重要意义——通过该智能合约安全标准的制定,可以在一定程度上,指导区块链业务规避此类风险。

腾讯云在智能合约安全性及安全漏洞方面,依托了Tencent Blade Team近年来在区块链智能合约安全的研究投入和成果产出,结合腾讯标准团队经验,形成了管理安全实践和标准范例,并结合腾讯云区块链安全产品的实践能力佐证。

在会议期间,腾讯云的展示得到与会专家的高度认可,并作为ITU目前在智能合约方面唯一获批通过的安全标准立项,填补了这一方向上的空白。

全票通过立项,拿下国际通信标准领域里程碑

腾讯云在ITU-T SG17会议中的提案能够全票通过,与长期的技术积累和充分的准备是分不开的。早在2019年11月,腾讯云就在国内CCSA(中国通信标准协会)TC8 WG4第60次工作会议上成功立项了《区块链智能合约安全技术要求》行业标准,并于2020年5月在全国信息安全国家标委会立项《区块链智能合约安全指南》。

作为国际通信标准组织,国际电信联盟ITU-T覆盖的范围更大,影响力也更强。信息安全一直是各国关注的重点,是ITU各项标准里较难立项的方向,历年来安全领域立项的通过率一直较低。

腾讯云此次标准立项,在经过国家工信部审核通过后,通过ITU官网提交立项申请,申请通过后又先后经过小组(SG)答辩、工作组协商会议和ITU-T全会三轮答辩,均得到了各国代表协商一致,以及成员单位的支持和认可,最终全票通过立项,标志着腾讯云代表中国科技公司在国际通信标准领域拿下一块里程碑。

本次仅有3项自中国代表团的提案获得通过,也可见ITU-T对立项的要求之高与意义重大,另外两项提案分别是来CNCERT在14/17的立项“X.sa-dsm*:Security architecture of data sharing management based on DLT”和华为在6/17的立项“X.ztd-iot*:Security methodology for zero-touch massive IoT deployment”。

腾讯云区块链目前在基础设施、底层平台、服务平台、技术组件等方面均有布局,并在供应链金融、可信存证、电子票据、数据要素、身份管理、供应链管理、数字资产等7大领域打造了完善的产品及应用解决方案。

同时,腾讯云还通过组建产业区块链联盟、区块链加速器等方式,积极推动产业区块链生态的建设。在国际知名调研机构Gartner近日发布的《区块链咨询与概念验证开发服务市场指南》报告中,腾讯云作为领先的产业区块链解决方案提供者入选“代表性的技术服务提供商”名单,是仅有的两家中国入选者之一。在行业分析机构ABI  Research公布的BaaS(BlockChain-as-a-Service,区块链即服务)领域竞争力排名中,腾讯云的区块链服务平台TBaaS也在中国区块链市场上位居第一位。

延伸阅读:

Tencent Blade Team是腾讯旗下的前瞻安全技术研究团队,此前曾突破性的报告了TensorFlow的前七个漏洞,引发业界对深度学习框架安全性问题的重视,并率先发现GoogleHome、亚马逊Echo等智能音箱的窃听风险,引发广泛关注。在人工智能、物联网、移动互联网、云虚拟化技术、区块链等前沿技术领域,Tencent Blade Team都积累了丰富的研究成果,目前已向Apple、Amazon、Google、Microsoft、Adobe等诸多国际知名公司报告并协助修复了200多个安全漏洞。

与此同时,Tencent Blade Team也将研究成果与腾讯丰富的业务场景相结合,致力于提升腾讯产品的安全性、守护用户安全。2019年底,Tencent Blade Team就深度参与了由腾讯牵头提出并成功立项的国际电信联盟标准《物联网异构设备的数据安全要求》,旨在为智慧城市物联网场景下的数据安全挑战提供必要的技术保障。与此同时,Tencent Blade Team还将团队多年的研究成果落地为《腾讯物联网安全技术规范》,并转化为企业标准,将安全能力开放给合作伙伴,共建安全生态。


9月25日记者获悉,腾讯云的提案在国际电信联盟ITU-T SG17会议中获全票通过,成为全球首个区块链智能合约安全领域的国际标准。

这也标志着以腾讯云为代表的中国科技公司在区块链领域的安全技术首次受到国际高度认可,可为中国企业在国际安全技术标准领域争取到更多话语权。 

ITU-T国际电信联盟是全球主流的通信标准组织,成立于1865年,是联合国下属机构,其成员包括190多个国家、700多个公司和学术机构,是全球范围内权威的国际标准化组织。其旗下的SG17研究组于2001年成立,主要负责通信安全研究与标准制定。

本次SG17会议共有来自32个国家的258名专家参加,提出21项标准新提案,共有11项提案获得立项,其中3项提案来自中国代表团,其中腾讯云提案项目全称为“Security  Requirements for Smart Contract Management (智能合约安全管理要求)”。

1.png 

腾讯云副总裁、腾讯安全平台部负责人杨勇表示,腾讯云区块链致力于打造数字经济时代的信任基石,而安全则是腾讯云区块链的基础要素,此次智能合约安全标准立项,为区块链产业生态建设提供了很重要的技术基础,未来腾讯云将与行业共建区块链安全标准,助力安全、高效的数字化万物互联。

填补智能合约标准空白,保障千亿区块链市场 

近年来区块链技术快速发展,有望成为下一代信息技术的重要基础,2017年,全球区块链技术市场规模已达到16.4亿美元,据《财富》旗下市场研究和咨询服务公司Fortune Business Insights预测,这一数字到2025年将会升至210.7亿美元。

伴随着区块链技术被应用到金融、政务、工业等关键信息领域,区块链的安全可控也受到各方重视,据区块链安全公司PeckShield (派盾)数据显示,2019 年共发生区块链安全事件 177 件,其中重大安全事件 63 起,损失达到 76.79 亿美元,较 2018 年增长约 60%。

智能合约是区块链的核心组件,也是确保数字资产安全、信息安全以及业务安全的基础。1995年,跨领域法律学者尼克·萨博(Nick Szabo)提出了智能合约这一术语,其实质是一种计算机协议,当智能合约的双方在区块链上产生资产交易时,就会触发代码自动完成具体的交易流程。如果智能合约在区块链上实现广泛运用,经济分工将在互联网时代进一步细化,全球范围内的各网络节点将直接对接需求和生产,更广泛的社会协同将得以实现。

与此同时,如果合约存在漏洞,则可能导致巨大的利益损失。这也是腾讯云在智能合约领域立项的重要意义——通过该智能合约安全标准的制定,可以在一定程度上,指导区块链业务规避此类风险。

腾讯云在智能合约安全性及安全漏洞方面,依托了Tencent Blade Team近年来在区块链智能合约安全的研究投入和成果产出,结合腾讯标准团队经验,形成了管理安全实践和标准范例,并结合腾讯云区块链安全产品的实践能力佐证。

在会议期间,腾讯云的展示得到与会专家的高度认可,并作为ITU目前在智能合约方面唯一获批通过的安全标准立项,填补了这一方向上的空白。

全票通过立项,拿下国际通信标准领域里程碑

腾讯云在ITU-T SG17会议中的提案能够全票通过,与长期的技术积累和充分的准备是分不开的。早在2019年11月,腾讯云就在国内CCSA(中国通信标准协会)TC8 WG4第60次工作会议上成功立项了《区块链智能合约安全技术要求》行业标准,并于2020年5月在全国信息安全国家标委会立项《区块链智能合约安全指南》。

作为国际通信标准组织,国际电信联盟ITU-T覆盖的范围更大,影响力也更强。信息安全一直是各国关注的重点,是ITU各项标准里较难立项的方向,历年来安全领域立项的通过率一直较低。

腾讯云此次标准立项,在经过国家工信部审核通过后,通过ITU官网提交立项申请,申请通过后又先后经过小组(SG)答辩、工作组协商会议和ITU-T全会三轮答辩,均得到了各国代表协商一致,以及成员单位的支持和认可,最终全票通过立项,标志着腾讯云代表中国科技公司在国际通信标准领域拿下一块里程碑。

本次仅有3项自中国代表团的提案获得通过,也可见ITU-T对立项的要求之高与意义重大,另外两项提案分别是来CNCERT在14/17的立项“X.sa-dsm*:Security architecture of data sharing management based on DLT”和华为在6/17的立项“X.ztd-iot*:Security methodology for zero-touch massive IoT deployment”。

腾讯云区块链目前在基础设施、底层平台、服务平台、技术组件等方面均有布局,并在供应链金融、可信存证、电子票据、数据要素、身份管理、供应链管理、数字资产等7大领域打造了完善的产品及应用解决方案。

同时,腾讯云还通过组建产业区块链联盟、区块链加速器等方式,积极推动产业区块链生态的建设。在国际知名调研机构Gartner近日发布的《区块链咨询与概念验证开发服务市场指南》报告中,腾讯云作为领先的产业区块链解决方案提供者入选“代表性的技术服务提供商”名单,是仅有的两家中国入选者之一。在行业分析机构ABI  Research公布的BaaS(BlockChain-as-a-Service,区块链即服务)领域竞争力排名中,腾讯云的区块链服务平台TBaaS也在中国区块链市场上位居第一位。

延伸阅读:

Tencent Blade Team是腾讯旗下的前瞻安全技术研究团队,此前曾突破性的报告了TensorFlow的前七个漏洞,引发业界对深度学习框架安全性问题的重视,并率先发现GoogleHome、亚马逊Echo等智能音箱的窃听风险,引发广泛关注。在人工智能、物联网、移动互联网、云虚拟化技术、区块链等前沿技术领域,Tencent Blade Team都积累了丰富的研究成果,目前已向Apple、Amazon、Google、Microsoft、Adobe等诸多国际知名公司报告并协助修复了200多个安全漏洞。

与此同时,Tencent Blade Team也将研究成果与腾讯丰富的业务场景相结合,致力于提升腾讯产品的安全性、守护用户安全。2019年底,Tencent Blade Team就深度参与了由腾讯牵头提出并成功立项的国际电信联盟标准《物联网异构设备的数据安全要求》,旨在为智慧城市物联网场景下的数据安全挑战提供必要的技术保障。与此同时,Tencent Blade Team还将团队多年的研究成果落地为《腾讯物联网安全技术规范》,并转化为企业标准,将安全能力开放给合作伙伴,共建安全生态。


Hijack Firefox for Android via Wi-Fi Network

澳大利亚安全研究人员Chris Moberly 近日发现了Firefox安卓浏览器中的安全漏洞,漏洞位于浏览器中的SSDP引擎中。攻击者利用该漏洞可以对连接到同一WiFi网络的安装了Firefox APP的安卓手机进行攻击。

漏洞概述

SSDP(Simple Service Discovery Protocol,简单服务发现协议)是一个基于UDP 的协议,是用于发现网络上其他设备的UPnP 的部分。在安卓系统中,有漏洞的Firefox 版本会定期发送SSDP 发现消息,寻找要投射的第二屏幕设备。这些消息会通过UDP 多播的方式发送给239.255.255.250,也就是说同一网络内的所有设备都可以看到这些消息。如果在本地局域网中运行wireshark,就可以看到相关的内容。Firefox 中的发现消息如下所示:

M-SEARCH * HTTP/1.1
Host: 239.255.255.250:1900
ST: roku:ecp
Man: "ssdp:discover"
MX: 3

本地网络上的所有设备都会响应多播并提供位置来获取UPnP 设备上的详细信息。然后,Firefox 会尝试访问这些信息,希望能够与UPnP 规范一致的XML 文件。

这也就是漏洞所在。攻击者可以运行一个恶意SSDP 服务器来响应指向安卓intent URI的伪造消息。然后,intent会被Firefox 应用激活。

比如,下面的响应消息就会迫使所有本地网络中安装Firefox 的安卓手机启动浏览器来访问http://example.com:

HTTP/1.1 200 OK
CACHE-CONTROL: max-age=1800
DATE: Tue, 16 Oct 2018 20:17:12 GMT
EXT:
LOCATION: intent://example.com/#Intent;scheme=http;package=org.mozilla.firefox;end
OPT: "http://schemas.upnp.org/upnp/1/0/"; ns=01
01-NLS: uuid:7f7cc7e1-b631-86f0-ebb2-3f4504b58f5c
SERVER: UPnP/1.0
ST: roku:ecp
USN: uuid:7f7cc7e1-b631-86f0-ebb2-3f4504b58f5c::upnp:rootdevice
BOOTID.UPNP.ORG: 0
CONFIGID.UPNP.ORG: 1

PoC

Moberly发布了PoC 漏洞利用和PoC视频来证明该漏洞。PoC 代码参见:

https://gitlab.com/gitlab-com/gl-security/security-operations/gl-redteam/red-team-tech-notes/-/blob/master/firefox-android-2020/ffssdp.py

PoC 视频如下所示:

https://gitlab.com/gitlab-com/gl-security/security-operations/gl-redteam/red-team-tech-notes/-/raw/master/firefox-android-2020/poc.mp4

漏洞影响和补丁

该漏洞允许用户点击同一网络内的其他用户手机上的链接。漏洞与RCE 漏洞有点类似,同一WiFi 网络内的攻击者可以在与用户零交互的情况下执行非授权的函数。但远程代码执行并不是可以执行任意的函数,而只能执行预先定义好的应用intent。

研究人员将该漏洞提交给了Firefox 团队,Firefox 团队在Firefox 安卓版本v80及更高版本中修复了该漏洞。如果你在安卓手机上使用Firefox 浏览器,那么建议更新到v80及更新的版本。 

更多技术细节参见:https://gitlab.com/gitlab-com/gl-security/security-operations/gl-redteam/red-team-tech-notes/-/tree/master/firefox-android-2020


Hijack Firefox for Android via Wi-Fi Network

澳大利亚安全研究人员Chris Moberly 近日发现了Firefox安卓浏览器中的安全漏洞,漏洞位于浏览器中的SSDP引擎中。攻击者利用该漏洞可以对连接到同一WiFi网络的安装了Firefox APP的安卓手机进行攻击。

漏洞概述

SSDP(Simple Service Discovery Protocol,简单服务发现协议)是一个基于UDP 的协议,是用于发现网络上其他设备的UPnP 的部分。在安卓系统中,有漏洞的Firefox 版本会定期发送SSDP 发现消息,寻找要投射的第二屏幕设备。这些消息会通过UDP 多播的方式发送给239.255.255.250,也就是说同一网络内的所有设备都可以看到这些消息。如果在本地局域网中运行wireshark,就可以看到相关的内容。Firefox 中的发现消息如下所示:

M-SEARCH * HTTP/1.1
Host: 239.255.255.250:1900
ST: roku:ecp
Man: "ssdp:discover"
MX: 3

本地网络上的所有设备都会响应多播并提供位置来获取UPnP 设备上的详细信息。然后,Firefox 会尝试访问这些信息,希望能够与UPnP 规范一致的XML 文件。

这也就是漏洞所在。攻击者可以运行一个恶意SSDP 服务器来响应指向安卓intent URI的伪造消息。然后,intent会被Firefox 应用激活。

比如,下面的响应消息就会迫使所有本地网络中安装Firefox 的安卓手机启动浏览器来访问http://example.com:

HTTP/1.1 200 OK
CACHE-CONTROL: max-age=1800
DATE: Tue, 16 Oct 2018 20:17:12 GMT
EXT:
LOCATION: intent://example.com/#Intent;scheme=http;package=org.mozilla.firefox;end
OPT: "http://schemas.upnp.org/upnp/1/0/"; ns=01
01-NLS: uuid:7f7cc7e1-b631-86f0-ebb2-3f4504b58f5c
SERVER: UPnP/1.0
ST: roku:ecp
USN: uuid:7f7cc7e1-b631-86f0-ebb2-3f4504b58f5c::upnp:rootdevice
BOOTID.UPNP.ORG: 0
CONFIGID.UPNP.ORG: 1

PoC

Moberly发布了PoC 漏洞利用和PoC视频来证明该漏洞。PoC 代码参见:

https://gitlab.com/gitlab-com/gl-security/security-operations/gl-redteam/red-team-tech-notes/-/blob/master/firefox-android-2020/ffssdp.py

PoC 视频如下所示:

https://gitlab.com/gitlab-com/gl-security/security-operations/gl-redteam/red-team-tech-notes/-/raw/master/firefox-android-2020/poc.mp4

漏洞影响和补丁

该漏洞允许用户点击同一网络内的其他用户手机上的链接。漏洞与RCE 漏洞有点类似,同一WiFi 网络内的攻击者可以在与用户零交互的情况下执行非授权的函数。但远程代码执行并不是可以执行任意的函数,而只能执行预先定义好的应用intent。

研究人员将该漏洞提交给了Firefox 团队,Firefox 团队在Firefox 安卓版本v80及更高版本中修复了该漏洞。如果你在安卓手机上使用Firefox 浏览器,那么建议更新到v80及更新的版本。 

更多技术细节参见:https://gitlab.com/gitlab-com/gl-security/security-operations/gl-redteam/red-team-tech-notes/-/tree/master/firefox-android-2020


上篇文章介绍了什么是嵌入式系统,嵌入式系统所面临的安全挑战以及攻击所带来的后果。考虑到这些问题,我们将在这篇文章中讨论对嵌入式软件,网络和设备的最常见攻击以及可能的保护措施。

嵌入式系统上的12种常见攻击

嵌入式系统的攻击可根据其目标分为三类:

image.png

对嵌入式系统的攻击类型

让我们找出针对这些类型攻击的关键特征,常见示例以及可能的对策。

基于软件的攻击

基于软件的攻击针对系统的大脑-管理设备的应用程序。对软件的成功攻击使黑客能够访问数据或获得对嵌入式系统的控制。

搜索软件设计和代码中的漏洞是最常见的攻击手段,因为可以远程进行此类攻击。而且,基于软件的攻击不需要黑客的专业知识,因为他们可以使用典型的攻击,例如部署恶意软件和暴力破解。

最普遍的基于软件的攻击包括:

· 恶意软件

· 暴力访问

· 内存缓冲区溢出

· 利用web服务

对嵌入式系统的恶意软件攻击与任何其他系统的工作方式相同:黑客部署了一段恶意代码,这些代码试图拦截存储在系统内部的数据,控制受害系统或对其进行破坏。通常,黑客会伪造固件更新,驱动程序或安全补丁来分发恶意软件。

为了防止此类攻击,可以实施以下保护措施:

· 应用黑名单方法,即开发人员为系统检测到的任何新恶意软件创建签名,并将这些签名添加到嵌入式系统固件中。当系统检测到具有已知签名的软件时,它将不会运行它。

· 使用白名单保护,为所有受信任的软件源创建特定的签名。这允许系统只运行具有正确签名的软件。

简单地说,强制访问凭证就是猜测凭证的过程。大多数嵌入式系统提供对图形用户界面(GUI)的远程访问,黑客可以利用该界面进行攻击。您可以通过使用强密码和限制登录尝试次数来防止暴力强制攻击。

内存缓冲区溢出是一种攻击,当黑客手动溢出分配给包含在嵌入式系统中移动的数据的内存缓冲区时。黑客部署的漏洞攻击使内存缓冲区充满了过多的数据。在这种情况下,嵌入式操作系统将把其中的一些数据记录到缓冲区旁边的内存段中。记录的数据可能包含外壳代码或其他漏洞,帮助黑客获取凭据并提升其访问权限。

通过创建一个沙箱将溢出的数据与系统隔离,可以解决此问题。请记住,您的沙箱必须非常复杂,因为许多现代漏洞利用了躲避沙箱的技术。

基于网络的攻击

这种攻击利用网络基础设施漏洞,也可以远程执行。利用这些漏洞,黑客可以侦听、拦截和修改嵌入式系统传输的流量。

让我们看一下最常见的基于网络的攻击:

· 中间人(MITM)

· 域名系统(DNS)中毒

· 分布式拒绝服务(DDoS)

· 会话劫持

· 信号干扰

MITM攻击用于拦截或更改嵌入式系统传输的数据。为了执行它,黑客改变两个设备的连接参数,以便在它们之间放置第三个设备。如果黑客可以获得或更改这两个设备使用的加密密钥,他们就可以以一种很难检测到的方式进行窃听,因为这不会对网络造成干扰。

通过加密传输的数据并使用Internet协议安全(IPsec)安全地传输密钥和数据,可以防止或阻止MITM攻击。

DNS中毒会迫使本地DNS服务器根据黑客的需求修改其记录。DNS服务器将可记忆的域名和主机名转换为相应的IP地址。通过使用DNS服务器的漏洞并毒害其缓存,黑客可以将流量从目标网站重新路由到任何其他地址。

域名系统安全扩展(DNS-SEC)协议通过对DNS发布或传输的任何数据进行数字签名来防止DNS服务器中毒。

DDoS是一种众所周知的攻击,它通过来自不同来源的请求使系统溢出从而使系统不可用。这种攻击很难阻止,因为请求量巨大。没有针对DDoS攻击的通用保护。但是,在您的嵌入式软件中添加防火墙以及流量分析和过滤算法将大大提高防止DDoS攻击或及时检测它们的机会。

会话劫持类似于MITM攻击,但目标不同:黑客侦听嵌入式系统流量以获取身份验证凭据。执行劫持的方法有多种:固定用户会话标识符,窃取会话缓存,跨站点脚本等等。

防范此类攻击的方法很经典:对凭据和可能包含凭据的任何数据进行加密,定期更改凭据,以及在会话结束时处置与会话相关的任何数据。 

信号干扰在无线网络中很常见。借助这种技术,黑客会在网络中造成干扰,从而干扰或扭曲来自设备的通信。根据干扰器的类型,它可能会阻塞信道上的任何通信,在目标设备传输数据时开始工作,或者在检测到特定数据包时被激活。这样的攻击会使嵌入式系统不可用。

要停止信号干扰,请部署适合您软件的抗干扰机制 [PDF]。请记住,此保护措施还将保护您的嵌入式系统免受其他设备造成的意外干扰。

旁道攻击

旁道攻击是利用嵌入式系统中的硬件安全缺陷来攻击它们。旁道攻击是最困难和最昂贵的攻击类型,因为它需要精确了解目标系统的硬件设计和物理可用性。为了进行侧信道攻击,黑客收集系统功耗、电磁泄漏、操作时间等信息。

因此,他们可以计算出系统和连接设备的内部操作,窃取密码密钥,甚至获得对系统的控制权。

以下是最常见的旁道攻击列表:

· 功率分析

· 定时攻击

· 电磁分析

功耗分析攻击需要对嵌入式系统进行物理访问,以便探测其连接并检测功耗的变化。这些变化取决于系统处理的数据,因此黑客可以检测到系统何时处理特定类型的信息并截获它。要防止此攻击,请使用数据屏蔽技术修改敏感内容,使其看起来像不重要的数据。

定时攻击是基于嵌入式系统操作的时间。它们用于获取信息,如应用的加密算法、指令时间和代码分支中的数据依赖差异、缓存访问时间等等。这种类型的攻击还需要对设备进行物理访问和对嵌入式系统架构的深入了解。

由于定时攻击强烈依赖于线性和可预测的软件操作,您可以通过使用随机数对空闲周期中的活动进行重新安排来防止此类攻击。基于此对嵌入式系统的时序分析将具有极大的挑战性。

电磁分析为黑客提供了另一种无需黑客攻击就能查看嵌入式软件的方法。黑客可以使用电磁分析来记录和分析设备的发射,找出其加密操作,甚至提取秘密密钥。这是最耗时且成本最高的攻击类型,因为它需要:

· 物理上接近嵌入式系统

· 有关系统嵌入到的设备的布局的信息

· 与其他设备隔离以保护系统免受电磁干扰

硬件设计师可以通过降低信号强度或增加物理保护(例如使用某些类型的胶水或电路和电线屏蔽)来使收集电磁信号变得困难。随机性和加密过程的中断也是对抗电磁分析的有效措施。

我们上面讨论的嵌入式系统的网络安全措施可以帮助您预防或阻止特定类型的攻击。在下一部分中,我们提供了11条建议来有效保护嵌入式硬件和软件。

保护嵌入式系统的11个最佳实践

在开始编码之前,请研究嵌入式软件开发的行业标准,以发现有效的安全措施和开发实践。例如,注意: 

· OWASP嵌入式应用程序安全性

· IEEE标准

· NIST 为物联网设备制造商提供的基础网络安全活动 [PDF]

· IPA的嵌入式系统开发过程参考指南 [PDF]

通过以下实践,您可以在从设计到支持的所有开发阶段使您的保护更加可靠:

image.png

提高嵌入式系统安全性的11个最佳实践

设计和软件配置

1.使用安全的语言。在编写第一行代码之前,请针对您选择的语言研究嵌入式软件开发标准。例如,如果您要使用C或C ++,请首先学习MISRA-C / C ++。

2.启用安全启动。此功能允许微处理器在执行固件之前验证加密密钥和固件的位置。为了增强这种保护,您还可以启用处理器的受信任执行环境功能,该功能在微处理器中创建一个安全区域来存储固件。

3.禁用不安全和不必要的服务。要定义此类服务,您需要分析系统的操作。通常,此类服务的列表包括Telnet和琐碎文件传输协议,调试代理,开放端口等。

内存和应用程序安全

1.限制内存分配。实现一个内存管理单元,为缓冲区、操作系统和应用程序分配足够的内存。内存管理单元有助于保持嵌入式系统运行的平衡,并防止内存缓冲区溢出。此外,尽可能将内存切换到只读模式。

2.创建分区。将嵌入式系统的重要部分(如操作系统、GUI和安全应用程序)划分为不同的分区,有助于将它们彼此隔离并包含攻击。分区可以是物理分区和虚拟分区。

通讯安全

1.实施访问控制。不受保护地访问嵌入式系统的任何部分都是对黑客的公开邀请。要保护您的访问点,请使用强凭据并对其进行加密,实现最小权限原则,并尽可能启用身份验证。

2.保护通信通道。实现IPsec、DNS-SEC、SSH或SSL协议,并使用VPN保护与嵌入式系统的任何通信。部署防火墙来过滤流量也是一个很好的做法。

数据保护

1.加密所有内容。所有固件更新、传输和处理的数据以及存储的凭证都必须加密。使用加密签名来验证从可信来源获得的文件并检测可疑的修改。

2.混淆目标代码。混淆是一个过程,使你的代码纠缠在一起,对黑客来说不清楚,但在嵌入式系统中是可执行的。甚至可以通过混淆来加速代码的执行。这项措施将使黑客更难对你的代码进行反向工程。

发布和支持

1.进行端到端威胁评估。完整的安全评估包括:

a.从设备制造商,软件开发人员和最终用户的角度执行完整的生命周期分析并识别潜在威胁

b.创建风险矩阵,并通过每个可能的渠道估算攻击的可能性和成功率

c.自己模拟黑客攻击或进行黑盒渗透测试

2.定期更新软件。无论为旧的嵌入式系统开发软件有多么困难,这样做总是有益的。在新的软件版本中,您可以推出其他安全措施,以抵消新型攻击或修补漏洞(如果在产品发布后发现一个漏洞)。别忘了添加如上所述的黑名单和白名单保护。这些方法将阻止从不受信任的来源安装软件。

有了这些实践,您就可以使网络犯罪分子更难为嵌入式系统盗用您的软件。 

结论

为嵌入式系统开发软件是一个很大的挑战。开发人员必须实现所有必需的功能,同时要考虑多个设备的限制并保护软件免受攻击。威胁可能来自不同的来源和渠道,因此在微处理器和少量内存中安装针对所有这些威胁的保护似乎是不可能的。

上篇文章介绍了什么是嵌入式系统,嵌入式系统所面临的安全挑战以及攻击所带来的后果。考虑到这些问题,我们将在这篇文章中讨论对嵌入式软件,网络和设备的最常见攻击以及可能的保护措施。

嵌入式系统上的12种常见攻击

嵌入式系统的攻击可根据其目标分为三类:

image.png

对嵌入式系统的攻击类型

让我们找出针对这些类型攻击的关键特征,常见示例以及可能的对策。

基于软件的攻击

基于软件的攻击针对系统的大脑-管理设备的应用程序。对软件的成功攻击使黑客能够访问数据或获得对嵌入式系统的控制。

搜索软件设计和代码中的漏洞是最常见的攻击手段,因为可以远程进行此类攻击。而且,基于软件的攻击不需要黑客的专业知识,因为他们可以使用典型的攻击,例如部署恶意软件和暴力破解。

最普遍的基于软件的攻击包括:

· 恶意软件

· 暴力访问

· 内存缓冲区溢出

· 利用web服务

对嵌入式系统的恶意软件攻击与任何其他系统的工作方式相同:黑客部署了一段恶意代码,这些代码试图拦截存储在系统内部的数据,控制受害系统或对其进行破坏。通常,黑客会伪造固件更新,驱动程序或安全补丁来分发恶意软件。

为了防止此类攻击,可以实施以下保护措施:

· 应用黑名单方法,即开发人员为系统检测到的任何新恶意软件创建签名,并将这些签名添加到嵌入式系统固件中。当系统检测到具有已知签名的软件时,它将不会运行它。

· 使用白名单保护,为所有受信任的软件源创建特定的签名。这允许系统只运行具有正确签名的软件。

简单地说,强制访问凭证就是猜测凭证的过程。大多数嵌入式系统提供对图形用户界面(GUI)的远程访问,黑客可以利用该界面进行攻击。您可以通过使用强密码和限制登录尝试次数来防止暴力强制攻击。

内存缓冲区溢出是一种攻击,当黑客手动溢出分配给包含在嵌入式系统中移动的数据的内存缓冲区时。黑客部署的漏洞攻击使内存缓冲区充满了过多的数据。在这种情况下,嵌入式操作系统将把其中的一些数据记录到缓冲区旁边的内存段中。记录的数据可能包含外壳代码或其他漏洞,帮助黑客获取凭据并提升其访问权限。

通过创建一个沙箱将溢出的数据与系统隔离,可以解决此问题。请记住,您的沙箱必须非常复杂,因为许多现代漏洞利用了躲避沙箱的技术。

基于网络的攻击

这种攻击利用网络基础设施漏洞,也可以远程执行。利用这些漏洞,黑客可以侦听、拦截和修改嵌入式系统传输的流量。

让我们看一下最常见的基于网络的攻击:

· 中间人(MITM)

· 域名系统(DNS)中毒

· 分布式拒绝服务(DDoS)

· 会话劫持

· 信号干扰

MITM攻击用于拦截或更改嵌入式系统传输的数据。为了执行它,黑客改变两个设备的连接参数,以便在它们之间放置第三个设备。如果黑客可以获得或更改这两个设备使用的加密密钥,他们就可以以一种很难检测到的方式进行窃听,因为这不会对网络造成干扰。

通过加密传输的数据并使用Internet协议安全(IPsec)安全地传输密钥和数据,可以防止或阻止MITM攻击。

DNS中毒会迫使本地DNS服务器根据黑客的需求修改其记录。DNS服务器将可记忆的域名和主机名转换为相应的IP地址。通过使用DNS服务器的漏洞并毒害其缓存,黑客可以将流量从目标网站重新路由到任何其他地址。

域名系统安全扩展(DNS-SEC)协议通过对DNS发布或传输的任何数据进行数字签名来防止DNS服务器中毒。

DDoS是一种众所周知的攻击,它通过来自不同来源的请求使系统溢出从而使系统不可用。这种攻击很难阻止,因为请求量巨大。没有针对DDoS攻击的通用保护。但是,在您的嵌入式软件中添加防火墙以及流量分析和过滤算法将大大提高防止DDoS攻击或及时检测它们的机会。

会话劫持类似于MITM攻击,但目标不同:黑客侦听嵌入式系统流量以获取身份验证凭据。执行劫持的方法有多种:固定用户会话标识符,窃取会话缓存,跨站点脚本等等。

防范此类攻击的方法很经典:对凭据和可能包含凭据的任何数据进行加密,定期更改凭据,以及在会话结束时处置与会话相关的任何数据。 

信号干扰在无线网络中很常见。借助这种技术,黑客会在网络中造成干扰,从而干扰或扭曲来自设备的通信。根据干扰器的类型,它可能会阻塞信道上的任何通信,在目标设备传输数据时开始工作,或者在检测到特定数据包时被激活。这样的攻击会使嵌入式系统不可用。

要停止信号干扰,请部署适合您软件的抗干扰机制 [PDF]。请记住,此保护措施还将保护您的嵌入式系统免受其他设备造成的意外干扰。

旁道攻击

旁道攻击是利用嵌入式系统中的硬件安全缺陷来攻击它们。旁道攻击是最困难和最昂贵的攻击类型,因为它需要精确了解目标系统的硬件设计和物理可用性。为了进行侧信道攻击,黑客收集系统功耗、电磁泄漏、操作时间等信息。

因此,他们可以计算出系统和连接设备的内部操作,窃取密码密钥,甚至获得对系统的控制权。

以下是最常见的旁道攻击列表:

· 功率分析

· 定时攻击

· 电磁分析

功耗分析攻击需要对嵌入式系统进行物理访问,以便探测其连接并检测功耗的变化。这些变化取决于系统处理的数据,因此黑客可以检测到系统何时处理特定类型的信息并截获它。要防止此攻击,请使用数据屏蔽技术修改敏感内容,使其看起来像不重要的数据。

定时攻击是基于嵌入式系统操作的时间。它们用于获取信息,如应用的加密算法、指令时间和代码分支中的数据依赖差异、缓存访问时间等等。这种类型的攻击还需要对设备进行物理访问和对嵌入式系统架构的深入了解。

由于定时攻击强烈依赖于线性和可预测的软件操作,您可以通过使用随机数对空闲周期中的活动进行重新安排来防止此类攻击。基于此对嵌入式系统的时序分析将具有极大的挑战性。

电磁分析为黑客提供了另一种无需黑客攻击就能查看嵌入式软件的方法。黑客可以使用电磁分析来记录和分析设备的发射,找出其加密操作,甚至提取秘密密钥。这是最耗时且成本最高的攻击类型,因为它需要:

· 物理上接近嵌入式系统

· 有关系统嵌入到的设备的布局的信息

· 与其他设备隔离以保护系统免受电磁干扰

硬件设计师可以通过降低信号强度或增加物理保护(例如使用某些类型的胶水或电路和电线屏蔽)来使收集电磁信号变得困难。随机性和加密过程的中断也是对抗电磁分析的有效措施。

我们上面讨论的嵌入式系统的网络安全措施可以帮助您预防或阻止特定类型的攻击。在下一部分中,我们提供了11条建议来有效保护嵌入式硬件和软件。

保护嵌入式系统的11个最佳实践

在开始编码之前,请研究嵌入式软件开发的行业标准,以发现有效的安全措施和开发实践。例如,注意: 

· OWASP嵌入式应用程序安全性

· IEEE标准

· NIST 为物联网设备制造商提供的基础网络安全活动 [PDF]

· IPA的嵌入式系统开发过程参考指南 [PDF]

通过以下实践,您可以在从设计到支持的所有开发阶段使您的保护更加可靠:

image.png

提高嵌入式系统安全性的11个最佳实践

设计和软件配置

1.使用安全的语言。在编写第一行代码之前,请针对您选择的语言研究嵌入式软件开发标准。例如,如果您要使用C或C ++,请首先学习MISRA-C / C ++。

2.启用安全启动。此功能允许微处理器在执行固件之前验证加密密钥和固件的位置。为了增强这种保护,您还可以启用处理器的受信任执行环境功能,该功能在微处理器中创建一个安全区域来存储固件。

3.禁用不安全和不必要的服务。要定义此类服务,您需要分析系统的操作。通常,此类服务的列表包括Telnet和琐碎文件传输协议,调试代理,开放端口等。

内存和应用程序安全

1.限制内存分配。实现一个内存管理单元,为缓冲区、操作系统和应用程序分配足够的内存。内存管理单元有助于保持嵌入式系统运行的平衡,并防止内存缓冲区溢出。此外,尽可能将内存切换到只读模式。

2.创建分区。将嵌入式系统的重要部分(如操作系统、GUI和安全应用程序)划分为不同的分区,有助于将它们彼此隔离并包含攻击。分区可以是物理分区和虚拟分区。

通讯安全

1.实施访问控制。不受保护地访问嵌入式系统的任何部分都是对黑客的公开邀请。要保护您的访问点,请使用强凭据并对其进行加密,实现最小权限原则,并尽可能启用身份验证。

2.保护通信通道。实现IPsec、DNS-SEC、SSH或SSL协议,并使用VPN保护与嵌入式系统的任何通信。部署防火墙来过滤流量也是一个很好的做法。

数据保护

1.加密所有内容。所有固件更新、传输和处理的数据以及存储的凭证都必须加密。使用加密签名来验证从可信来源获得的文件并检测可疑的修改。

2.混淆目标代码。混淆是一个过程,使你的代码纠缠在一起,对黑客来说不清楚,但在嵌入式系统中是可执行的。甚至可以通过混淆来加速代码的执行。这项措施将使黑客更难对你的代码进行反向工程。

发布和支持

1.进行端到端威胁评估。完整的安全评估包括:

a.从设备制造商,软件开发人员和最终用户的角度执行完整的生命周期分析并识别潜在威胁

b.创建风险矩阵,并通过每个可能的渠道估算攻击的可能性和成功率

c.自己模拟黑客攻击或进行黑盒渗透测试

2.定期更新软件。无论为旧的嵌入式系统开发软件有多么困难,这样做总是有益的。在新的软件版本中,您可以推出其他安全措施,以抵消新型攻击或修补漏洞(如果在产品发布后发现一个漏洞)。别忘了添加如上所述的黑名单和白名单保护。这些方法将阻止从不受信任的来源安装软件。

有了这些实践,您就可以使网络犯罪分子更难为嵌入式系统盗用您的软件。 

结论

为嵌入式系统开发软件是一个很大的挑战。开发人员必须实现所有必需的功能,同时要考虑多个设备的限制并保护软件免受攻击。威胁可能来自不同的来源和渠道,因此在微处理器和少量内存中安装针对所有这些威胁的保护似乎是不可能的。