我们都知道,所有的软件都有漏洞,安全是很难的,但不知为什么,当我们看到新的漏洞时,还是会感到惊讶。
漏洞
一个应用程序、系统、设备或服务的错误、缺陷、弱点或暴露,可能导致保密性、完整性或可用性的失败。
在2020年,有18395个漏洞被报告,这意味着每天有大约50个新漏洞被报告。这些数字只包括已经报告给MITRE的通用漏洞和暴露(CVE)数据库的内容,这意味着实际值可能要高得多。每年我们都会向世界上添加更多的软件,所以这些数字只会增加。我把这个数字列在这里并不是为了吓唬你;更确切地说,它们是生活中的一个事实,我们都需要意识到如何处理它们。
报告漏洞
漏洞的处理方式与典型的软件错误不一样。一个处理得当的漏洞会被私下报告给项目的维护者,然后在有关该漏洞的任何信息被公开之前被修复和发布。在GitHub Issues上报告一个安全问题似乎是个好主意,但事实并非如此。私下处理漏洞似乎有违直觉,尤其是对于一切都公开的开源项目,但这不仅是一种好的礼仪,更重要的是它减少了使用项目的所有人的潜在风险。
好吧,如果不是公开的问题跟踪器,那么你在哪里报告这个问题?
你在哪里报告一个漏洞
实际的 "你在哪里报告漏洞 "是事情变得复杂的地方;每个项目和公司都有不同的处理漏洞的过程。要想知道向谁报告一个问题往往是一件令人沮丧的事情;试着浏览一个网站,进行谷歌搜索,甚至可能在HackerOne或Bugcrowd等漏洞赏金网站上寻找。有一个更简单的方法!进入 security.txt这是一个RFC草案,目的是使安全策略的发现方法标准化。
定义一个security.txt ,很容易。在你的域名根部创建一个小的.well-known/security.txt 文件,包含你的安全团队的联系信息。在securitytxt.org上甚至有一个表格,可以在几秒钟内为你生成一个!
例如,Okta的https://www.okta.com/.well-known/security.txt是。
Contact: mailto:security@okta.com (1)
Expires: 2023-01-01T05:00:00.000Z (2)
# Optional Fields
Preferred-Languages: en (3)
Policy: https://www.okta.com/vulnerability-reporting-policy/ (4)
Hiring: https://www.okta.com/company/careers/ (5)
| 1 | 如何联系安全团队。 |
| 2 | 一个认为这个数据过时的日期。 |
| 3 | 安全团队喜欢的语言列表。 |
| 4 | 链接到有更多细节的报告政策页面。 |
| 5 | 甚至链接回相关的招聘信息。 |
security.txt 的内容,是对联系对象和去哪里寻找更多信息的快速总结,并不能替代现有的安全政策页面。尽管如此,它仍然可以包含额外的信息,如公司的PGP密钥、确认书和规范的URL信息。
如果你熟悉OpenID Connect,上述URL的 |
奖励:更新你的错误跟踪模板
如果我们作为开发者有阅读文档的习惯,RTFM就不会成为一件事,或者我们只是很忙。
一般来说,你的用户正在努力完成一些事情,他们认为阅读手册是浪费时间,或者至少是分散注意力,使他们无法完成任务。
- Joel Spolsky
joelonsoftware.com
如果你的项目使用公共错误跟踪器(如GitHub Issues),那么关于处理安全问题的信息需要对报告者显而易见。一种方法是定义一个 SECURITY.md文件并创建ISSUE_TEMPLATE.md ;这样一来,当报告人提交问题时,他首先看到的就是这个文件。例如,Spring安全问题模板的开头是。
<!--
For Security Vulnerabilities, please use https://pivotal.io/security#reporting
-->
| 这一点的巧妙之处在于HTML注释;只有报告人在打开一个问题时看到注释。当Markdown被渲染时,它不会被显示出来! |
了解更多关于应用程序安全的信息
大多数人都不知道漏洞需要特别的处理;在典型的大学计算机科学课程或编码训练营中并没有教授。关于如何报告安全问题的信息需要是显而易见和容易发现的。
如果你想了解更多关于应用程序安全的信息,请查看这些优秀的帖子。
如果你有问题,请在下面留下评论。如果你喜欢这篇文章,请在Twitter上关注@oktadev,在LinkedIn上关注我们,或者订阅我们的YouTube频道。