嵌入式安全复习

小浩 Lv3

1.以下不是嵌入式系统应用领域的是( A )

Α.通用软件

B.工业控制

C.消费类电子产品

D.机器人

  1. 以下哪个不是嵌入式系统设计的主要目标?( D )

A、低成本

B、低功耗

C、实时要求高

D、超高性能

  1. 以下不是嵌入式系统应用领域的是( C )

Α.移动电话

B.汽车电子

C.办公系统

D.军工航天

以下哪个鉴别方法具有最高的准确率,从而可以代替电子银行中所使用的个人标识号(PIN)?

A 虹膜检测 B 声音检测 C 掌纹检测 D 指纹检测

  1. 嵌入式系统有别于其他系统的最大特点是( A )。

A、嵌入专用

B、高可靠

C、低功耗

D、低成本

  1. 下面哪个系统不属于嵌入式系统( D )。

A、MP3 播放器 C、“银河玉衡”核心路由器

B、GPS 接收机 D、“银河”巨型计算机

  1. 看门狗(Watch Dog)是嵌入式 系统中一种常用的保证系统可靠性的技术,会产生看门狗中断的是(D)。
    A. 软件喂狗
    B. 处理器温度过高
    C. 外部中断
    D. 看门狗定时器超时

  2. 以下( C )属于生物识别中的次级生物识别技术。

A. 网膜识别 B. DNA C. 语音识别 D. 指纹识别

  1. 以下( C )不属于AAA系统提供的服务类型。

A. 认证 B. 鉴权

C. 访问 D. 审计

  1. 以下哪种虚拟化技术需要对客户机操作系统加入特定的虚拟化指令?(B)

A. 全虚拟化 B. 半虚拟化 C. 软件辅助虚拟化 D. 硬件辅助虚拟化

  1. 基于模拟执行的CPU虚拟化为客户操作系统的运行提供了与物理CPU完全一致的硬件环境,该虚拟化属于?(A)

A. 完全虚拟化

B. 半虚拟化

C. 混合虚拟化

D. CPU虚拟化

  1. 设计实时操作系统时,首先应该考虑系统的(B)。

A.可靠性和灵活性

B.实时性和可靠性

C.分配性和可靠性

D.灵活性和实时性

  1. 从层次结构来看,嵌入式系统包括( D )。

A、硬件层 C、实时操作系统和应用软件

B、板级支持包 D、以上都是

  1. 和PC机系统相比,下列哪点不是嵌入式系统所特有的:( C )

A、系统内核小 B、专用性强

C、可执行多任务 D、系统精简

  1. 嵌入式系统的安全在关键性基础设施中尤为重要,以下不属于关键性基础设施的是(D)

A电力网络 B交通 C医疗 D智能家居

  1. 关于嵌入式系统的复杂度,说法错误的是

A汽车上各类系统拥有的微处理器有几十到上百个。

B嵌入式操作系统越来越复杂,比如嵌入式Linux和Windows的代码超过1亿行。

C系统功能和组件之间的交互呈指数型增长,硬件/软件数量的线性增长使得整体复杂度远远超过了线性的增长趋势。

D 嵌入式系统越复杂,其中的漏洞。。。。

  1. 内存保护是保障嵌入式系统鲁棒性的基本要求,实现的重要机制是虚拟内存。关于虚拟内存的作用,说法错误的是(C)

A隐藏了代码和数据的物理地址,使得攻击者很难发觉内在的操作和状态

B 是作为内存使用的一部分硬盘空间

C 是数据交换的缓冲区,帮助硬盘更快地工作。

D 可以选择性将内存页映射和去映射到一个虚拟的地址空间

  1. 在常用的身份认证方式中,( B )是采用软硬件相结合、一次一密的强双因子认证模式,具有安全性、移动性和使用的方便性。

A. 智能卡认证 B. 动态令牌认证

C. USB Key D. 用户名及密码方式认证

  1. 数据签名的( A )功能是指签名可以证明是签字者而不是其他人在文件上签字。

A. 签名不可伪造 B. 签名不可变更

C. 签名不可抵赖 D. 签名是可信的

  1. 关于自主访问控制的说法错误的是 C

A 是指用户有权对自身所创建的访问对象进行各类权限的更改

B 一般用在对安全性要求不高的场合

C 由于安全性较低,现在已经很少使用

D Linux文件的管理模式就是采用了自主访问控制。

  1. 以下哪个不是 Docker 虚拟化相比传统虚拟化具有的优点?(B)

A. 操作启动快

B. 代码简单

C. 轻量级虚拟化

D. 开源免费

  1. 与设计测试用例无关的文档是(A)。

A)项目开发计划 B)需求规格说明书

C)设计说明书 D)源程序

  1. 下列几种逻辑覆盖标准中,查错能力最强的是(D)。

A)语句覆盖 B)判定覆盖

C)条件覆盖 D)条件组合覆盖

  1. 对程序的测试最好由( )来做,对程序的调试最好由谁来做(B)。

A)程序员 第三方测试机构

B)第三方测试机构 程序员

C)程序开发组 程序员

D)程序开发组 程序开发组

  1. 软件生存周期过程中,修改错误代价最大的阶段是(D)。

A)需求阶段B)设计阶段

C)编程阶段D)发布运行阶段

  1. 2型虚拟机管理程序相比1型虚拟机管理程序最本质的区别是(D)

A 前者速度慢于后者 B 前者支持的应用多于后者

C 前者的可移植性好 D 前者的安全性取决于宿主机操作系统的安全性。

  1. 下面哪个不是UML中的静态视图( A )

A.状态图 B.用例图

C.对象图 D.类图

  1. 在一个“订单输入子系统”中,创建新订单和更新订单都要核查用户账号是否正确,则用例“创建新订单”、“更新订单”与用例“核查用户账号”之间的关系是( A )

A 包含 B实现 C扩展 D泛化

  1. 项目质量管理的最终责任由谁来承担_____D_____。

A. 项目开发人员B. 采购经理C. 质量经理D. 项目经理

  1. 增加有益的活动过程减少没有价值的活动过程是哪类质量活动__________。( D)

A. 质量保证 B. 质量规划 C. 质量控制 D. 质量改进

  1. 在项目进行过程中,老板突然有个紧急的通知告知项目经理,要求项目经理告诉团队成员,这时项目经理应该采取__________沟通方式。(C)

A 口头 B. 书面 C. 正式 D. 检索

  1. 为了更好的管理变更,需要定义项目基线,关于基线的描述,正确的是________。( B)

A. 不可以变化的 B. 可以变化,但是必须通过基线变更控制流程处理

C. 所有的项目必须定义基线 D. 基线发生变更时,必须修改需求

  1. 质量控制是__________。(B)

A. 对每个工作包增加工作时间 B. 项目生存期的各个阶段都需要实施的

C. 只需要做一次 D. 只有大的项目才需要的

  1. 常见的安全编码问题不包括A

A.认证绕过B.缓冲区溢出C.命令注入D.整数溢出

  1. 下列攻击方式中,(A)不是利用TCP/IP漏洞发起的攻击。

A.SQL注入攻击

B.Land攻击

C.Ping of Death

D.Teardrop攻击

  1. 下列哪一项不是SSL所提供的服务(D)

A用户和服务器的合法认证

B 加密数据以隐藏被传送的数据

C维护数据完整性

D保留通信双方的通信时的基本信息

  1. 防止重放攻击最有效地方法是(B)

A对用户账户和密码进行加密

B使用“一次一密”加密方式

C经常修改用户账户名称和密码

D使用复杂的账户名称和密码

  1. 许多黑客攻击都是利用软件实现中的缓冲区溢出的漏洞,对此最可靠的解决方案是( C)

A 安装防火墙 B 安装入侵检测系统 C 给系统安装最新的补丁 D安装防病毒软件

  1. 以下哪一项不属于XSS跨站脚本漏洞危害? C

A 钓鱼欺骗 B 身份盗用 C SQL数据泄露 D 网站挂马

  1. 以下哪一项不是黑客在入侵踩点(信息搜集)阶段采取的技术?(D)

A 公开信息的合理利用及分析

B IP及域名信息收集

C 主机及系统信息收集

D 使用sqlmap验证SQL注入漏洞是否存在

  1. 以下哪个攻击不在网络层 D

A IP欺诈 B Teardrop C Smurf D SQL注入

  1. 下列方法中不能用来进行DNS欺骗的是(D)

A 缓存感染 B DNS信息劫持 C DNS重定向 D 路由重定向

  1. 会话劫持的这种攻击形式破坏了下列哪一项内容(D)

A 网络信息的抗抵赖性 B 网络信息的保密性

C 网络服务的可用性D 网络信息的完整性

  1. 攻击组通过收集数据包,分析得到共享密钥,然后将一个虚假AP放置到无线网络中,截获用户和AP传输的所有数据,还可以对双方的传输数据任意进行修改,这种攻击方式称为(D)。

A 会话劫持攻击 B 拒绝服务攻击 C 漏洞扫描攻击 D 中间人攻击

  1. 可信计算技术不能(D)

A、确保系统具有免疫能力,从根本上阻止病毒和黑客等软件的攻击

B、确保密钥操作和存储的安全

C、确保硬件环境配置、操作系统内核、服务及应用程序的完整性

D、使计算机具有更高的稳定性

  1. 在电子文档安全管理新技术方面,可信计算技术的安全目标是(ACDE)。

A. 进不去

B. 进得去

C. 看不见

D. 拿不走

E. 赖不掉

  1. 以下关于可信计算说法错误的是(D)

A. 可信的主要目的是要建立起主动防御的信息安全保障体系

B. 可信计算机安全评价标准(TCSEC)中第一次提出了可信计算机和可信计算基的概念

C. 可信的整体框架包含终端可信、终端应用可信、操作系统可信、网络互联可信、互联网交易等应用系统可信

D. 可信计算平台出现后会取代传统的安全防护体系和方法

  1. 除了(D)以外,下列都属于公钥的分配方法

A公用目录表 B公钥管理机构 C公钥证书 D密码传输

  1. CBC模式加密的密文分组有一个分组损坏后,只要密文分组的长度没有发生变化,则解密时最多只会有(B)各分组收到数据损坏的影响。

A 1 B 2 C 3 D 没有影响

  1. 在IPSEC VPN中,隧道模式主要应用在以下哪个场景中(C)

A.主机与主机之间B.主机与安全网关之间C.安全网关之间D.隧道模式与传输模式之间

  1. 关于黑白名单的说法,正确的是(ABCD)

A由于嵌入式系统的专用性,为方便管理,远程连接的ip地址经常限定为特定的一个或地址段,此时适合用白名单方式。

B白名单比黑名单有更严的限制。

C正常情况下,往往采用黑白名单结合的形式进行访问控制。

D杀毒软件一般采用黑名单的方式进行病毒查杀。

  1. 关于”嵌入式系统安全”的说法正确的是(ABCD)

A “没有所谓的绝对安全”的说法是有害的,如果一开始就有这种广泛而负面的主张,开发人员就没有充分的理由去实现最好的安全产品。

B 有可能实现绝对的安全,绝对安全只适用于具体的安全策略。

C 组件隔离是嵌入式系统一项基本的安全策略,也是实现更高级别的系统安全策略的基础。

D 大多数安全策略都可以映射到一个或多个保密性、完整性和实用性(CIA)的保障因素。

  1. 传统 IT 系统基础架构经过多年的发展,普遍面临以下哪些突出问题?(ABC)

A. IT 资源部署周期长,难以快速满足业务需求

B. 机房空间、电力供应紧张

C. 硬件资源利用率低和资源紧张并存

D. 资源全局共享,系统整体可用性高

  1. 在如下(ABC)情况下,可以考虑使用重构

A、修改错误时

B、复审程序代码时

C、添加功能时

D、需求分析时

  1. Android开发过程中,下面哪些开发习惯可能导致安全漏洞(AD)

A 在程序代码中插入Log()方法输出敏感信息方便调试

B 在应用正式版Andoridmanifest.xml中设置android:debuggable=”false”

C 使用SecureRandom时使用安全的方法设置seed

D 设置应用配置文件为任意用户可读写

  1. Android 应用中导致HTTPS中间人攻击的原因有?(ABC)

A 没有对SSL证书校验

B 没有对主机名进行校验

C SSL证书被泄露

D 使用WIFI连接网络

  1. iphone手机“越狱”是指( )

A.带着手机逃出去B.通过不正常手段获得苹果手机操作系统的最高权限

C.对操作系统升级D.修补苹果手机的漏洞

  1. 以下对UML视图说法正确的有(ABCD)

A、结构分类描述了系统中的结构成员及其相互关系。类元包括类、用例、构件和节点。类元为研究系统动态行为奠定了基础。类元视图包括静态视图、用例视图和实现视图。

B、动态行为描述了系统随时间变化的行为。待业用从静态视图中抽取的瞬间值的变化来描述。动态行为视图包括状态机视图、活动视图和交互视图

C、模型管理说明了模型的分层组织结构。包是模型的基本组织单元。特殊的包还包括模型和子系统。模型管理视图跨越了其他视图并根据系统开发和配置组织这些视图。

D、UML还包括多种具的扩展能力的组件,这些扩展能力有限但很有用。这些组件包括约束、构造型和标记值,它们适用于所有的视图元素

  1. 僵尸程序可以破坏系统的完整性和可用性,典型应用有(ABCDE)

A分布式拒绝服务攻击

B发送垃圾邮件

C网络嗅探

D Keylogging

E传播其他恶意软件

判断:

  1. 密钥管理主要研究如何在安全的环境中,为用户分发密钥信息,使得密钥能够安全正确并有效地发挥作用(T)

  2. 黑客一般会绕过服务器安全控制部分,侵入一个相对较弱的客户端,然后从该客户端进入服务器中心。(T)

  3. 沙箱在物理主机上表现为多个进程,因而可以在有效监控恶意代码行为的前提下,保障主机上地其他程序或者数据不被破坏(F)

  4. 最小权限,纵深防御是网络安全的原则之一。T

  5. CFB模式在加密时必须有一个初始向量,而且可以用明文传给接收方。T

  6. 一次一密的随机密钥序列密码在理论上是不可破译的T

  7. D-H协议的安全性源于有限域上计算离散对数比计算指数更加困难。T

  8. 保密通信中,初始向量IV的功能是抗重放攻击。T

  9. 带SSL保护的HTTP链接可以抵御中间人攻击(F)

  10. 中间人攻击不需要成功入侵客户端,一般通过拦截客户端,服务端信息,经修改后再返回对方,引导客户端进入错误的目标服务器,或模仿有效链接达到欺骗用户的目的。T

  11. 飞机内部包含的飞行控制系统,空中交通防撞系统(TCAS),通信导航监视系统,电子飞行包系统,机载娱乐系统等都属于嵌入式系统,因此飞机本身也算嵌入式系统。(F)

  12. 组件隔离是嵌入式系统一项基本的安全策略,也是实现更高级别的系统安全策略的基础。(T)

  13. 编写越紧凑的代码越能产生高效的机器码。(F)

  14. 编码规范的目的就是为了使代码看起来整齐。(F)

  15. DNS缓存污染也被称为DNS缓存中毒,是一种传播在DNS服务器之间的病毒。(T)

单内核与多内核特点对比
填空:
  1. CPU 特权指令的虚拟化有(模拟执行和操作系统辅助 ) 两种方法。

  2. 利用虚拟机管理程序提供的虚拟机之间的隔离特性搭建的测试环境叫(环境沙箱

  3. 系统虚拟化的应用:改善硬件利用率,分时共享,测试,开发新的操作系统架构等

  4. 强制访问控制是指由系统(**通过专门设置的系统安全员**)对用户所创建的对象进行统一的强制性控制,创建者用户,在创建一个对象后,也可能无权访问该对象

  5. 现代对称密码的设计基础是扩散混淆

  6. 当前关键嵌入式系统的安全隐患包括:软硬件复杂度,网络连接,恶意攻击威胁

  7. 身份认证是计算机网络系统的用户在进入系统或访问不同(保护级别)的系统资源时,系统确认该用户的身份是否 (真实)、(合法)和 (唯一) 的过程。

  8. 访问控制模式有三种模式,即 ( 自主访问控制DAC)、(强制访问控制MAC ) 和 (基于角色的访问控制RBAC ) 。

  9. 访问控制包括三个要素,即 (主体) 、(客体) 和 (控制策略) 。访问控制的主要内容包括 (认证) 、(控制策略实现) 和 (审计) 三个方面。

  10. 数字签名是指用户用自己的 (私钥 )对原始数据进行(加密 ) 所得到 (特殊数字串 ) ,专门用于保证信息来源的 (真实性 ) 、数据传输的(完整性 ) 和 (防抵赖性 ) 。

  11. 强制访问控制可以用来将系统资源分成不同地安全域,以便不在安全域中的应用程序无法访问未授权的资源。然而,在同一安全域中,自主访问控制则可以用来提供更灵活的资源共享。

  12. 访问控制针对嵌入式系统中的进程和资源采用(最小权限)原则。

  13. 密钥的种类有:基本密钥(初始密钥),会话密钥,密钥加密密钥,主机主密钥

  14. 密钥管理包括密钥的生成,存储,分配,启用与停用,控制,更新,撤销与销毁等诸多方面

简答:

2高可信软件工程原则

1)最少的实现

2)组件化架构

3)最小权限

4)安全开发过程

5)独立专家验证

多重独立安全等级架构

包括信息流,数据隔离,损害控制,周期性处理,一直激活,防篡改,可评估

嵌入式系统设计师如何制定性价比高的安全策略?

“系统设计师”首先要确定哪些威胁是可实行地,然后再确定相比于某种特定威胁下资源泄露所付出的代价,采取什么样的安全策略更为经济。

访问控制的目标

一、 防止非法的主体进入受保护的资源。

二、允许合法用户访问受保护的资源。

三、防止合法的用户对受保护的资源进行非授权的访问。

如何提高循环的效率?

循环嵌套要外小内大;提取与循环无关的表达式;消除循环终止判断时的方法调用;捕获异常放到循环外部。

3.何谓软件配置管理?简述其功能和目标。

软件配置管理是一套规范、高效的管理软件开发及各种中间软件产品的方法和规则。
配置管理的主要功能是记录软件产品的演化过程,实施有效的版本管理和变更管理,最终保证软件产品的完整性、一致性、追朔性、可控性。
配置管理的基本目标是:有计划地对各种项目产品进行标识管理;让各种项目产品能够被识别、控制和获取;让各种项目产品的更改得到有效控制;让相关组织或个人及时了解软件基线的状态和内容。

现代静态源码分析器将检查到常见错误的部分列表:

潜在的NULL指针的解引用

越界访问(例如,数组或动态分配的缓冲区);即缓冲区溢出。

对潜在只读内存的写操作

对潜在的未初始化对象的读操作

资源泄露,如内存泄露,文件描述符泄露

对已经释放内存的使用

超范围内存使用(从子程序返回自变量的地址)

设置子程序返回值的失败

缓冲和数组下溢

嵌入式远程管理的基本防御手段包括哪些?

1、确保远程管理计算机与因特网不相连。

2、远程嵌入式系统必须认证管理计算机,IP地址采用白名单机制。

3、在建立远程连接之前,管理计算机应对操作员进行强身份认证,

4、使用TLS/SSL或IKE/IPSec的标准网络安全协议,保护远程管理命令和数据的完整性和保密性。

什么是内存泄漏

内存泄漏 (memory leak) 是指由于疏忽或错误造成了程序未能释放掉不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制,因而造成了内存的浪费。

栈溢出的原因及危害。

其产生的原因是输入数据时,由于没有进行边界检查,导致输入的数据的数量超过了堆栈预留的存储空间,最终覆盖了堆栈中的返回地址,如果覆盖返回地址的是一个攻击程序的地址,则导致去执行这个恶意程序。

C 语言内存泄露10例

动态分配内存后未释放:

1
2
3
4
5
6
7
void foo() {

int* ptr = (int*)malloc(sizeof(int));

// ... do some work ...

}

重复释放相同的内存块:

1
2
3
4
5
6
7
8
9
10
11
void foo() {

int* ptr = (int*)malloc(sizeof(int));

free(ptr);

// ...

free(ptr); // 重复释放同一块内存会导致错误

}

使用已经被释放的指针:

1
2
3
4
5
6
7
8
9
10
11
void foo() {

int* ptr = (int*)malloc(sizeof(int));

free(ptr);

// ...

*ptr = 10; // 使用已经被释放的指针会导致错误

}

在数组中越界访问:

1
2
3
4
5
6
7
void foo() {

int* ptr = (int*)malloc(sizeof(int) * 10);

ptr[10] = 10; // 在数组中越界访问会导致错误

}

不正确的指针操作:

1
2
3
4
5
6
7
8
9
void foo() {

int a = 10;

int* ptr = &a;

ptr++; // 不正确的指针操作会导致错误

}

使用未初始化的指针:

1
2
3
4
5
6
7
void foo() {

int* ptr;

*ptr = 10; // 使用未初始化的指针会导致错误

}

使用已经被释放的指针进行指针算术运算:

1
2
3
4
5
6
7
8
9
void foo() {

int* ptr = (int*)malloc(sizeof(int));

free(ptr);

int* new_ptr = ptr + 1; // 使用已经被释放的指针进行指针算术运算会导致错误

}

将指向栈内存的指针返回:

1
2
3
4
5
6
7
8
9
int* foo() {

int a = 10;

int* ptr = &a;

return ptr; // 返回指向栈内存的指针会导致错误

}

在循环中不断动态分配内存,但未释放:

1
2
3
4
5
6
7
8
9
10
11
void foo() {

while (true) {

int* ptr = (int*)malloc(sizeof(int));

// ... do some work ...

}

}

在结构体中使用指针,但未分配内存:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
typedef struct {

int* ptr;

} my_struct;



void foo() {

my_struct s;

*s.ptr = 10; // 在结构体中使用未分配内存的指针会导致错误

\00002. }

class Obj {

public:

Obj(int size) {

buffer_ = new char;

}

~Obj(){}

private:

char *buffer_;

};



int fun() {

Object obj;

// do sth

return 0;

}

修改:

1
2
3
4
5
6
7
8
9
~Object() {

delete buffer_;

}



int main() { char a; char *str=&a; strcpy(str,”hello”); printf(str); return 0; }

答案:没有为str分配内存空间,将会发⽣异常。问题出在将⼀个字符串复制进⼀个字符变量指针所指地址。虽然可以正确输出结果,但因为越界进⾏内在读写⽽导致程序崩溃。

void Test( void ) {  char *str = (char *) malloc( 100 );  strcpy( str, “hello” );  free( str );  … //省略的其它语句 }

解答:

存在2处问题: 试题四存在与试题三同样的问题,在执⾏char *str = (char *) malloc(100); 后未进⾏内存是否申请成功的判断; 另外,在 f r ee( s tr ) 后 未 置 s tr 为 空 , 导 致 可 能 变 成 ⼀ 个 “ 野 ” 指 针 ,应加上: str = NULL;

1
2
3
4
5
6
7
8
9
int* foo() {

int a = 10;

int* ptr = &a;

return ptr; // 返回指向栈内存的指针会导致错误

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>

\#include <stdlib.h>

int main(){

char *p = (char*)malloc(100 * sizeof(char));

p = (char*)malloc(50 * sizeof(char));

free(p);

p = NULL;

return 0;

}

qianrushi5

Gets()函数容易造成栈缓冲区溢出

qianrushi6

  • Title: 嵌入式安全复习
  • Author: 小浩
  • Created at : 2024-04-07 21:00:32
  • Updated at : 2024-06-08 13:52:13
  • Link: https://blog.xh8.shop/2024/04/07/嵌入式安全复习/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments
On this page
嵌入式安全复习