0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在开发生命周期的早期降低安全风险

星星科技指导员 来源:嵌入式计算设计 作者:JANE GOH 2022-11-10 16:43 次阅读

通过限制代码中原语的数量,开发人员可以使黑客利用软件的过程更加困难,从而增加利用成本并降低其可能性。

软件对军队的野战防御和作战支援能力越来越重要。军事和航空航天系统中的嵌入式软件必须既可靠又安全,因为安全漏洞可能与行业开发的许多控制措施来防止的功能缺陷一样危险。

许多用于解决功能或质量缺陷的相同技术也可以减少安全漏洞。在软件开发方面,安全缺陷应被视为软件缺陷,并作为开发过程的一部分进行管理。事实上,安全和质量之间的区别有时可能是微妙的。今天表现为系统故障的缺陷明天可能会被攻击者利用。

缺陷本质上是潜在的利用原语1,黑客可以创造性地将其串在一起进行攻击。开发人员可以通过消除尽可能多的原语来使攻击者利用软件的过程更加困难。下面的示例演示如何将多个基元链接在一起以实现远程代码执行。

多基元攻击示例

假设驻留在远程上的代码中存在安全漏洞。虽然确定根本原因足以修复缺陷,但成功利用该漏洞取决于多个预先存在的条件。对于此示例的上下文,我们假设攻击者尝试实现远程代码执行 (RCE),从而在远程计算机上运行攻击者选择的代码。虽然触发安全漏洞是实现RCE所必需的,但它实际上需要许多小步骤,我们称之为利用原语。通过将这些原语链接在一起,攻击者可以创建一个可靠工作并在漏洞利用结束后保持稳定性的漏洞利用。

在我们的示例中,攻击者使用(但不限于)四个唯一的基元。使用的第一个原语是软泄漏2,它利用合法的程序功能来操作目标应用程序中的内存,而不会对稳定性或安全产生影响。这些基元恰好是最常见的,因为它们依赖于预期的有效程序功能。例如,根据设计,服务器将接受来自客户端的请求。该客户端发送在会话终止发生之前一直保留的信息。漏洞利用编写者可以通过确定这些请求和会话的工作原理,根据特定应用程序的功能对其内存布局做出某些假设。

下一个使用的基元是硬泄漏2。硬泄漏或资源泄漏对于大多数 C/C++ 程序员来说非常熟悉。当程序员忘记释放在运行时动态获取的内存时,就会发生泄漏。虽然大多数程序员认为这是一个质量问题,在最坏的情况下会导致大量内存消耗,但许多开发艺术家认为这是确保漏洞利用稳定性的机会。攻击者可以通过永久获取内存来确保内存的某些部分在进程的整个生存期内永远不会被使用。

使用的第三个基元是整数溢出。如果数学运算尝试存储大于整数可以容纳的数字,则多余的数字将丢失。多余数据的丢失有时称为整数换行。例如,无符号 32 位整数可以保存最大正值。通过将 1 加到该最大正值,整数将在零 (UINT_MAX + 1 == 0) 处再次开始计数。一个真实的例子是汽车在行驶 100 万英里后翻车并从零重新开始里程计数的里程表。攻击者可以通过在分配例程中使用此溢出整数来分配比预期更少的内存。

最后,最后一个使用的基元是缓冲区溢出。这是 C/C++ 程序中最常见的具有安全影响的缺陷类型。当程序写入超过缓冲区末尾时,会导致缓冲区溢出,从而导致相邻内存内容损坏。在某些情况下,这可能会导致覆盖堆栈或堆的内容,从而允许攻击者破坏系统的正常运行,并最终接管程序的控制流。

RCE 中的原始用法

现在,基元类型已经介绍完毕,让我们讨论示例中的攻击者如何利用它们来实现远程代码执行。首先,通过使用现有的程序功能,攻击者发送有效的请求,导致根据其输入的大小分配许多内存块。这似乎无害,但对于实现堆确定性至关重要:将应用程序的内存布局操作到已知的理想状态,这在利用基于堆的缓冲区溢出时是强制性的。接下来,漏洞利用作者知道一些内存一旦分配,就永远不应该再释放。通过利用应用程序中的硬泄漏,可以实现在进程的整个生命周期中保持内存的目标,从而提高开发后的稳定性。

触发了导致未充分分配的堆缓冲区溢出的整数溢出。这会导致分配缓冲区的实际大小与其包含的预期数据元素数不匹配。然后,攻击者可以利用缓冲区溢出来覆盖相邻内存的内容。例如,假设无法确定一张规则纸的最后一行。如果你按顺序继续写句子,你最终会在桌子上写字,并可能写下那件漂亮的新衬衫。通过覆盖相邻内存,攻击者可以用他控制的数据覆盖重要信息。

无论严重性如何,将基元链接在一起的能力都可以更好地控制利用和开发后功能。如果我们的攻击者没有能力在应用程序中创建硬泄漏,他将不得不找出一种不同的方法来确保他的内存在会话超时时不会被释放,或者他至少会意识到最终的程序崩溃是不可避免的。如果整数溢出不存在,我们的攻击者根本没有机会利用。

利用原语和安全漏洞之间的联系可以是直接或间接的。某些类型的基元(如缓冲区溢出)可能导致许多不同类型的漏洞,具体取决于攻击者的技能、创造力和决心。然而,显而易见的是,拥有更多可用的原语使攻击者更容易利用更严重的漏洞并开发破坏性漏洞。因此,在开发过程的早期查找和消除大量利用原语可以极大地帮助减少应用程序服务期间的安全漏洞暴露和维护成本。

保护代码开发的实用方法

开发可靠且安全的软件是 IT 团队面临的一项艰巨挑战,因为将安全测试尽早集成到开发生命周期中的计划尚未得到广泛采用。这并不是说开发人员不想开发安全的产品,而是他们专注于提供新的特性和功能,并且经常面临满足发布截止日期的巨大压力。除了缺乏投资加强安全性的经济激励外,开发人员传统上没有接受过安全专家的培训。计算机科学课程的重点是培养具有成为优秀应用程序开发人员基础的程序员,但不一定是安全专家。因此,今天的开发人员基本上没有意识到他们可以在代码中引入安全问题的无数种方式,并且在发现安全问题时也没有资金来修复它们。

开发测试解决方案需要从开发人员的角度进行设计。这意味着要解决使开发人员回避传统安全评估工具的主要问题:缺乏可用性和高误报率。寻求将安全测试集成到其流程中的开发经理应寻找能够提供以下功能的自动化开发测试工具:

清晰解释缺陷,噪音小:开发人员根本没有时间浪费时间试图筛选嘈杂的结果,或重现实际上不存在的虚幻缺陷。他们需要易于理解且误报尽可能少的缺陷。

在编写代码时及早并经常检测缺陷:确定缺陷的确切原因需要付出大量努力,修复缺陷可能涉及大量的体系结构更改。尽早发现关键缺陷使开发团队能够预测工作负载和对发布计划的影响,从而降低整个项目的成本。

有关如何修复安全缺陷的可操作且正确的建议:作为安全评估的一部分提供的缺陷修正建议通常不会针对软件包中使用的相关框架、语言或库进行自定义。开发人员很难将通用建议转化为有效的修复程序,这通常会导致应用错误或不完整的修复程序,从而导致客户流失和返工。

缺陷是软件开发不可避免的事实。虽然可能无法完全防止在代码开发过程中引入漏洞,但现在存在的技术和流程可以帮助开发人员尽可能快速有效地查找和修复这些缺陷。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 服务器
    +关注

    关注

    12

    文章

    9015

    浏览量

    85169
  • C++
    C++
    +关注

    关注

    22

    文章

    2104

    浏览量

    73482
  • 代码
    +关注

    关注

    30

    文章

    4742

    浏览量

    68330
收藏 人收藏

    评论

    相关推荐

    如何确保车规级芯片全生命周期安全

    为保障质量、安全性和可靠性,汽车行业始终如一地贯彻着严苛的标准。然而,这种对汽车安全性和可靠性的坚定追求,也催生了对预测性维护的迫切需要,即在芯片生命周期管理(SLM)中,使用先进的监测和分析技术来预测和预防半导体组件的故障。
    的头像 发表于 08-12 10:47 410次阅读
    如何确保车规级芯片全<b class='flag-5'>生命周期</b>的<b class='flag-5'>安全</b>

    半导体产业背后的“守护者”:全生命周期测试设备解析

    半导体产业作为现代电子工业的核心,其产品的全生命周期测试对于确保产品质量、提高生产效率和降低成本具有重要意义。半导体全生命周期测试设备涵盖了从原材料检测到最终产品测试的一系列设备,本文将对这些设备进行详细介绍。
    的头像 发表于 08-10 10:05 328次阅读
    半导体产业背后的“守护者”:全<b class='flag-5'>生命周期</b>测试设备解析

    新型储能全产业链、全生命周期质量提升解决方案

    新型储能产品全产业链、全生命周期的可靠性质量提升,保障储能系统的高安全、高可靠性、长寿命,对国家能源安全新战略推进落实、实现绿色可持续发展具有重要意义。
    的头像 发表于 07-16 13:20 711次阅读
    新型储能全产业链、全<b class='flag-5'>生命周期</b>质量提升解决方案

    半导体全生命周期测试:哪些设备默默守护你的电子产品?

    半导体产业作为现代电子工业的核心,其产品的全生命周期测试对于确保产品质量、提高生产效率和降低成本具有重要意义。半导体全生命周期测试设备涵盖了从原材料检测到最终产品测试的一系列设备,本文将对这些设备进行详细介绍。
    的头像 发表于 07-01 09:38 307次阅读
    半导体全<b class='flag-5'>生命周期</b>测试:哪些设备<b class='flag-5'>在</b>默默守护你的电子产品?

    鸿蒙开发组件:DataAbility的生命周期

    应用开发者可以根据业务场景实现data.js/data.ets中的生命周期相关接口。DataAbility生命周期接口说明见下表。
    的头像 发表于 06-20 09:39 391次阅读

    鸿蒙开发:【PageAbility的生命周期

    PageAbility生命周期是PageAbility被调度到INACTIVE、ACTIVE、BACKGROUND等各个状态的统称。PageAbility生命周期流转及状态说明见如下图1、表1所示。
    的头像 发表于 06-17 10:05 662次阅读
    鸿蒙<b class='flag-5'>开发</b>:【PageAbility的<b class='flag-5'>生命周期</b>】

    设备全生命周期管理流程有哪些?

    采购与安装阶段设备全生命周期管理系统对设备需求进行分析,记录设备信息,确保设备正确安装并达到预期性能。维护保养阶段制定科学维护计划,定期检查和保养。性能优化与升级阶段通过分析数据发现问题,优化设备性能。
    的头像 发表于 06-13 15:21 631次阅读
    设备全<b class='flag-5'>生命周期</b>管理流程有哪些?

    鸿蒙Ability Kit(程序框架服务)【UIAbility组件生命周期】实例

    本文档主要描述了应用运行过程中UIAbility和自定义组件的生命周期。对于UIAbility,描述了Create、Foreground、Background、Destroy四种生命周期。对于页面
    的头像 发表于 05-31 15:03 1046次阅读
    鸿蒙Ability Kit(程序框架服务)【UIAbility组件<b class='flag-5'>生命周期</b>】实例

    如何保护电子元器件以延长生命周期

    电子电力领域,许多关键应用要求设备必须运行很长一段时间,甚至几十年。尤其是对于航空航天、国防、能源和医疗行业方面而言,为了保持设备正常运行,必须在其整个生命周期内持续供应组件。那么,如何保护电子
    的头像 发表于 05-31 13:59 437次阅读
    如何保护电子元器件以延长<b class='flag-5'>生命周期</b>

    鸿蒙Ability Kit(程序框架服务)【UIAbility组件生命周期

    当用户打开、切换和返回到对应应用时,应用中的UIAbility实例会在其生命周期的不同状态之间转换。UIAbility类提供了一系列回调,通过这些回调可以知道当前UIAbility实例的某个状态发生改变,会经过UIAbility实例的创建和销毁,或者UIAbility实例
    的头像 发表于 05-30 21:51 1409次阅读
    鸿蒙Ability Kit(程序框架服务)【UIAbility组件<b class='flag-5'>生命周期</b>】

    Traveo II B-H中的SECURE和SECURE_WITH_DEBUG生命周期阶段有何不同?

    Traveo II B-H 中的 SECURE 和 SECURE_WITH_DEBUG 生命周期阶段有何不同?
    发表于 05-21 07:07

    HarmonyOS开发案例:【UIAbility和自定义组件生命周期

    本文档主要描述了应用运行过程中UIAbility和自定义组件的生命周期。对于UIAbility,描述了Create、Foreground、Background、Destroy四种生命周期。对于页面
    的头像 发表于 05-10 15:31 1174次阅读
    HarmonyOS<b class='flag-5'>开发</b>案例:【UIAbility和自定义组件<b class='flag-5'>生命周期</b>】

    IBM推出全新IT生命周期管理模式

    IBM近日正式推出了IBM Storage Assurance,这是一项创新的IT生命周期管理方案。其设计初衷在于为客户提供数据中心管理的灵活性与控制权,以最大化系统性能。该方案融合了IBM FlashSystem的硬件和软件创新优势,确保客户享受高性能存储的同时,其投
    的头像 发表于 05-09 11:47 553次阅读

    什么是设备全生命周期管理系统?

    设备全生命周期管理系统是一款能够对设备进行全周期数字化管理的软件平台,它通过将设备信息电子化,使得设备的管理和监督更加便捷。这个系统不仅涵盖了设备的采购、使用、维修、报废等各个阶段,还能够对设备
    的头像 发表于 02-26 14:21 1089次阅读
    什么是设备全<b class='flag-5'>生命周期</b>管理系统?

    半导体测试设备大盘点:全生命周期无死角检测

    半导体产业作为现代电子工业的核心,其产品的全生命周期测试对于确保产品质量、提高生产效率和降低成本具有重要意义。半导体全生命周期测试设备涵盖了从原材料检测到最终产品测试的一系列设备,本文将对这些设备进行详细介绍。
    的头像 发表于 02-02 09:46 2324次阅读
    半导体测试设备大盘点:全<b class='flag-5'>生命周期</b>无死角检测