FLOSS 最佳实践标准(通过徽章)
这是自由/自由和开源软件(FLOSS)项目的最佳实践集,以在通过,银色和金色徽章级别获得核心基础设施计划(OpenSSF)最佳实践徽章。您可以仅使用标准或其他信息来显示此列表。您还可以仅查看通过,银和金标准,以及全套标准。
有关这些条件的更多信息,请参见条件讨论。
通过
基本
基本项目网站内容
FLOSS许可证
文档
其他
-
项目网站(网站,存储库和下载URL)必须使用TLS支持HTTPS。
[sites_https]
-
该项目必须有一个或多个讨论机制(包括建议的更改和问题),可搜索,允许通过URL访问消息和主题,使新人能够参与一些讨论,并且不需要客户端安装专有软件。
[discussion]
-
项目应该提供英文文档,并能够接受英文的代码的错误报告和评论。
[english]
-
必须维护该项目。
[maintained]
变更控制
公开的版本控制的源代码存储库
唯一版本编号
发行说明
-
该项目必须在每个版本中提供发布说明,这是该版本中主要变化的可读的摘要,以帮助用户确定是否应升级,升级影响将如何。发行说明不能是版本控制日志的原始输出(例如,“git log”命令结果不是发行说明)。其产出不适用于多个地点的项目(如单个网站或服务的软件),并采用持续交付,可以选择“N/A”。
{N/A justification}
{Met URL}
[release_notes]
-
发行说明必须列出每个新版本中修复的每个公开的漏洞。如果没有发行说明或者没有公开的漏洞,选择“不适用”。
{N/A justification}
[release_notes_vulns]
报告
错误报告流程
漏洞报告流程
质量
可工作的构建系统
自动测试套件
新功能测试
警告标志
-
该项目必须启用一个或多个编译器警告标志,“安全”语言模式,或者使用单独的“linter”工具查找代码质量错误或常见的简单错误,如果至少有一个FLOSS工具可以在所选择的语言实现此条款。
{N/A allowed}
[warnings]
-
该项目必须处理警告。
{N/A allowed}
[warnings_fixed]
-
建议在实际情况下,项目以最严格方式对待项目生成的软件中的告警。
{N/A allowed}
[warnings_strict]
安全
安全开发知识
使用基础的良好加密实践
-
项目生成的软件默认情况下,只能使用由专家公开发布和审查的加密协议和算法(如果使用加密协议和算法)。
{N/A allowed}
[crypto_published]
-
如果项目生成的软件是应用程序或库,其主要目的不是实现加密,那么它应该只调用专门设计实现加密功能的软件,而不应该重新实现自己的。
{N/A allowed}
[crypto_call]
-
项目所产生的软件中,所有依赖于密码学的功能必须使用FLOSS实现。
{N/A allowed}
[crypto_floss]
-
项目生成的软件中的安全机制使用的默认密钥长度必须至少达到2030年(如2012年所述)的NIST最低要求。必须提供配置,以使较小的密钥长度被完全禁用。
{N/A allowed}
[crypto_keylength]
-
项目产生的软件中的默认安全机制不得取决于已被破解的密码算法(例如,MD4,MD5,单DES,RC4,Dual_EC_DRBG)或使用不适合上下文的密码模式(例如,ECB模式几乎不适当,因为它揭示了密文中相同的块,如 ECB企鹅所示。CTR模式通常是不合适的,因为如果重复输入状态,则它不执行认证并导致重复)。
{N/A allowed}
[crypto_working]
-
由项目产生的软件中的默认安全机制不应该依赖于具有已知严重弱点的加密算法或模式(例如,SHA-1密码散列算法或SSH中的CBC模式)。
{N/A allowed}
[crypto_weaknesses]
-
项目产生的软件中的安全机制应该对密钥协商协议实施完美的前向保密(PFS),如果长期密钥集合中的一个长期密钥在将来泄露,也不能破坏从一组长期密钥导出的会话密钥。
{N/A allowed}
[crypto_pfs]
-
如果项目产生的软件存储用于外部用户认证的密码,则必须使用密钥拉伸(迭代)算法(例如,PBKDF2,Bcrypt或Scrypt)将密码存储为每用户盐值不同的迭代散列 。
{N/A allowed}
[crypto_password_storage]
-
由项目生成的软件中的安全机制必须使用密码学安全的随机数生成器生成所有加密密钥和随机数,并且不得使用密码学不安全的生成器。
{N/A allowed}
[crypto_random]
安全交付防御中间人(MITM)的攻击
修正公开的漏洞
其他安全问题
分析
静态代码分析
动态代码分析