
当然,您已经多次听到“寻虫”一词。 我敢于假设,您不会介意通过发现某人程序中的潜在漏洞来赚一两百(甚至上千)美元。 在本文中,我将向您介绍一个技巧,该技巧将有助于分析开放源代码项目以发现此类漏洞。
自由和开源软件的Bug赏金-这是什么?
Bug赏金是各种程序的统称,网站和软件开发人员会在其中发现或发现漏洞而提供现金奖励。 除了诸如Apple或Microsoft这样的大型公司出名的Bug Bounty程序之外,还有一些程序可以搜索开源项目中的漏洞。
他们中的许多人都可以在HackerOne上找到,但是最大的也许是FOSSA-免费和开源软件审核。 这是一个由欧盟赞助的有关搜索各种开源项目中的漏洞的程序。 总奖金高达850,000欧元!
如何参加?
首先,您需要在
HackerOne上注册。 我们只需要开源项目。 HackerOne上有一个
完整的列表 。
如果您想参加欧盟的Bug Bounty,请在
此处找到参与该计划的项目列表。 对于大多数项目而言,只需在HackerOne上进行注册就可以了,但是intigriti.com网站上也列出了许多列出的程序。
要参与,您必须为自己选择一个合适的项目,然后仔细阅读参与条款。 如果您同意,请进入实际部分。
为了找到一个漏洞并赚钱,您只需要下载一个项目(或从GitHub克隆一个项目),并仔细分析每个代码行,检查每个表达式中是否存在潜在的错误。 如果发现有问题,可能会影响程序的安全性-报告并发送给开发人员。 如果他们认为您的发现值得奖赏-您就可以把钱花在口袋里:)。
但是简单性在哪里?
简单的部分是您不必仅手动分析代码。 有一些工具可让您自动搜索代码中的错误。 例如-静态代码分析器。 我更喜欢使用我们的工具
-PVS-Studio 。 PVS-Studio分析仪能够发现用C ++,C#和Java编写的代码中的错误,并且具有易于使用的界面。 此外,还有一些免费使用的选项。 无论如何,还有其他各种
代码分析器 。
当然,静态分析器不能揭示所有错误。 没关系! 毕竟,我们的目标是快速,轻松地发现错误,而不是全部发现。
下载并构建项目后,只需单击几下即可开始分析。 结果将是报告,其中包含分析仪生成的一些(通常是非常重要的)警告。 在PVS-Studio中,它们分为三个确定性级别。 您应该从第一级警告开始,以便可以从分析结果中去除橙色和黄色级别。
过滤分析结果的示例。
因此,您只需要查看其余警告并选择可能构成最大危险的地方。 值得检查的是,在运行程序时是否可以直接复制其中的任何一个。 如果您能够做到这一点-这不仅会增加开发人员接受报告的机会,而且肯定会增加付款金额。 在这种情况下,可见度是您最好的朋友。
同样值得考虑的是,您发现的错误是否会影响程序的安全性。 毕竟,在这种情况下,支付给您的金额将多几倍:)
屏幕截图显示了Visual Studio界面。 但是,不要让它误导您。 该分析仪不仅可以用作Visual Studio的插件,还可以单独使用,包括
Linux和macOS环境。
这种方法的优点
首先,使用静态分析器是查找错误的最简单方法之一。 您不必具备使用代码分析器的任何特殊知识:您只需要了解编写代码的语言即可。
其次,分析人员要细心。 与人类不同,他们不会感到疲劳,也不会失去警惕。 因此,它们几乎可以以最小的成本用于分析所需的大型代码库。
第三,分析人员通常比人类拥有更多的知识。 什么意思 让我用Android内核代码中的示例解释我的想法:
static void FwdLockGlue_InitializeRoundKeys() { unsigned char keyEncryptionKey[KEY_SIZE]; .... memset(keyEncryptionKey, 0, KEY_SIZE);
看来,这里哪里有错误?
事实证明,编译器发现数组在其他任何地方都没有使用,可以优化代码并从中删除对
memset函数的调用。 而且只有在构建发行版配置时才会这样做。 一切都会好起来的,但是只有加密密钥会在一段时间内不清除的情况下保留在RAM中,这样入侵者就可以获取它。 真正的安全漏洞!
此外,您自己几乎找不到它:在调试模式下,调用
memset可以正常工作。 测试也无济于事。唯一剩下的就是要自己了解并记住此功能。
如果项目开发人员不了解此功能怎么办? 如果在搜索错误时不了解此功能怎么办? 至于分析仪,它具有
V597诊断功能,因此您在查看报告时一定会发现有关此功能的信息。
最后,第四点。 追逐Bug赏金时使用静态分析的最有用的优势之一是速度。 的确,您可以在一晚上检查两个,三个,四个项目-但这还不是全部。
最主要的是您可以成为第一个。 尽管该奖项是为发现任何项目中的错误而提供的,但该项目仍在不断完善和发展。 开发人员发布了新版本和新功能,以及新的代码和错误的新空间。 使用我介绍的方法时,您可以在发布第一天时有针对性地考虑新错误和潜在漏洞。
潜在漏洞
细心的读者可能会感到困惑:
等等,等等! 一方面,您说的是在程序中搜索代码中的错误;另一方面,您提到的是潜在的漏洞。 就漏洞赏金而言,漏洞更为有趣。 请阐明您的意思!事实是,错误和潜在漏洞基本上是同一回事。 当然,只有少数错误/潜在漏洞被证明是进一步研究中的真实漏洞。 但是,无害的错误和关键漏洞在代码中可能看起来完全一样。 文章“
PVS-Studio如何帮助检测漏洞? ”给出了一些看似常见的漏洞,这些漏洞现在被称为漏洞。
顺便说一下,根据美国国家标准技术研究院(NIST)的报告,大约64%的应用程序漏洞与软件错误有关,而不是与安全性直接相关的问题。
因此,请保持冷静,获取PVS-Studio并开始寻找错误和安全缺陷! 根据
CWE进行分类将在这里大有帮助。
结论
希望我能帮助读者寻找那些能给他带来荣誉和金钱奖励的错误。 我相信静态分析将对此有所帮助! 请记住,开发人员通常没有时间详细分析错误,因此您必须证明您的发现实际上可以影响程序。 最好的方法是视觉上复制它。 请记住:错误破坏安全性的程度越高–您获得的报酬就越多。
好吧,就是这样。 祝您好运,寻求奖励!