给OpenSSL提交纠错的二三事

我现在也是github上7k+ star项目的贡献者之一了(滑稽

作为Tsmart-IMChecker小组副组长,我们发现了openssl项目源代码中一些潜在缺陷,打算申请CVEID,在这记录下申请CVEID和给openssl纠错时出现的一些事。

申请CVEID

  1. 访问cveform,在1处选择Request a CVE ID;在2处填入邮箱;下面的PGP Key是用于加密的,可以不填

    cve1

  2. 选择需要申请的ID数目;在3处点选复选框;在4处选择缺陷类型;在5处填写受影响的厂商以及产品版本

    cve2

  3. 选择该缺陷是否已被厂商确认,一般不影响结果;选择攻击类型,一般为Remote;选择影响,我们小组发现的问题一般都是DoS;填写受影响的组件,一般为出错的文件;填写攻击方式,一般为poc,可以不填

    cve3

  4. 填写描述,描述应该尽可能地描述“在哪?什么后果?为什么?”;填写发现者;填写ref,可以放上github issue链接;填写其他信息

    cve4

  5. 填写验证码,提交

至此,申请CVEID的步骤已经结束,提交完表单之后,CVE会对你的申请进行审核,然后给你的邮箱发送一封邮件,里面可能包含修改意见等,如果需要修改,直接回复邮件即可(不要改邮件主题)。


但是CVE官方对我们说,OpenSSL有权发CVEID,叫我们直接跟他们商量,而OpenSSL叫我们提交pull request,也就是帮他们顺手把缺陷给修复了。。。

给OpenSSL发pull request

OpenSSL官网说所有贡献者做出non-trival的贡献之前要签署一份CLA(Contributor License Agreement)协议,个人贡献者需要签署ICLA协议,将协议写好之后直接将协议发送给legal@opensslfoundation.org,审核通过之后即可对OpenSSL做出贡献。

修改步骤就是一般的pull request步骤

  • 发issue(这步在前面申请CVEID的时候已经做过了)
  • fork openssl/openssl
  • 将代码clone到本地
  • 修改
  • push
  • pull request

有几点需要注意

  • 要遵守openssl的编码规范

  • 修改的commit message需要一定的说明:

    1
    2
    3
    4
    5
    [path/to/file]: [changes content]
    more specific description
    Fixes #xxxx

步骤命令:

1
2
3
4
5
6
git clone [fork_repo.git]
cd fork_repo
do_some_changes
git add changed/files
git commit -m "commit message"
git push

(如果需要修改最近一次commit的message,可以用git commit --amend修改完成后用git push -f

提交了pull request之后注意一下reviewer反馈的信息就好了。