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编码错误。

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

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

    关注

    5186

    文章

    20145

    浏览量

    328723
  • 软件
    +关注

    关注

    69

    文章

    5297

    浏览量

    90863
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    AI赋能标准化流程:智能汽车软件CI/CT最佳实践新范式

    在智能汽车软件研发中,标准化流程是保障质量与合规的基石。ASPICE与ISO26262等标准要求开发团队在功能安全与过程成熟度之间保持平衡,但随着车载软件复杂度持续增加,传统CI/CT
    的头像 发表于 10-15 10:01 743次阅读
    AI赋能标准化流程:智能汽车<b class='flag-5'>软件</b>CI/CT<b class='flag-5'>最佳</b><b class='flag-5'>实践</b>新范式

    十大北京软件开发公司推荐:有哪些优点和缺点

    十大北京软件开发公司推荐:有哪些优点和缺点
    的头像 发表于 10-04 09:44 1116次阅读
    十大北京<b class='flag-5'>软件开发</b>公司推荐:有哪些优点和缺点

    2025北京软件开发公司推荐汇总:盘点10家优秀软件定制开发公司

    2025北京软件开发公司推荐汇总:盘点10家优秀软件定制开发公司
    的头像 发表于 09-30 09:16 2442次阅读
    2025北京<b class='flag-5'>软件开发</b>公司推荐汇总:盘点10家优秀<b class='flag-5'>软件</b>定制<b class='flag-5'>开发</b>公司

    汽车软件开发阶段安全的意义与原则

    上海磐时PANSHI“磐时,做汽车企业的安全智库”好书分享/《一本书读懂智能汽车安全》汽车软件开发阶段安全的意义与原则本文节选自SASETECH汽车
    的头像 发表于 09-05 16:16 667次阅读
    汽车<b class='flag-5'>软件开发</b>阶段<b class='flag-5'>安全</b>的意义与原则

    汽车软件开发必看:Perforce工具链助力高效开发与功能安全最佳实践

    无论是主机厂还是供应商,ISO 26262合规都是绕不开的课题。冗长的流程、复杂的标准是否让您的团队疲于应对?Perforce一体化工具链正是破解这一难题的钥匙!从静态代码分析到全生命周期管理,从安全合规到全球协作,Perforce帮助全球顶尖车企显著缩短合规周期,并确保代码安全
    的头像 发表于 08-01 10:49 837次阅读
    汽车<b class='flag-5'>软件开发</b>必看:Perforce工具链助力高效<b class='flag-5'>开发</b>与功能<b class='flag-5'>安全</b>的<b class='flag-5'>最佳</b><b class='flag-5'>实践</b>

    知识分享 | 敏捷方法在基于模型的软件开发项目中的应用

    传统的瀑布式软件开发流程存在诸多局限,这使得应用敏捷原则变得尤为重要,尤其是面对复杂且不断变化的开发环境时。作为最高效的软件开发方法之一,基于模型的开发(MBD)具有诸多优势。将敏捷原
    的头像 发表于 07-16 16:52 1049次阅读
    知识分享 | 敏捷方法在基于模型的<b class='flag-5'>软件开发</b>项目中的应用

    生产环境中Kubernetes容器安全最佳实践

    随着容器化技术的快速发展,Kubernetes已成为企业级容器编排的首选平台。然而,在享受Kubernetes带来的便利性和可扩展性的同时,安全问题也日益凸显。本文将从运维工程师的角度,深入探讨生产环境中Kubernetes容器安全
    的头像 发表于 07-14 11:09 480次阅读

    找电机控制软件开发兼职

    软件开发兼职人员,我现在有一个永磁无刷电机控制,220V,需要有相关经验的人来开发,兼职费用可以议谈,产品是增压泵相关产品,有兴趣给我留言,谢谢
    发表于 05-07 17:43

    芯科科技Unify软件开发套件更新

    Silicon Labs(芯科科技)最新发布的Unify 软件开发套件 (SDK) 更新内容引入了一系列功能,旨在大幅增强对Z-Wave开发的支持,包括优化的安全性以及协议功能。该版本标志着一个转变
    的头像 发表于 04-23 10:03 826次阅读

    电机故障模式识别软件开发

    电机故障诊断任务。实验证明该软件可以很好地应用到实践当中。纯分享帖,需要者可点击附件获取完整资料~~~(*附件:电机故障模式识别软件开发.pdf免责声明:本文系网络转载,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问
    发表于 04-07 17:33

    开源安全领航者!华为云 CodeArts Governance 构建更安全软件开发生命周期

    成分分析专业版已开启公测。 随着开源软件广泛应用,颠覆性技术不断涌现,如何在软件开发全流程中保障开源安全,成为企业面对的重要挑战。 根据研究数据显示,全球超过 99%的商业软件含有开源
    的头像 发表于 02-12 16:50 3017次阅读
    开源<b class='flag-5'>安全</b>领航者!华为云 CodeArts Governance 构建更<b class='flag-5'>安全</b>的<b class='flag-5'>软件开发</b>生命周期

    嵌入式软件开发符合ISO 26262 功能安全标准

    ISO 26262 功能安全标准的要求可能非常具有挑战性,尤其是当您的汽车系统中的某些部件相比其他部件具有更高的安全风险时。开发者如何在整个软件开发生命周期中保持对每一个汽车
    发表于 01-15 12:04 3次下载

    DevSecOps自动化在安全关键型软件开发中的实践、Helix QAC&amp;amp; Klocwork等SAST工具应用

    DevSecOps自动化旨在通过在软件开发生命周期的各个阶段集成安全流程,使用自动化工具和最佳实践来简化开发
    的头像 发表于 01-03 16:05 720次阅读
    DevSecOps自动化在<b class='flag-5'>安全</b>关键型<b class='flag-5'>软件开发</b>中的<b class='flag-5'>实践</b>、Helix QAC&amp;amp; Klocwork等SAST工具应用

    我国软件开发者数量突破940万

    2024开放原子开发者大会20到21日在武汉举办。工业和信息化部负责人透露,我国软件开发者数量突破940万。 开源就是开放软件的源代码,在遵守许可协议的前提下,任何人都可以使用、修改甚至再发布源代码
    的头像 发表于 12-24 13:52 709次阅读

    我国软件开发者数量超过940万

    在近日举办的开放原子开发者大会上,工业和信息化部负责人传来了一则令人振奋的消息:我国软件开发者数量已经突破940万大关。这一数据不仅彰显了我国在软件开发领域的雄厚实力,也预示着我国在全球软件开
    的头像 发表于 12-23 11:08 904次阅读