未知来源软件SOUP
SOUP:(Software of Unknown Provenance,未知来源软件)
是否为SOUP的判断,关键在于软件组件的来源、文档完整性、维护和更新的可追溯性。SOUP通常指的是那些没有明确来源、缺乏充分文档或未经适当验证的软件。如果一个组件满足以下条件,它通常不会被归类为SOUP:
明确的来源:可以追溯到官方或可信的第三方提供者。
充分的文档:有详细的文档说明其功能、用法和安全性。
维护和更新:有一个明确的维护计划和更新记录。
合规性:符合相关的法律法规和行业标准。
以.NET Framework为例,虽然它是微软官方提供的一个广泛使用的软件框架,具有明确的来源和详细的文档,因此通常不会被视为SOUP。然而,如果一个组织在使用.NET Framework时对其进行了深度定制,而这些定制没有得到适当的文档化或验证,那么这些定制部分可能会被视为SOUP。
对于是否计入SOUP,没有绝对的明确要求,这取决于组织的风险管理策略和合规性要求。一般来说,任何未经验证、来源不明或维护不透明的软件组件都应被视为潜在的SOUP,并在SBOM中进行相应的标记和处理。
在实际操作中,组织应该建立一套内部的SBOM管理和审查流程,确保所有软件组件都经过适当的审查,并且它们的使用和依赖关系得到适当的管理。这包括对自研软件中使用的所有组件进行分类、记录和定期更新,以及对可能的SOUP组件进行额外的风险评估和控制措施。
关于SOUP检查示例
根据FDA的反馈和提出的要求,软件描述文件中有一项遗漏,即未将STMicroelectronics Hardware Application Layer(HAL)标识为SOUP(Software of Unknown Provenance,未知来源软件)项目,如果该编译器实际使用了HAL。根据《医疗设备的网络安全:质量系统考虑因素及上市前提交的内容》指南,在产品生命周期内,识别SOUP项目是确保设备基本安全的必要条件。未将HAL视为SOUP项目(如果使用了HAL),可能会导致没有按计划定期回顾SOUP,以及未能及时关注制造商的通知,从而可能忽视制造商未来可能发现的缺陷,导致未能识别与基本安全相关的软件缺陷,可能会对患者造成伤害或延误治疗和缺氧。
根据FDA的补充内容,他们关注的问题在于是否使用了STMicroelectronics的硬件应用层(Hardware Application Layer, HAL)作为软件的一部分,并且是否将其作为软件组件(Software of Unknown Pedigree, SOUP)进行了适当的识别和管理。SOUP是指那些没有经过充分验证和确认的软件组件,这些组件可能对医疗设备的安全性和有效性产生影响。
为了响应FDA的要求,以下是处理这个问题的步骤
确认HAL的使用情况:
确认编译环境是否确实使用了STMicroelectronics的HAL。
如果使用了HAL,收集有关HAL版本的详细信息,包括任何相关的文档和源代码(如果适用)。
评估HAL作为SOUP:
根据FDA的指导原则,评估HAL是否应被视为SOUP。
如果HAL被视为SOUP,那么需要确保其符合基本安全性要求,并在整个产品生命周期内进行管理。
更新软件描述文件:
在012_Item 34-2 Software Description.pdf的子条款5.2中更新信息,明确指出HAL的使用情况。
如果HAL是SOUP的一部分,确保在文档中详细列出,并提供其版本信息和来源。
制定审查计划:
制定一个审查计划,定期检查制造商发布的通知,以识别和评估可能影响HAL的任何已知问题或更新。
确保审查计划包括对制造商通知的定期审查,以及对发现的问题进行及时响应的流程。
风险管理:
将HAL的审查纳入整体的风险管理流程,确保对可能的基本安全性相关缺陷进行识别和管理。
更新风险管理文件,包括对HAL的评估和审查计划。
包括对SOUP软件的网络安全测试,因为FDA要求全部的软件组件(参考SBOM)都要进行验证与确认
沟通与FDA:
将更新后的软件描述文件和审查计划提交给FDA,以证明已经采取了适当的措施来管理HAL作为SOUP的风险。
保持与FDA的沟通,确保所有的要求都得到满足,并及时响应任何进一步的问题或关注点。
通过这些步骤,可以确保医疗设备的软件组件得到适当的管理,从而满足FDA的基本安全性要求,并保护患者免受潜在风险的影响。
计入SOUP软件后可能的测试
如果一个软件组件被归类为软件未知来源(SOUP),那么确实需要对其进行测试以确保医疗设备的安全性和有效性。测试的目的是验证SOUP组件的功能性、性能、安全性以及它们对整个医疗系统的影响。以下是对SOUP进行测试的一些关键步骤:
1. 测试计划
定义测试目标:明确测试的目的,包括验证SOUP的安全性、功能性和兼容性。
确定测试范围:列出所有需要测试的SOUP组件和相关的测试用例。
选择测试方法:根据SOUP的特性和用途选择合适的测试方法,如单元测试、集成测试、系统测试和回归测试。
2. 测试执行
单元测试:对SOUP的每个独立模块或函数进行测试,确保它们按预期工作。
集成测试:测试SOUP与其他系统组件的集成情况,确保它们能够正确交互。
系统测试:在整个系统中测试SOUP,包括性能测试和安全性测试,确保它不会影响系统的整体稳定性和安全性。
回归测试:在SOUP更新或系统变更后重新运行测试,确保变更没有引入新的问题。
3. 安全性测试
渗透测试:模拟黑客攻击,尝试利用SOUP中的漏洞。
静态代码分析:使用自动化工具分析SOUP的源代码,寻找潜在的安全漏洞。
动态分析:在运行时监控SOUP的行为,寻找异常或恶意行为。
4. 测试结果分析
记录测试结果:详细记录所有测试的结果,包括成功、失败和发现的问题。
问题修复:对测试中发现的问题进行修复,并确保修复措施得到验证。
5. 文档化
测试报告:编写详细的测试报告,包括测试方法、结果和建议。
风险评估:基于测试结果进行风险评估,确定是否需要进一步的测试或改进措施。
6. 审查和批准
内部审查:确保测试结果和报告得到内部团队的审查和批准。
监管审查:如果适用,将测试结果和报告提交给FDA或其他监管机构进行审查。
通过这些测试活动,可以确保SOUP组件不会对医疗设备的基本安全性构成威胁,并满足监管要求。
暂无评论