嵌入式复习重点
单选
- 哪个不是嵌入式系统设计的主要目标?( D )
A. 低成本 B. 低功耗 C. 实时要求高 D. 超高性能
- 下面哪个系统不属于嵌入式系统?( C )
A. 医用血氧仪 B . 汽车主动刹车系统
C. 浪潮服务器 D. 生命探测仪
- 以下不属于嵌入式系统的是( A )
A.价值3万的Mini电动车 B. 车载娱乐系统
C.自动泊车系统 D.空中交通防撞系统(TCAS)
- 嵌入式系统有别于其他系统的最大特点是( C )
A. 低功耗 B. 高可靠 C. 嵌入专用 D. 低成本
- Linux系统不安全的原因,错误的是( D )
A. Linux开发遵循一般的商业惯例,而不是严格的安全标准。
B. Linux的更新频率过快,每次更新都会添加上万甚至几十万行代码。
C. 设计初衷是一个高性能并且通用的操作系统,而不是高鲁棒性的关键系统。
D. 应用面太广泛,被研究的相对透彻。
看门狗(Watch Dog)是嵌入式 系统中一种常用的保证系统可靠性的技术,会产生看门狗中断的是( D )。
A. 软件喂狗 B. 处理器温度过高
C. 外部中断 D. 看门狗定时器超时关于虚拟内存的作用,说法错误的是( C )
A. 隐藏了代码和数据的物理地址,使得攻击者很难发觉内在的操作和状态。
B. 是作为内存使用的一部分硬盘空间。
C. 是数据交换的缓冲区,帮助硬盘更快地工作。
D. 可以选择性将内存页映射和去映射到一个虚拟的地址空间
- 2型虚拟机管理程序相比1型虚拟机管理程序最本质的区别是( D )
A. 前者速度慢于后者 B. 前者支持的应用多于后者
C. 前者的可移植性好 D. 前者的安全性取决于宿主机操作系统的安全性。
- 设计实时操作系统时,首先应该考虑系统的( B )
A.可靠性和灵活性 B.实时性和可靠性
C.分配性和可靠性 D.灵活性和实时性
- 在常用的身份认证方式中,( B )是采用软硬件相结合、一次一密的强双因子认证模式,具有安全性、移动性和使用的方便性。
A. 智能卡认证 B. 动态令牌认证
C. USB Key D. 用户名及密码方式认证
- 关于访问控制的说法错误的是( D )
A. 自主访问控制指用户有权对自身所创建的访问对象进行各类权限的更改。
B. 强制访问控制,是指由系统(通过专门设置的系统安全员)对用户所创建的对象进行统一的强制性控制,按照规定的规则决定哪些用户可以对哪些对象进行什么类型的访问。
C. 基于角色的访问控制不必在每次创建用户时都进行分配权限的操作,只要分配用户相应的角色即可。
D.在复杂的嵌入式系统中必须要求使用强制访问控制。
- 以下关于可信计算说法错误的是( D )
A. 可信的主要目的是要建立起主动防御的信息安全保障体系。
B. 可信计算机安全评价标准(TCSEC)中第一次提出了可信计算机和可信计算基的概念。
C. 可信的整体框架包含终端可信、终端应用可信、操作系统可信、网络互联可信、互联网交易等应用系统可信。
D. 可信计算平台出现后会取代传统的安全防护体系和方法。
- 下列几种逻辑覆盖标准中,查错能力最强的是( D )
A. 语句覆盖 B. 判定覆盖
C. 条件覆盖 D. 条件组合覆盖
- 在一个“订单输入子系统”中,创建新订单和更新订单都要核查用户账号是否正确,则用例“创建新订单”、“更新订单”与用例“核查用户账号”之间的关系是( A )
A. 包含 B. 实现 C. 扩展 D. 泛化
- 隐蔽信道是指允许进程以( D )系统安全策略的方式传输信息的通信信道。
A. 补强 B. 有益 C. 保护 D. 危害
- 下列对于栈溢出漏洞原理的描述错误的是哪条?( D )
A、 可以造成命令执行漏洞
B、 栈溢出漏洞是缓冲区溢出漏洞的一种
C、 由于软件开发人员没有考虑周全造成的漏洞
D、 操作系统的内存管理机制的漏洞
- 关于缓冲区溢出描述错误的是( B )
A缓冲区是用来暂时存放输入输出数据的内存
B只要把内存加大,就可以避免缓冲区溢出
C指输入输出数据超出了缓冲区的大小,占用缓冲区之外的内存空间
D利用缓冲区溢出攻击,可以破坏程序运行,系统重新启动
- 下面说法正确的是( C )
A. 经过测试没有发现错误说明程序正确。
B. 测试的目标是为了证明程序没有错误。
C. 成功的测试是发现了迄今尚未发现的错误的测试 。
D. 成功的测试是没有发现错误的测试。
- 软件生存周期过程中,修改错误代价最小的阶段是( A )
A. 需求阶段 B. 设计阶段
C. 编程阶段 D. 发布运行阶段
- 虚拟化技术的主要目的是什么?( A )
A. 提高硬件利用率
B. 降低能耗
C. 增强系统安全性
D. 简化系统维护
- 常见的安全编码问题不包括( A )
A. 认证绕过 B. 缓冲区溢出 C. 命令注入 D. 整数溢出
- 防止重放攻击最有效地方法是( B )
A. 对用户账户和密码进行加密。
B. 使用“一次一密”加密方式。
C. 经常修改用户账户名称和密码。
D. 使用初始化向量IV。
- 许多黑客攻击都是利用软件实现中的缓冲区溢出的漏洞,对此最可靠的解决方案是( C )
A. 安装防火墙 B. 安装入侵检测系统
C. 给系统安装最新的补丁 D. 安装防病毒软件
- 同一台物理主机上一个虚拟机的崩溃或故障不会影响其他虚拟机,这主要得益于虚拟化技术的( A )特征。
A.隔离 B.封装 C.硬件独立 D.分区
- 与虚拟机相比,以下关于目前容器的叙述错误的是( B )。
A.容器一般是在操作系统级别进行的虚拟
B.容器的安全性比虚拟机强
C.容器的启动时间比较快
D.容器弹性分配分配,可以在没有关闭容器的情况下添加资源
- 下列攻击方式中,( C )是利用TCP/IP漏洞发起的攻击。
A.SQL注入攻击 B.XSS攻击 C.Ping of Death D.CSRF攻击
- 下列哪一项不是SSL所提供的服务( D )
A. 用户和服务器的合法认证
B. 加密数据以隐藏被传送的数据
C. 维护数据完整性
D. 保留通信双方的通信时的基本信息
- 在IPSEC VPN中,隧道模式主要应用在以下哪个场景中( C )
A. 主机与主机之间 B. 主机与安全网关之间
C. 安全网关之间 D. 隧道模式与传输模式之间
- 攻击组通过收集数据包,分析得到共享密钥,然后将一个虚假AP放置到无线网络中,截获用户和AP传输的所有数据,还可以对双方的传输数据任意进行修改,这种攻击方式称为( D )
A. 会话劫持攻击
B. 拒绝服务攻击
C. 漏洞扫描攻击
D. 中间人攻击
- 以下哪一项不属于XSS跨站脚本漏洞危害?( C )
A. 钓鱼欺骗 B. 身份盗用 C. SQL数据泄露 D. 网站挂马
- 手机“越狱”是指( B )
A.手机受到攻击,不受控制。
B.通过不正常手段获得手机操作系统的最高权限。
C.重新安装手机操作系统。
D.修补手机漏洞或对操作系统升级
- 以下关于物联网信息安全特点的描述中,错误的是 ( D )
A. 物联网会遇到比互联网更加严峻的信息安全的威胁、考验与挑战。
B. 近年来网络安全威胁总体趋势是趋利性。
C. 网络犯罪正逐步形成黑色产业链,网络攻击日趋专业化和商业化。
D. 互联网信息安全技术可以保证物联网的安全。
- 以下哪一项不是黑客在入侵踩点(信息搜集)阶段采取的技术?( D )
A. 公开信息的合理利用及分析
B. IP及域名信息收集
C. 主机及系统信息收集
D. 使用sqlmap验证SQL注入漏洞是否存在
以下哪个选项不是内存泄漏的原因?( C )
A. 指针重新赋值
B. 错误的内存释放
C. 正确的内存分配
D. 返回值的不正确处理关于内存泄漏,以下说法错误的是?( A )
A. 内存泄漏是操作系统内存管理出错导致的问题
B. 内存泄漏通常由于程序设计的错误导致
C. 内存泄漏会导致系统内存逐渐被耗尽
D. 内存泄漏可以通过适当的代码审查和测试来预防和发现中间人攻击的这种攻击形式破坏了下列哪一项内容( D )
A. 网络信息的抗抵赖性 B. 网络信息的保密性
C. 网络服务的可用性 D. 网络信息的完整性
多选
- 关于黑白名单的说法,正确的是( CD )
A. 由于嵌入式系统的专用性,为方便管理,远程连接的ip地址经常限定为特定的一个或地址段,此时适合用黑名单方式。
B. 黑名单和白名单应用场合不同,无法比较两者的限制级别。
C. 正常情况下,往往采用黑白名单结合的形式进行访问控制。
D. 杀毒软件一般采用黑名单的方式进行病毒查杀。
- 属于组件隔离思想的例子是( ABCD )
A. 操作系统内核与驻留的应用程序隔离,方便操作系统实施I/0资源访问控制。
B. 对重要数据部署加密服务,并且加密子系统与其他应用分开部署。
C. 文件系统与网络堆栈分别独立挂载到内核,降低安全失败带来的损失。
D. 在嵌入式系统上实施虚拟化技术提高安全性。
- 密钥生命周期包含的阶段有( ABCD )
A.生成,存储 B.分配,启用与停用 C.控制与更新 D.撤销与销毁
- 提高程序执行效率的原则包括( ABCDE )
A. 不要一味地追求程序的效率,应当在满足正确性、可靠性、健壮性、可读性等质量因素的前提下,设法提高程序的效率。
B. 以提高程序的全局效率为主,提高局部效率为辅。
C. 在优化程序的效率时,应当先找出限制效率的“瓶颈”,不要在无关紧要之处优化。
D. 先优化数据结构和算法,再优化执行代码。
E. 有时候时间效率和空间效率可能对立,此时应当分析那个更重要,作出适当的折衷。例如多花费一些内存来提高性能。
- Android开发过程中,下面哪些开发习惯可能导致安全漏洞( ABD )
A. 在程序代码中插入Log()方法输出敏感信息方便调试。
B. 在应用正式版Andoridmanifest.xml中设置android:debuggable=”true”。
C. 使用SecureRandom时使用安全的方法设置seed。
D. 设置应用配置文件为任意用户可读写。
- 关于“嵌入式系统安全”的说法正确的是( ABCD )
A. “没有所谓的绝对安全”的说法是有害的,如果一开始就有这种广泛而负面的主张,开发人员就没有充分的理由去实现最好的安全产品。
B. 有可能实现绝对的安全,绝对安全只适用于具体的安全策略。
C. 组件隔离是嵌入式系统一项基本的安全策略,也是实现更高级别的系统安全策略的基础。
D. 大多数安全策略都可以映射到一个或多个保密性、完整性和实用性(CIA)的保障因素。
- 传统 IT 系统基础架构经过多年的发展,普遍面临以下哪些突出问题( ABC )
A. IT 资源部署周期长,难以快速满足业务需求
B. 机房空间、电力供应紧张
C. 硬件资源利用率低和资源紧张并存
D. 资源全局共享,系统整体可用性高
- 对数组下标校验,要考虑以下情况( ABCD )
A. 要考虑是否超过数组上限 |
---|
B. index值类型最好定义为unsigned类型 |
C. 要考虑不为负值 |
D. 若有循环运算等操作,要考虑运算结果是否为溢出或者反转 |
- 僵尸程序可以破坏系统的完整性和可用性,典型应用有( ABCDE )
A. 分布式拒绝服务攻击
B. 发送垃圾邮件
C. 网络嗅探
D. Keylogging
E. 传播其他恶意软件
- Android 应用中导致HTTPS中间人攻击的原因有( ABC )
A. 没有对SSL证书校验 B. 没有对主机名进行校验
C. SSL证书被泄露 D. 使用WIFI连接网络
判断
组件隔离是嵌入式系统一项基本的安全策略,也是实现更高级别的系统安全策略的基础。( T )
相对于微内核操作系统,单内核操作系统为安全提供了更好的架构( F )
模型驱动设计(MDD)可提升程序稳定性,减少传统代码库中的安全缺陷。( T )
对程序的测试最好交由公司的技术高手进行全面深度测试。( F )
CFB模式在加密时有一个初始向量,必须用密文传给接收方。( F )
用malloc 或new 申请内存之后,可立即使用分配的内存。( F )
编码规范使代码看起来整齐,提高编译速度。( F )
在白盒测试中,对于测试人员来说,关于被测试的系统的信息都是已知的。( T )
项目质量管理的最终责任由质量经理来承担。( F )
黑客一般会绕过服务器安全控制部分,侵入一个相对较弱的客户端,然后从该客户端进入服务器中心。( T )
飞机内部包含的飞行控制系统,空中交通防撞系统(TCAS),通信导航监视系统,电子飞行包系统,机载娱乐系统等都属于嵌入式系统,因此飞机本身也算嵌入式系统。( F )
嵌入式Linux内核是非常安全的,因为其采用了一套严格控制变更管理的流程。( F )
微内核的安全性、稳定性高于单内核,但效率低于单内核。( T )
攻击者结合空指针和内核代码注入漏洞,可强制内核执行攻击者代码,轻易获得整个系统的全部控制器。( T )
带SSL保护的HTTP链接可以抵御中间人攻击。( F )
DNS缓存污染也被称为DNS缓存中毒,是一种传播在DNS服务器之间的病毒。( F )
为了提高安全性,可以设置让编译器把所有的警告都当作错误看待。( T )
编写越紧凑的代码越能产生高效的机器码。( F )
黑盒测试又叫功能测试,它主要关注的是被测试软件功能的实现,而不是内部逻辑。( T )
中间人攻击不需要成功入侵客户端,一般通过拦截客户端,服务端信息,经修改后再返回对方,引导客户端进入错误的目标服务器,或模仿有效链接达到欺骗用户的目的。( T )
通过检测服务调用时间可以作为一种隐信道攻击。( T )
虚拟化技术的主要目的是对IT基础设施进行简化。( T )
系统设计者只需做好系统的设计工作,无须处理故障恢复问题。( F )
尽管有内存保护和虚拟内存,通过占尽资源的方式,不良代码也可让关键应用程序停止运行。( T )
访问控制针对嵌入式系统中的进程和资源采用最小权限原则。( T )
访问控制的粒度越小越好,可制定完善细致的安全策略。( F )
黑名单和白名单只是应用的场景不同,严格程度没有高低之分。( F )
简答
简述嵌入式系统的定义。
以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能可靠性,成本体积,功耗严格的专用计算机系统
嵌入式系统是一种包含了一个或多个的微处理器以及软件的电子产品,在一个大型实体中实现某些基础功能
嵌入式系统是一种专门设计用于执行特定功能或任务的计算机系统,通常嵌入在更大的系统中。这些系统通常被设计成在特定的硬件平台上运行,具有严格的实时性、稳定性和可靠性要求。嵌入式系统通常被用于控制、监控或执行特定任务,如家用电器、汽车、医疗设备、工业控制系统等。这些系统通常具有固定的功能和任务,与通用计算机系统不同,其软件和硬件通常是为特定应用程序定制的。
嵌入式系统使用微内核的优势有哪些?
在嵌入式系统中,使用微内核作为操作系统内核具有一些优势,包括:
- 模块化设计:微内核采用模块化设计,将操作系统的核心功能模块化实现,如调度、内存管理、进程管理等,而其他功能如文件系统、网络协议栈等则作为独立的用户空间进程运行。这种设计使得系统更容易维护和扩展,可以根据需要添加或删除特定的功能模块。
- 可靠性和稳定性:由于微内核的设计更为简单,内核本身的功能较少,因此减少了内核出错的可能性,提高了系统的可靠性和稳定性。此外,故障发生在用户空间的模块时,不会影响整个系统的稳定性。
- 安全性:微内核的模块化设计也有利于系统安全性。不同功能模块运行在独立的用户空间进程中,彼此之间相互隔离,降低了模块之间互相影响的可能性,从而提高了系统的安全性。
- 灵活性:微内核架构使得系统更加灵活,可以根据具体的应用需求进行定制和优化。开发人员可以根据系统要求选择合适的功能模块,避免了不必要的功能开销。
- 性能优化:微内核设计通常具有较小的内核空间,减少了内核的复杂性,有利于提高系统的性能。此外,模块化设计也有助于优化系统的性能,可以更好地利用硬件资源。
高性价比的安全策略:
风险评估和管理:首先需要对组织面临的风险进行评估,并制定相应的风险管理计划。这有助于确定哪些安全措施是最重要的,以及如何分配有限的资源。
安全意识培训:定期为员工提供安全意识培训,教育他们如何识别和应对安全威胁。通过投资于员工培训,可以降低由于人为失误而导致的安全事件发生的可能性。
强化身份和访问管理:实施多因素身份验证、权限管理和访问控制,确保只有授权人员能够访问敏感信息和系统资源。
定期漏洞扫描和安全补丁管理:定期对系统进行漏洞扫描,并及时安装安全补丁以修复已知漏洞,以防止黑客利用这些漏洞进行攻击。
数据备份和恢复:建立有效的数据备份和灾难恢复计划,确保在发生数据丢失或系统故障时能够快速恢复业务运行。
网络安全监控:部署网络安全监控工具,实时监视网络流量和系统活动,及时发现异常行为并采取措施应对潜在的安全威胁。
加密:对敏感数据进行加密,无论是数据在传输过程中还是存储在系统中,加密都可以有效保护数据的机密性。
安全合规:遵守相关的法规和标准,确保组织的安全实践符合法律要求,并减少可能的罚款和法律风险。
以下是一些常见的远程嵌入式系统安全解决方案:
手段:1、确保远程管理计算机与因特网不相连。
2、远程嵌入式系统必须认证管理计算机,IP地址采用白名单机制。
3、在建立远程连接之前,管理计算机应对操作员进行强身份认证,
4、使用TLS/SSL或IKE/IPSec的标准网络安全协议,保护远程管理命令和数据的完整性和保密性。
- 安全认证和访问控制:
- 使用强大的身份验证机制,如双因素认证,确保只有经过授权的用户可以访问系统。
- 实施访问控制策略,限制用户对系统的访问权限,确保最小权限原则。
- 数据加密:
- 在数据传输和存储过程中使用加密技术,如TLS/SSL协议,保护数据的机密性和完整性。
- 使用端到端加密,确保数据在传输过程中受到保护,即使在数据传输的各个环节中也能保持加密状态。
- 安全更新和漏洞修补:
- 及时更新系统和应用程序,安装最新的安全补丁,以修复已知漏洞并提高系统的安全性。
- 实施安全漏洞管理策略,定期进行漏洞扫描和评估,及时处理发现的安全漏洞。
- 安全通信协议:
- 使用安全的通信协议,如MQTT over TLS或CoAP over DTLS等,确保远程通信的安全性。
- 避免使用不安全的通信协议和默认配置,加强对通信的加密和认证。
- 物联网安全网关:
- 部署物联网安全网关作为远程嵌入式系统的安全边界,监控和过滤流量,识别和阻止恶意攻击。
- 物联网安全网关可以提供防火墙、入侵检测系统(IDS)、虚拟专用网络(VPN)等安全功能。
- 安全审计和监控:
- 实施安全审计机制,记录和监控系统的操作和事件,及时发现异常行为和安全事件。
- 部署安全监控系统,实时监控系统的安全状态,及时响应安全威胁和攻击。
- 安全培训和意识提升:
- 对系统管理员和用户进行安全培训,提高其安全意识,教育他们如何识别和应对安全威胁。
- 建立安全文化,使所有相关人员都意识到安全的重要性,并积极参与安全保护工作。
- 安全认证和访问控制:
多重独立安全等级架构包含哪些方面?
包括信息流,数据隔离,损害控制,周期性处理,一直激活,防篡改,可评估
多重独立安全等级架构(Multiple Independent Levels of Security, MILS)是一种安全架构设计范例,旨在提供高度安全性和可信任性。它包含以下几个方面:
多重安全域:系统被划分为多个独立的安全域,每个安全域具有不同的安全级别和访问控制策略。这些安全域之间是相互隔离的,确保一个安全域的受到攻击不会波及其他安全域。
安全通信:在不同安全域之间进行安全通信时,需要确保数据的保密性、完整性和可用性。安全通信的机制包括加密、认证、访问控制等,以防止信息泄露和篡改。
安全策略:每个安全域都有自己的安全策略,包括访问控制规则、权限管理、审计机制等。这些安全策略确保系统在运行时符合安全需求,并能够检测和应对安全事件。
安全监控:系统需要实时监控各个安全域的安全状态,及时发现和响应安全事件。安全监控系统可以检测异常行为、入侵尝试等安全威胁,并采取相应的措施进行应对。
安全审计:对系统的安全性进行定期审计,检查安全策略的有效性、系统配置的合规性以及安全事件的处理情况。安全审计有助于发现潜在的安全问题,并及时进行修复和改进。
通过以上方面的设计和实施,多重独立安全等级架构能够提供高度安全性和可信任性,适用于对安全性要求极高的系统和应用场景。
嵌入式系统设计师除了做好系统设计工作,还需要了解哪些嵌入式安全策略。
(1)绝对安全
(2)保密性、完整性和实用性
(3)隔离策略
(4)信息流控制
(5)物理安全策略
(6)特色应用软件的安全策略
嵌入式系统设计师除了系统设计工作外,还需要了解以下嵌入式安全策略:
物理安全:确保设备的物理安全是至关重要的。设计师需要考虑如何防止设备被盗或被物理篡改,可以采用安全外壳、封闭式设计、防拆卸措施等方式来增强物理安全性。
认证和授权:设计师需要考虑如何实现用户身份认证和访问授权,确保只有经过授权的用户可以访问系统的敏感功能和数据。这可以通过密码、生物识别技术、访问控制列表等方式来实现。
加密和数据保护:在嵌入式系统中,数据的保护至关重要。设计师需要了解加密算法、安全通信协议等技术,确保数据在传输和存储过程中得到有效的保护,防止数据泄露和篡改。
安全更新和漏洞管理:设计师需要考虑如何及时更新系统以修复已知漏洞,并建立漏洞管理机制,及时响应新的安全威胁。安全更新可以通过固件更新、远程更新等方式进行。
安全审计和监控:设计师需要设计安全审计和监控机制,用于监视系统的安全状态、检测异常行为,并记录安全事件以便进行事后分析和调查。这有助于及时发现安全问题并采取相应措施。
抗攻击能力:设计师需要考虑系统的抗攻击能力,包括抵御恶意软件、拒绝服务攻击、侧信道攻击等。采取安全编程实践、内存保护机制、安全认证等措施可以提高系统的抗攻击能力。
综合来看,嵌入式系统设计师需要了解并综合考虑物理安全、认证和授权、加密和数据保护、安全更新和漏洞管理、安全审计和监控、抗攻击能力等方面的安全策略,以确保系统在面临各种安全威胁时能够保持安全性和稳定性。
简述访问控制的三种模式。
( 自主访问控制DAC)、(强制访问控制MAC ) 和 (基于角色的访问控制RBAC ) 。
访问控制是信息安全领域中的一项重要技术,用于控制用户或实体对系统资源的访问权限。常见的访问控制模式包括以下三种:
强制访问控制(MAC):
- 在强制访问控制模式下,访问控制是由系统管理员设定的,用户无法自行控制访问权限。每个主体(如用户、进程)和客体(如文件、系统资源)都被赋予一个安全级别或标签,系统根据这些标签来强制控制访问。
- MAC模式通常用于高度安全性要求的系统,如军事系统或政府机构系统,以确保严格的访问控制和信息保密性。
自主访问控制(DAC):
- 在自主访问控制模式下,资源的所有者有权决定其他用户对资源的访问权限。资源的所有者可以授予或撤销其他用户对资源的访问权限,从而实现对资源的控制。
- DAC模式常用于一般的多用户系统中,例如企业内部网络或个人电脑系统,允许资源的所有者自主管理资源的访问权限。
基于角色的访问控制(RBAC):
- 基于角色的访问控制模式将用户的权限分配给角色,而不是直接分配给用户。用户被分配到一个或多个角色,每个角色具有特定的权限,用户通过角色来获取相应的权限。
- RBAC模式简化了权限管理,提高了系统的安全性和可维护性,特别适用于大型组织或系统,可以根据角色的变化来调整用户的权限。
这三种访问控制模式在实际应用中根据系统需求和安全级别的要求进行选择和组合,以确保系统对资源的访问具有适当的安全性和灵活性。
列举现代静态源码分析器可以检查到的常见错误。
潜在的NULL指针的解引用
越界访问(例如,数组或动态分配的缓冲区);即缓冲区溢出。
对潜在只读内存的写操作
对潜在的未初始化对象的读操作
资源泄露,如内存泄露,文件描述符泄露
对已经释放内存的使用
超范围内存使用(从子程序返回自变量的地址)
设置子程序返回值的失败
缓冲和数组下溢
现代静态源码分析器在检查源代码时可以发现许多常见的错误和潜在的安全漏洞。以下是一些常见错误,现代静态源码分析器可以检测到的示例:
空指针引用:静态源码分析器可以检测到可能导致空指针异常的代码,如未初始化变量或对空指针进行操作。
内存泄漏:静态源码分析器可以识别未释放分配的内存或存在内存泄漏的代码,帮助开发人员避免资源泄漏问题。
缓冲区溢出:静态源码分析器可以检测到存在缓冲区溢出风险的代码,防止恶意用户利用输入数据溢出缓冲区造成安全漏洞。
未使用的变量:静态源码分析器可以识别未使用的变量或代码块,帮助开发人员优化代码并减少不必要的复杂性。
未处理的异常:静态源码分析器可以发现未处理的异常或错误处理不当的代码,帮助开发人员提高代码的健壮性和可靠性。
资源泄漏:静态源码分析器可以检测到未关闭文件、数据库连接或其他资源的代码,帮助开发人员避免资源泄漏问题。
并发问题:静态源码分析器可以识别可能导致并发问题的代码,如竞态条件、死锁等,帮助开发人员编写更安全的并发程序。
安全漏洞:静态源码分析器可以检测到常见的安全漏洞,如跨站脚本(XSS)、SQL注入、路径遍历等,帮助开发人员提前发现和修复安全问题。
通过使用现代静态源码分析器,开发人员可以在早期阶段发现并修复代码中的错误和潜在问题,提高代码质量、安全性和可维护性。
列举高可信软件工程原则。
1)最少的实现
2)组件化架构
3)最小权限
4)安全开发过程
5)独立专家验证
高可信软件工程是指在软件开发过程中注重软件的可靠性、安全性和稳定性,以确保软件在各种条件下都能正常运行并达到预期的效果。以下是一些高可信软件工程的原则:
完整性(Integrity):确保软件在运行时数据和功能的完整性,防止未经授权的访问、修改或破坏。
可用性(Availability):确保软件在需要时可用,能够持续提供服务并及时响应用户请求。
保密性(Confidentiality):确保软件处理的敏感信息只能被授权用户访问,防止信息泄露。
可靠性(Reliability):确保软件在各种条件下都能稳定运行,不会因为意外情况导致系统崩溃或数据丢失。
可审计性(Auditability):确保软件的操作和行为可以被审计和跟踪,以便追溯问题和进行安全审计。
可证明性(Accountability):确保对软件的使用和操作进行跟踪和记录,以便追责和验证责任。
最小权限原则(Principle of Least Privilege):给予用户或程序最小必要的权限来完成其工作,以减少潜在的安全风险。
安全性(Security):确保软件系统能够抵御各种安全威胁和攻击,保护系统免受恶意行为的影响。
可扩展性(Scalability):确保软件系统能够方便地扩展和适应不断变化的需求和环境。
可维护性(Maintainability):确保软件系统易于维护和修改,降低修改成本并保持系统的可靠性和稳定性。
这些原则在软件工程实践中起着重要的指导作用,帮助开发团队设计、开发和维护高可信度的软件系统。
简述嵌入式远程管理的基本防御流程。
手段:1、确保远程管理计算机与因特网不相连。
2、远程嵌入式系统必须认证管理计算机,IP地址采用白名单机制。
3、在建立远程连接之前,管理计算机应对操作员进行强身份认证,
4、使用TLS/SSL或IKE/IPSec的标准网络安全协议,保护远程管理命令和数据的完整性和保密性。
嵌入式系统的远程管理是指通过网络远程监控、配置、更新和维护嵌入式设备。在进行嵌入式远程管理时,需要采取一系列防御措施来确保系统的安全性和稳定性。以下是基本的嵌入式远程管理的防御流程:
身份验证和授权:确保只有经过身份验证的用户才能访问远程管理接口。使用强大的身份验证机制,如双因素认证,以确保只有授权用户可以远程管理设备。
安全通信:使用加密通信协议(如TLS/SSL)确保远程管理过程中的数据传输是加密的,防止数据在传输过程中被窃取或篡改。
安全升级和更新:确保远程升级和更新的过程是安全可靠的。使用数字签名来验证软件更新的完整性和真实性,防止恶意软件或未经授权的修改被加载到设备中。
安全配置:确保远程管理接口和功能的安全配置,限制只有必要的功能和权限被开放给远程管理者,减少潜在攻击面。
安全审计和监控:实施安全审计和监控机制,记录远程管理操作的日志并进行实时监控,以便及时发现异常行为或安全事件。
物理安全:保护嵌入式设备的物理安全,防止设备被盗或篡改。在可能的情况下,对设备进行加固,防止物理攻击。
应急响应计划:制定应急响应计划,以应对可能发生的安全事件或远程管理故障,确保能够及时有效地应对问题并恢复系统正常运行。
通过遵循以上防御流程,嵌入式系统的远程管理可以更加安全可靠地进行,保护系统免受潜在的安全威胁和攻击。
开发中如何提高循环的效率,降低嵌入式系统的功耗?
优化算法和数据结构
减少循环次数
避免空循环
使用硬件加速
低功耗模式
优化编译器选项
使用中断和定时器
精简外设使用
静态代码分析
循环嵌套要外小内大;提取与循环无关的表达式;消除循环终止判断时的方法调用;捕获异常放到循环外部。
在开发嵌入式系统时,提高循环的效率和降低功耗是非常重要的目标,特别是对于那些需要长时间运行的设备。以下是一些方法可以帮助提高循环的效率和降低嵌入式系统的功耗:
优化算法和数据结构:选择合适的算法和数据结构可以显著提高循环的效率。尽量避免使用复杂的算法和数据结构,选择更高效的实现方式。
减少循环次数:尽量减少循环的次数,避免不必要的重复计算。可以通过合并循环、使用更有效的迭代方式等方法来减少循环次数。
避免空循环:避免空循环或无用的计算,确保每次循环都有意义并对系统有贡献。
使用硬件加速:利用硬件加速器(如DSP、FPGA等)来执行一些计算密集型任务,可以提高效率并降低功耗。
低功耗模式:利用处理器的低功耗模式,在空闲或低负载时降低处理器的工作频率或进入睡眠模式,以降低功耗。
优化编译器选项:使用优化的编译器选项来生成更高效的机器代码,包括开启优化选项、减小代码大小等。
使用中断和定时器:合理使用中断和定时器来触发特定事件,避免轮询等消耗资源的方式,从而降低功耗。
精简外设使用:在不需要的时候关闭不必要的外设,减少对外设的频繁访问,以降低功耗。
静态代码分析:通过静态代码分析工具来检测代码中的潜在性能问题和功耗问题,及时优化代码。
通过结合以上方法,开发者可以有效提高循环的效率和降低嵌入式系统的功耗,从而提升系统的性能和节能效果。
找出下列代码中的错误并改正。
void Func(void)
{
int *buff=malloc(100); (1)
char array[50]; (2)
free(buff); (3)
array[50]=’e’; (4)
free(buff); (5)
free(array); (6)
}
void Str_copy(void )
{
char *str = (char *) malloc(10);
strcpy( str, “hello world!” );
}
第1处错误在语句 (4) 中,尝试访问数组 array 的第 50 个元素,但是数组 array 的大小只有 50,数组的索引是从 0 开始的,因此最后一个元素的索引是 49,访问超出数组范围的元素是未定义行为。正确的语句应该是:
array[49] = ‘e’;
第2处错误在语句 (6) 中,试图释放一个静态分配的数组 array,静态分配的数组不应该使用 free 函数释放内存,只有动态分配的内存需要使用 free 函数释放。因此,正确的代码应该去掉语句 (6):
// free(array); // Remove this line
第3个错误在函数 Func 中的语句 (5) 中,尝试两次释放同一块内存 buff。这会导致出现 double free 错误,因为在第一次调用 free(buff) 后,内存块已经被释放,再次调用 free(buff) 会导致未定义行为。因此,应该在第二次调用 free(buff) 前检查该指针是否为 NULL 或者设置为 NULL。
在分配内存时,应该为字符串 “hello world!” 分配足够的空间来容纳整个字符串(包括结尾的空字符 ‘\0’)。由于 “hello world!” 包含 12 个字符(包括空格),因此应该分配至少 13 个字节的内存空间。
函数结束后没有释放动态分配的内存。在使用完动态分配的内存后,应该使用 free() 函数来释放这块内存,以避免内存泄漏。
(4)中数组越界访问,应该修改为合法的数组下标。
(6)中试图释放一个非动态分配的数组内存,应该使用free释放动态分配的内存。
隔离思想:隔离思想是指在设计和开发系统时,采用一系列技术和策略来确保系统中不同组件或功能之间相互独立、相互隔离,从而提高系统的安全性、稳定性和可靠性。隔离思想在计算机系统、网络系统、嵌入式系统等领域都有广泛的应用。
以下是隔离思想的一些重要方面和应用:
硬件隔离:在硬件层面上实现隔离,例如使用虚拟化技术、安全芯片、安全处理器等,确保不同硬件资源之间的隔离,防止恶意软件或攻击者跨越硬件边界进行攻击。
软件隔离:通过软件机制实现不同软件组件之间的隔离,如使用容器技术、虚拟化技术、沙盒机制等,确保不同软件模块之间的隔离,防止恶意软件扩散和攻击。
网络隔离:通过网络配置和策略实现不同网络区域或设备之间的隔离,如使用虚拟局域网(VLAN)、防火墙、访问控制列表(ACL)等,确保网络中不同部分之间的隔离,防止网络攻击和数据泄露。
数据隔离:确保不同数据之间的隔离,如使用加密技术、访问控制等,防止敏感数据泄露或被篡改。
权限隔离:通过权限管理和访问控制实现不同用户或进程之间的隔离,确保每个用户或进程只能访问其所需的资源,防止恶意操作和越权访问。
隔离思想的核心目标是降低系统中各个部分之间的耦合度,提高系统的安全性和可靠性。通过合理应用隔离思想,可以有效减少系统的风险,提升系统的稳定性和安全性。在设计和开发系统时,考虑隔离思想是非常重要的,特别是在涉及敏感数据或关键系统的场景中。
远程嵌入式管理是指通过网络远程监控、配置、维护和管理嵌入式设备或系统的过程。这种管理方式在许多场景下非常有用,特别是对于分布在不同地点的嵌入式设备或系统。以下是远程嵌入式管理的一些重要方面和优势:
远程监控和诊断:远程管理允许管理员实时监控嵌入式设备的状态、性能和运行情况,及时发现问题并进行诊断,从而提高故障排除的效率。
远程配置和更新:管理员可以通过远程管理平台对嵌入式设备进行配置更改和软件更新,无需现场操作,节省时间和成本。
远程维护和修复:远程管理使得管理员可以远程执行维护操作和故障修复,减少了现场维护的需求,提高了系统的可用性和稳定性。
安全性:远程管理平台通常会提供安全机制,如加密通信、身份验证等,确保远程管理过程的安全性,防止未经授权的访问和攻击。
灵活性和便利性:远程管理使得管理员可以随时随地通过网络管理嵌入式设备,不受时间和地点的限制,提高了管理的灵活性和便利性。
自动化和智能化:通过远程管理平台可以实现自动化的管理和监控,甚至结合人工智能技术进行预测性维护,提高管理效率和系统的可靠性。
成本效益:远程管理可以减少现场维护的成本,降低人力和时间成本,提高设备的利用率和效益。
- Title: 嵌入式复习重点
- Author: 小浩
- Created at : 2024-04-14 07:12:15
- Updated at : 2024-06-08 13:52:13
- Link: https://blog.xh8.shop/2024/04/14/嵌入式复习重点/
- License: This work is licensed under CC BY-NC-SA 4.0.