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

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

3天内不再提示

安全软件开发的最佳实践

北汇信息POLELINK 2023-05-08 10:51 次阅读

安全的软件开发最佳实践是必要的,因为安全风险无处不在。在网络攻击盛行的时代,它们可以影响每个人,包括个人、公司和政府。因此,确保软件开发的安全性至关重要。

在这里,我们将解释了什么是安全软件,如何确保软件的安全性,并提供安全软件开发的最佳实践

没有安全的软件开发会发生什么?

网络攻击成为头条新闻。DuquStuxnet在 2010年和2011年让每个人都在谈论。而且,从那时起,网络攻击只会变得更糟。WannaCry在2017年袭击了重要的系统,包括英国的国家医疗服务体系。GitHub在 2018年初遭到拒绝服务攻击。2021年的 Log4j 漏洞至今仍在被利用。

嵌入式系统无法幸免于安全软件风险

嵌入式系统越来越容易受到这些风险的影响。这导致了医疗设备和汽车行业的召回。而且,汽车行业尤其容易受到网络威胁

这是一个巨大的问题。

针对嵌入式系统的网络攻击可能导致对以下方面的大规模破坏:

•关键基础设施,包括发电、石油和天然气精炼。

•电信。

•运输。

•水和废物控制系统

5 个关键的安全软件开发风险因素

五个关键的安全软件开发风险因素是:

  1. 相互依存的系统使软件成为最薄弱的环节。
  2. 软件大小和复杂性使测试复杂化。
  3. 外包软件供应链增加了风险暴露。
  4. 复杂的攻击会带来更多的风险。
  5. 遗留软件被复用。

当今应用程序安全(AppSec) 环境中的常见问题

如今,为嵌入式系统、移动设备、电动汽车、银行和交易服务开发了各种类型的软件应用程序。然而,经常被忽视的是,许多应用程序和数字体验的设计和操作都没有安全措施,如果安全性不是重中之重,这可能会有风险。

即使优先考虑安全性并实施安全的软件开发实践,公司仍然可能措手不及。当今应用程序安全环境中的常见问题包括:

第三方库和框架中的漏洞:许多应用程序依赖于 第三方库和框架 ,如果不定期更新,可能会将漏洞引入应用程序。

注入攻击:注入攻击涉及攻击者将恶意代码或命令 注入 应用程序的输入字段(如登录表单或搜索框),以获得对应用程序或其基础数据库的未经授权的访问。

跨站点脚本 (XSS):XSS攻击涉及攻击者将恶意代码注入网站或 Web 应用程序,然后可以在用户的浏览器中执行,从而可能窃取敏感数据或代表用户执行未经授权的操作。

不安全的身份验证和授权:设计或实施不当的身份验证和授权机制可能允许攻击者绕过安全控制并访问敏感数据或功能。

日志记录和监视不足:如果没有足够的日志记录和监视,则可能难以检测和响应安全事件或确定安全问题的根本原因。

移动应用程序安全性:随着移动设备的激增,确保移动应用程序的安全性变得越来越重要。移动应用程序可能容易受到一系列攻击,包括针对设备本身或应用程序后端服务器的攻击。

云安全:随着云计算的使用越来越多,确保基于云的应用程序的安全性变得至关重要。基于云的应用程序可能容易受到一系列攻击,包括针对云基础架构、应用程序本身或存储在云中的数据的攻击。

可以使用一个或多个安全编码合规性度量(如OWASP Top 10 、 CWE Top 25 和 CERT 规则集)来检测上述列表中的项目,以实现安全软件开发。

SAST 工具如何帮助确保安全软件工程的最佳实践 ?

越来越多的组织正在投资软件安全开发和网络安全技术,其中包括SAST工具,如 Klocwork 。尽管在网络安全覆盖范围方面取得了许多进展,但大部分努力都集中在事后增加安全性和改进威胁检测上。

许多人现在意识到SAST 的重要性 ,并实施一个安全的开发过程。

仅仅应用新的安全技术是不够的。软件本身需要缩小风险差距。如果窗户保持打开状态,在前门上安装更坚固的锁是没有用的。

为什么软件开发中的安全性很困难?

安全软件的优先级不够大

对于大多数开发人员来说,软件开发中的安全性并不是一个足够重要的优先事项。

有句老话说,你需要:

•快速进入市场。

•涵盖计划的所有功能。

•维持高水平的质量。

但是,您只能拥有三个中的两个。因此,虽然质量是对话的一部分,但安全性往往被抛在后面。

功能和截止日期推动开发清单。而且,安全软件通常不是一项功能或要求。因此,它很少被解决。

质量不一定保证安全

提高软件质量和软件完整性 可以 减少缺陷导致的安全漏洞。但是,QA通常不考虑黑客攻击。

嵌入式开发中的活动部件太多

嵌入式系统庞大而复杂。

有新的和旧的代码- 以及连接组件。而且,嵌入式系统在各种操作系统上运行。

多个开发团队合作开发软件。而且,它们通常遍布世界各地。

更不用说确保软件正常运行已经足够困难了。确保软件安全可能更加困难。

没有足够的安全培训

不幸的是,许多参与软件开发的人不知道如何识别安全问题。这包括某些软件需求的安全影响,或者说缺乏这些需求。

而且,他们不知道安全性是如何影响软件的:

•建模

•架构

•设计

•实现

•测试

•准备分发和部署

因此,开发人员可能无法设计安全软件。可能缺乏安全要求。而且,开发人员可能不了解错误如何变成安全漏洞。

没有人拥有安全

大多数嵌入式开发团队都没有负责软件安全的人员。相反,他们依靠各种角色(从产品管理到开发再到QA)来确保软件安全。而且,这并不总是有效。

安全软件开发的10 个最佳实践

了解我们可能会遇到上述一个或多个常见的AppSec 问题后,请问问自己:“确保代码开发、实践、流程或方法安全的最有效方法是什么?

现代思维表明,安全软件开发与创建软件应用程序的方法有关,这些应用程序是出于安全考虑而有意设计和执行的。

即使您可以访问用于扫描和分析软件的最佳测试工具链,此过程也应需要实施各种实践和方法,以识别和减轻软件开发生命周期每个阶段的潜在安全威胁和弱点。

以下是安全软件开发的10 个最佳实践:

1. 威胁建模

威胁建模涉及分析软件体系结构并识别潜在的安全威胁和漏洞。这有助于在设计软件时考虑到安全性并实施必要的安全控制。

2. 安全编码

开发人员必须遵守安全编码实践,例如输入验证、安全数据存储和安全通信协议。安全编码实践有助于防止常见的安全漏洞,例如 SQL 注入、跨站点脚本和缓冲区溢出攻击。

3. 代码审查

代码审查涉及审查开发人员编写的代码,以识别潜在的安全问题。这有助于在开发过程的早期检测和纠正安全漏洞。

4. 测试

定期安全测试(包括渗透测试和漏洞扫描)可以帮助识别软件中的潜在安全漏洞。这有助于在部署软件之前修复安全问题。

5. 安全配置管理

配置管理可确保使用安全配置部署软件系统。这包括配置访问控制、网络设置和其他与安全相关的设置,以降低未经授权的访问风险。

6. 访问控制

访问控制确保只有授权人员才能访问软件系统。这包括实施用户身份验证和授权机制,以及基于角色的访问控制。

7. 定期更新和补丁

定期软件更新和补丁有助于解决安全漏洞并降低安全漏洞的风险。及时了解系统中使用的所有软件组件的安全补丁和更新非常重要。

8. 安全培训

参与软件开发过程的开发人员和其他人员应定期接受安全培训,以确保他们了解安全的重要性和安全软件开发的最佳实践。

9. 事件响应

组织应制定明确定义的事件响应计划来响应安全事件。这包括识别潜在的安全事件、控制安全事件的影响以及从安全事件中恢复。

10. 持续监控

持续监控有助于实时检测和响应安全事件。这包括监控系统日志、网络流量和用户行为,以发现任何安全漏洞的迹象。

通过遵循这些最佳实践,组织可以开发安全可靠的软件应用程序,以抵御潜在的安全威胁和漏洞。在软件开发的每个阶段优先考虑安全性至关重要,以防止未经授权的访问并保护敏感数据。

使用静态代码分析工具帮助确保安全的软件开发

静态代码分析支持安全开发过程,因为所有安全缺陷中有一半 是在源代码级别引入的。因此,在编写代码后立即查找和修复错误至关重要。

但是,许多开发人员缺乏安全培训。而且,在代码审查期间识别安全问题可能很困难。安全错误可能很微妙,即使对于训练有素的开发人员也很容易被忽视。

静态代码分析工具可以弥合这一知识差距,它们标记安全漏洞并加速代码审查。

使用静态分析,开发人员可以识别错误,包括:

•内存泄漏

•访问冲突

•算术错误

•数组和字符串溢出

这最大限度地提高了代码质量,并最大限度地减少了错误对产品和项目时间表的影响。

此外,静态代码分析工具(例如用于C / C++的 Helix QAC ,以及 Klocwork C,C++,C#Java,JavaScript,Python和Kotlin)可用于遵守CERT C(或MISRA)编码规则。而且,他们可以更快地识别CWE编码错误。

详细了解如何应用安全编码标准以更好地确保安全的软件开发过程。

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

    关注

    5082

    文章

    19104

    浏览量

    304796
  • 软件
    +关注

    关注

    69

    文章

    4921

    浏览量

    87394
收藏 人收藏

    评论

    相关推荐

    活动回顾 艾体宝 开源软件供应链安全最佳实践 线下研讨会圆满落幕!

    艾体宝与Mend举办研讨会,聚焦开源软件供应链安全,邀请行业专家分享合规管理、治理之路及最佳实践,圆桌讨论加深理解,助力企业更安全稳健发展。
    的头像 发表于 10-30 17:52 476次阅读
    活动回顾 艾体宝 开源<b class='flag-5'>软件</b>供应链<b class='flag-5'>安全</b>的<b class='flag-5'>最佳</b><b class='flag-5'>实践</b> 线下研讨会圆满落幕!

    TMS320C6201 DSP软件开发技术

    电子发烧友网站提供《TMS320C6201 DSP软件开发技术.pdf》资料免费下载
    发表于 10-26 09:25 0次下载
    TMS320C6201 DSP<b class='flag-5'>软件开发</b>技术

    华为云联合中国信通院发布 智能化软件开发落地实践指南

    9 月 19 日,在华为全联接大会 2024(HUAWEI CONNECT 2024)上,华为云联合中国信通院及合作伙伴,重磅发布国内首部《智能化软件开发落地实践指南》(下称《指南》),为产业界提供
    的头像 发表于 10-09 20:13 590次阅读
    华为云联合中国信通院发布 智能化<b class='flag-5'>软件开发</b>落地<b class='flag-5'>实践</b>指南

    PGA450-Q1软件开发指南

    电子发烧友网站提供《PGA450-Q1软件开发指南.pdf》资料免费下载
    发表于 09-30 14:25 0次下载
    PGA450-Q1<b class='flag-5'>软件开发</b>指南

    ECU电控软件开发及测试介绍

    本文重点介绍符合AutoSar架构的应用软件开发、MBD开发模式下的软件质量评估与优化方案、复杂场景下的ECU性能压力测试方案。
    的头像 发表于 09-26 14:25 3325次阅读
    ECU电控<b class='flag-5'>软件开发</b>及测试介绍

    9月12日云技术研讨会 | ECU电控软件开发及测试全流程解决方案

    本次研讨会,经纬恒润将结合业务团队多年来在软件开发和测试领域的工程实践经验,分享探讨基于AutoSar架构的应用软件开发、基于MBD开发软件
    的头像 发表于 09-26 14:18 1376次阅读
    9月12日云技术研讨会 | ECU电控<b class='flag-5'>软件开发</b>及测试全流程解决方案

    RTOS开发最佳实践

    基于RTOS编写应用程序时,有一些要注意事项。在本节中,您将学习RTOS开发最佳实践,例如POSIX合规性、安全性和功能安全认证。
    的头像 发表于 08-20 11:24 447次阅读

    BQ769x2 软件开发指南

    电子发烧友网站提供《BQ769x2 软件开发指南.pdf》资料免费下载
    发表于 08-12 14:41 0次下载

    嵌入式软件开发与AI整合

    嵌入式软件开发与AI整合是当前技术发展的重要趋势之一。随着人工智能技术的快速发展,嵌入式系统越来越多地集成了AI算法,以实现更复杂的智能功能。以下是关于嵌入式软件开发与AI整合的详细分析
    的头像 发表于 07-31 09:25 694次阅读
    嵌入式<b class='flag-5'>软件开发</b>与AI整合

    2024 ACT汽车软件安全技术周 龙智即将携全方位汽车软件开发解决方案亮相,助力应对汽车软件开发功能安全

    ,分享推动汽车软件开发与功能安全的创新实践。 ATC作为汽车技术会议领域的领先平台,专注于汽车电子与软件版块的技术交流将近10年历程,深耕行业问题,触达客户需求。 2024年7月18-
    的头像 发表于 07-08 16:17 544次阅读
    2024 ACT汽车<b class='flag-5'>软件</b>与<b class='flag-5'>安全</b>技术周 龙智即将携全方位汽车<b class='flag-5'>软件开发</b>解决方案亮相,助力应对汽车<b class='flag-5'>软件开发</b>功能<b class='flag-5'>安全</b>

    【《软件开发珠玑》阅读体验】+ 心得

    【《软件开发珠玑》阅读体验】+ 心得 感谢电子发烧友论坛提供的读书机会。读这本书使我在编程方面多了位资深老师。 在软件项目开发领域的时,我阅读了《软件开发珠玑》这本书。它以独特的视角和
    发表于 06-23 17:56

    上位机软件开发用什么语言

    上位机软件开发是指开发用于与下位机(如PLC、单片机等)进行通信、控制和数据处理的计算机软件。上位机软件在工业自动化、物联网、智能家居等领域有着广泛的应用。选择合适的编程语言对于
    的头像 发表于 06-06 10:44 1755次阅读

    广告电商+超级云APP结合 # 软件开发# 模式开发# 小程序开发# App开发

    软件开发APP
    jf_01576396
    发布于 :2024年04月09日 17:42:13

    keil arm软件开发指南

    电子发烧友网站提供《keil arm软件开发指南.pdf》资料免费下载
    发表于 01-26 15:51 7次下载

    嵌入式软件开发软件开发的区别

    嵌入式软件开发软件开发是两个不同的概念,它们在一些关键方面有着明显的区别。嵌入式软件开发是指开发嵌入在硬件设备中的软件,而
    的头像 发表于 01-22 15:27 2268次阅读