19、软件供应链安全:人员培训与安全控制

软件供应链安全:人员培训与安全控制

1. 人员培训的重要性与方式

1.1 开发团队的持续培训

持续的安全意识和培训对于提升开发团队应对不断演变的威胁和漏洞的能力至关重要。例如,可利用 O’Reilly 学习平台上的培训资源,但具体的培训需依据组织使用的技术而定。

1.2 夺旗赛(CTF)活动

CTF 活动是一种模拟竞赛,为开发者、测试人员、安全工程师和其他技术专家提供了在安全环境中实践学习的机会。参与者需找出故意植入的隐藏漏洞和弱点,成功利用漏洞找到象征“旗帜”的团队或个人将获得相应分数。挑战通常按难度级别分类,参与者根据挑战难度和解决速度得分。组织可举办内部 CTF 活动,个人也可参加外部由公司、组织和会议赞助的活动。开发团队还可专门安排时间进行相互代码的渗透测试,这种竞赛和奖励机制有助于培养团队凝聚力、积极的安全文化,并持续推动安全开发。

1.3 第三方供应商的培训

作为健全软件供应链流程的一部分,第三方和第 n 方供应商应根据其职责接受相应的安全意识和培训。与供应商签订的合同和协议应包含审查其培训计划的条款,供应商需提供证据证明其员工接受过管理职责、数据分类和其他相关控制措施的培训。

1.4 制造和分销人员的培训

在制造场所或配送中心,软件或固件存在被攻击的风险,因此所有接触产品创建、构建和组装系统及流程的人员都应接受培训,以识别和抵御网络安全威胁。培训主题包括物理安全、人员身份验证、OT 和 IIoT 网络安全基础知识、登录和密码管理、恶意软件防范、数据安全和道德等。设计培训计划时,需考虑组织制造和分销人员的特殊情况,如技术知识水平、临时员工、永久员工流动率、语言要求以及对组织系统的访问权限等。培训频率应与安全培训一致,重复培训对于保持警惕和防范网络安全威胁至关重要。除生产线人员外,制造工程师、工业工程师、经理、网络工程师和 IT/OT 安全资源等也应接受相关培训,ISA/IEC 62443 的培训和认证有助于理解工业自动化和控制系统(IACS)的评估、设计、实施、操作和维护。

1.5 客户项目和现场服务人员的培训

当人员参与客户项目、现场或系统工作时,应要求他们接受专门的网络安全培训,以避免对客户造成风险或破坏软件供应链。培训主题包括发现异常行为或不安全情况时及时通知客户和组织、在访问位置或系统时保持安全操作、仅使用客户和组织批准的设备和软件、在使用或传输文件前遵循扫描和完整性检查程序等。

1.6 终端用户的安全保障

虽然不能期望终端用户深入了解安全实践,但产品团队应设计产品和服务,使他们能够轻松安全地使用软件。可通过针对性的文档、工具提示、帮助说明和特殊视频等方式提高终端用户的安全意识。同时,产品团队应设置内置功能和配置,协助用户安全操作产品或应用。

2. 安全控制措施

2.1 基础设施安全控制

控制编号 控制内容
IS - 01 实施创建、配置、更新和操作环境所需的政策、流程和控制
IS - 02 记录和监控访问控制、访问提升、权限修改和对象执行等事件
IS - 03 限制仅允许访问批准的端点,要求多因素认证,并集成身份和访问管理或单点登录系统,对所有账户遵循最小权限和按需知晓原则
IS - 04 监控所有账户的异常行为和未经授权的上传或下载,通过安全管理工具和安全运营中心监控管理账户的访问和操作,持续监控下载量和异常行为模式
IS - 05 维护开发组织使用的所有工具、脚本和 API 的资产清单,验证清单信息的真实性和完整性
IS - 06 对所有应用程序、系统和环境进行适当的补丁和更新维护
IS - 07 识别应用程序、系统和环境的威胁,实施缓解和补偿控制措施以防止威胁
IS - 08 优先对生产环境进行日志记录、监控和打补丁,集成 SOC/SOAR/SIEM 流程和系统
IS - 09 记录所有软件分发路径和位置,监控分发位置和部署的恶意活动
IS - 10 维护制造和供应链环境的资产清单,确保环境安全,记录和监控所有可访问软件或固件的设备和系统的事件
IS - 11 合同协议应明确基础设施、访问、日志记录和监控在客户验收测试阶段的网络安全责任
IS - 12 维护服务组织使用的所有应用程序、系统、工具和脚本的资产清单,监控所有服务端点和工具的恶意威胁

2.2 安全开发生命周期控制

控制编号 控制内容
SDL - 01 维护安全开发生命周期(SDL)框架和政策,要求员工、承包商和第三方在应用程序和产品开发中遵循 SDL 实践
SDL - 02 记录和维护应用程序和产品的安全要求,包括流程、控制、适用法律和法规要求的安全要求
SDL - 03 在设计应用程序和产品时采用安全设计和隐私设计概念,对所有代码、服务、系统、基础设施、API 和协议进行威胁建模
SDL - 04 遵循安全编码规则,利用工具缓解已知弱点,开发安全的产品和应用程序
SDL - 05 使用各种工具和技术对应用程序和产品进行安全测试
SDL - 06 维护漏洞管理框架、漏洞处理政策和漏洞披露政策,以识别、评估、修复和向外部方披露漏洞

2.3 源代码、构建和部署控制

控制编号 控制内容
SCBD - 01 仅使用有良好支持且来源合法的开源代码,持续审查开源代码的恶意威胁和漏洞,审查源代码维护者和贡献者的所有权风险
SCBD - 02 审查所有开源和商业许可证,确保协议合规并避免潜在许可证问题
SCBD - 03 更新或修补软件、固件和代码以解决已修复的漏洞
SCBD - 04 审查所有生成式 AI 许可证的产权问题,审查生成代码的风险、威胁、漏洞和质量
SCBD - 05 为特定平台和代码语言维护一套安全编码标准,对开发人员进行安全编码实践教育
SCBD - 06 使用增强集成开发环境(IDE)和静态应用程序安全测试(SAST)工具的功能和插件,识别安全编码规则和易受攻击的编码模式,使用软件组合分析(SCA)工具识别开源代码中的漏洞
SCBD - 07 为代码、系统、应用程序和环境建立并维护严格的变更管理政策
SCBD - 08 记录源代码的来源,尽可能审查源代码的原产国和来源,评估安全风险
SCBD - 09 在内部托管所有代码包和库依赖项
SCBD - 10 在构建和 CI/CD 流程中使用临时环境,对构建和部署进行可重复和可再现的完整性检查
SCBD - 11 使用可信证书颁发机构的私钥对所有代码、驱动程序、脚本和应用程序文件进行签名
SCBD - 12 在部署过程中通过验证证书、签名和哈希值来验证软件包的完整性

2.4 云控制

控制编号 控制内容
CLD - 01 记录管理、管理和操作云环境及应用程序的所有各方的角色和职责
CLD - 02 记录云基础设施和应用程序的安全控制和要求,进行评估以识别差距并制定行动计划
CLD - 03 控制源代码仓库中的云基础设施和工件,实施仅允许在仓库内进行更改的变更管理
CLD - 04 使用适当的技术和访问控制确保所有环境、应用程序和连接(包括 API)的安全,并进行测试、记录和监控
CLD - 05 对云基础设施、环境和软件的各个方面进行测试和扫描
CLD - 06 扫描并防止直接对生产环境进行更改,使用不可变基础设施技术部署云环境
CLD - 07 确保并监控云环境、容器和微服务之间的所有连接

2.5 知识产权和数据控制

控制编号 控制内容
IPD - 01 维护具有定义、标准和示例的数据分类政策
IPD - 02 维护引用数据分类政策和员工及承包商合规责任的道德政策,监控政策和保密协议的合规情况
IPD - 03 通过数据分类、道德和合规培训,教育所有员工和承包商了解知识产权和数据丢失风险
IPD - 04 保护所有基础设施、技术和系统中的机密和敏感数据,监控系统和应用程序日志以发现数据丢失迹象
IPD - 05 实施数据安全技术,确保数据在静止、传输和使用过程中的安全
IPD - 06 维护人工智能(AI)政策,确保公共和私有大语言模型(LLM)的使用符合数据分类政策和数据安全要求
IPD - 07 使用技术和服务监控代码、机密信息、证书和密钥的数据丢失情况
IPD - 08 实施密钥管理系统,保护机密信息、令牌、密钥和其他知识产权
IPD - 09 使用安全设计、隐私设计、威胁建模、安全测试和渗透测试来预防、检测和修复设计缺陷
IPD - 10 确保所有基础设施、系统和应用程序配置的安全,定期审查配置并进行威胁建模以识别风险
IPD - 11 设计安全的 API,并对其进行威胁建模、安全测试和渗透测试
IPD - 12 修补基础设施、系统和应用程序中的漏洞,防止知识产权和数据丢失

2.6 软件透明度控制

控制编号 控制内容
ST - 01 为每个软件生产版本生成软件物料清单(SBOM)
ST - 02 建立漏洞披露流程,并根据组织的披露标准发布漏洞信息
ST - 03 生成所需的透明度工件,如软件证明
ST - 04 识别并利用软件透明度工件的共享机制
ST - 05 捕获软件、固件和硬件的来源信息
ST - 06 为请求的软件、固件和硬件准备并提供透明度包

2.7 供应商控制

控制编号 控制内容
SP - 01 在供应商选择和评估过程中纳入网络安全因素
SP - 02 研究供应商的网络安全态势,评估风险和透明度
SP - 03 请求供应商提供其 IT 安全控制的证据,特别是在软件开发系统、环境和基础设施方面的控制
SP - 04 评估供应商的技术领导力,请求其应用程序安全组织结构和问责制的证据,与关键供应商的网络安全领导者建立关系
SP - 05 请求供应商提供其安全开发实践、框架和控制的证据
SP - 06 请求供应商提供其网络安全意识、安全开发生命周期流程、安全编码和安全测试培训计划的证据,以及开发前强制培训的政策
SP - 07 请求供应商演示其安全开发实践,包括威胁建模、安全编码实践、静态代码分析和安全测试
SP - 08 请求供应商提供其构建管理、DevSecOps 和发布管理实践的证据,包括工具、报告、流程、访问控制、批准和工具及事件管理系统的日志
SP - 09 请求供应商提供其扫描、漏洞管理和补丁流程的证据,包括政策、程序、报告、日志和补丁服务级别协议
SP - 10 请求供应商提供其云基础设施、访问控制、密钥、配置、测试、责任和服务级别协议的管理实践和报告
SP - 11 请求供应商提供其开发服务的证据,包括代码质量报告、测试报告和漏洞情况。如有必要,请求开发人员信息,如位置和背景调查证据
SP - 12 请求供应商提供其对任何有权访问软件或固件的人员或流程的访问控制和完整性检查的证据
SP - 13 在供应商合同签订过程中纳入网络协议,包括网络风险和符合采购组织政策的最低安全标准
SP - 14 将网络主题和监控纳入现有的供应商管理过程,监控和审查应包括漏洞、数据泄露和供应链问题,可能需要进行审计或重新评估

2.8 制造和设备安全控制

控制编号 控制内容
MDS - 01 验证制造设备在设计、开发、制造、测试和运输过程中采用了信息安全、网络安全和数据安全的最佳实践
MDS - 02 制定明确的安全设施访问政策和程序,对所有人员进行物理控制和程序培训,维护和测试组织及场所的物理安全控制
MDS - 03 利用硬件物料清单(HBOM)和软件物料清单(SBOM)中的信息,在制造过程中对芯片、集成电路、组件、固件和嵌入式软件进行组件认证和完整性检查
MDS - 04 在制造过程中使用芯片、组件和产品之前,验证其真实性
MDS - 05 跟踪产品在供应链中的物理和数字部件、组件和产品,捕获产品的保管链
MDS - 06 在设备内实施硬件、固件和嵌入式软件保护措施

2.9 人员控制

控制编号 控制内容
PPL - 01 建立并维护一个拥有经验丰富且训练有素的网络安全资源的企业安全组织,鼓励安全人员获得认证和持续教育
PPL - 02 建立并维护一个安全倡导者社区,以吸引组织参与、提高安全意识、扩展网络安全知识并促进网络安全原则和政策的采用
PPL - 03 为组织内的所有角色提供网络安全培训和意识计划,跟踪强制和可选课程的完成情况

综上所述,强大的软件供应链的最后一环是参与其中的人员的网络安全态势。为开发团队、供应商、制造和服务人员提供详细的培训课程,对于保障软件供应链的安全至关重要。每个人都应意识到自己行为的影响,并不断努力遵循正确的软件供应链实践,以提高全球组织的安全态势,抵御威胁我们系统、数据和生活的恶意行为者。

3. 安全事件响应与风险应对

3.1 疑似网络安全事件的响应

在制造和分销环境中,设计培训计划时需考虑多种特殊条件,如员工的技术知识水平、临时员工比例、永久员工流动率、语言要求以及对组织系统(如制造、测试或实验室设备)的访问权限等。在提供网络安全培训时,应借鉴安全培训的方式和频率,通过重复培训来保持员工的警惕性,防范网络安全威胁。

除了生产线人员,制造工程师、工业工程师、经理、网络工程师和 IT/OT 安全资源等也需要接受网络安全培训。ISA/IEC 62443 的培训和认证能够帮助他们理解工业自动化和控制系统(IACS)的评估、设计、实施、操作和维护。

3.2 风险监测与管理

  • 供应商风险 :供应商可能带来多种风险,如软件供应链安全漏洞、数据泄露等。因此,需要对供应商进行全面的评估和持续的监控。评估内容包括供应商的网络安全态势、安全开发实践、漏洞管理和补丁流程等。监控则主要关注供应商的安全事件、数据泄露情况以及供应链问题。
  • 技术风险 :技术风险主要包括 API 数据风险、配置错误、数据安全问题、设计缺陷、代码和密钥丢失以及产品和系统中的漏洞等。为了应对这些风险,需要采取一系列措施,如实施安全控制、进行威胁建模、安全测试和渗透测试等。

3.3 风险应对流程

graph LR
    A[识别风险] --> B[评估风险]
    B --> C[制定应对策略]
    C --> D[实施应对措施]
    D --> E[监控和评估效果]
    E --> F{是否有效?}
    F -- 是 --> G[结束]
    F -- 否 --> C

4. 软件供应链安全的最佳实践

4.1 安全开发实践

  • 遵循安全开发生命周期(SDL) :SDL 是一种全面的软件开发方法,涵盖了从需求分析、设计、编码、测试到部署和维护的整个过程。遵循 SDL 可以确保软件在整个生命周期内都具备较高的安全性。
  • 使用安全编码标准 :为特定平台和代码语言制定并遵循安全编码标准,能够减少代码中的安全漏洞。例如,避免使用不安全的函数、正确处理输入输出等。
  • 进行安全测试 :采用多种安全测试技术,如静态应用程序安全测试(SAST)、动态应用程序安全测试(DAST)、交互式应用程序安全测试(IAST)和运行时应用程序安全保护(RASP)等,对软件进行全面的安全检测。

4.2 供应链风险管理

  • 供应商评估和选择 :在选择供应商时,要对其进行严格的评估,包括网络安全能力、安全开发实践、合规性等方面。优先选择具有良好安全记录和强大安全能力的供应商。
  • 合同管理 :在与供应商签订的合同中,明确网络安全责任和要求,包括安全标准、漏洞披露和修复要求、数据保护等。同时,建立有效的监督和审计机制,确保供应商履行合同义务。
  • 持续监控 :对供应商的安全状况进行持续监控,及时发现并处理潜在的安全问题。可以通过监控供应商的安全报告、漏洞披露信息以及安全事件等方式来实现。

4.3 人员安全意识培养

  • 培训计划 :为组织内的所有人员提供全面的网络安全培训,包括安全意识培训、安全技能培训和安全法规培训等。培训内容应根据不同岗位的需求进行定制,确保员工具备必要的安全知识和技能。
  • 安全文化建设 :通过宣传、教育和激励等方式,营造良好的安全文化氛围,使员工自觉遵守安全规定,积极参与安全管理。例如,设立安全奖励制度,对表现优秀的员工进行表彰和奖励。

5. 总结与展望

5.1 总结

软件供应链安全是一个复杂的系统工程,涉及人员培训、安全控制、风险应对和最佳实践等多个方面。通过对人员进行全面的培训,实施严格的安全控制措施,建立有效的风险监测和管理机制,以及遵循安全开发和供应链管理的最佳实践,可以显著提高软件供应链的安全性,保护组织的系统、数据和业务不受恶意攻击的威胁。

5.2 展望

随着信息技术的不断发展和网络攻击手段的日益复杂,软件供应链安全面临着越来越多的挑战。未来,需要不断加强技术创新和管理创新,提高软件供应链的安全性和可靠性。例如,利用人工智能、区块链等新技术来增强安全控制和风险监测能力;加强国际合作,共同应对全球性的软件供应链安全问题。同时,还需要加强对终端用户的安全教育,提高他们的安全意识和防范能力,形成全社会共同参与的软件供应链安全防护体系。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值