
当然,您已经多次听到“ baghunting”一词,而且我相信,如果您在其他人的程序中发现了潜在的漏洞,那么您不会拒绝赚几百美元(甚至数千美元)。 在本文中,我将讨论一个技巧,该技巧将有助于研究针对此类漏洞的开源项目。
自由和开源软件的Bug赏金-这是什么?
Bug赏金是各种程序的通用名称,网站和软件开发人员在其中为发现bug和漏洞提供现金奖励。 除了苹果或微软等大型公司出名的Bug Bounty程序外,还有一些程序可以搜索开源项目中的漏洞。
他们中的许多人都可以在HackerOne上找到,但是最大的也许是FOSSA-免费和开源软件审核。 这是欧盟资助的针对各种开源项目的漏洞研究计划。 总奖池令人印象深刻-高达850,000欧元!
如何参加?
首先,您需要在
HackerOne注册。 我们将完全需要那些开源的项目。 HackerOne有
一个完整的列表 。
如果希望参加欧盟的Bug赏金活动,请在
此处找到参与该计划的项目清单。 对于大多数项目来说,只需在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);
看来哪里可能有错误?
事实证明,编译器发现
keyEncryptionKey数组未在其他任何地方使用,因此可以优化代码并从中删除
memset函数调用。 而且他只会在发布配置中的组装期间执行此操作。 一切都会好的,但是只有加密密钥会在RAM中保持解锁一段时间,因此攻击者可以获取它。 真正的安全漏洞!
毕竟,几乎不可能自己找到此错误:在调试模式下,
memset调用可以正常工作。 而且您不会为此编写任何测试……仅是了解此功能并自己记住它。
但是,如果项目的开发人员不知道此功能怎么办? 如果在搜索错误时不了解此功能怎么办? 这对于分析仪而言并不重要,因为它具有
V597诊断功能,因此,在查看报告时,您一定会知道的。
最后,第四。 追逐漏洞赏金时使用静态分析的最有用的好处之一就是速度。 是的,您可以在晚上检查两个,三个,四个项目-但这还不是全部。
最重要的是,您可以成为第一个。 尽管在发现任何项目中的错误时都会提供奖励,但该项目仍将继续完成和开发。 开发人员推出了新版本和新功能,并伴随着新代码和错误的新空白。 使用我描述的方法,可以在发布第一天时准确地检查新错误和潜在漏洞。
潜在漏洞
细心的读者可能会感到困惑:
停止,停止! 一方面,它指的是在代码中搜索程序错误,另一方面,它提到了潜在的漏洞。 此外,从漏洞赏金的角度来看,漏洞更加有趣。 请澄清!事实是,错误和潜在漏洞本质上是同一件事。 当然,在进一步研究中只有少数错误/潜在漏洞可以证明是真正的漏洞。 但是,在代码中,无害的错误和严重的漏洞可能看起来完全相同。 文章“
PVS-Studio如何帮助发现漏洞? ”提出了一些此类错误(乍看之下很常见),这些错误现在被称为漏洞。
顺便说一下,根据美国国家标准技术研究院(NIST)的报告,应用程序中约有64%的漏洞与软件错误有关,而不与安全缺陷(并非缺乏安全功能)有关。
因此,放心地拿起PVS-Studio并开始寻找错误和安全缺陷! 顺便说一句,根据
CWE对警告进行分类将有助于您解决此问题。
结论
我希望我能帮助读者找到一个能给他带来一点认可和金钱奖励的错误。 我相信静态分析将帮助他们! 请记住,开发人员通常没有时间对发现的错误进行详细分析,因此您仍然必须证明您的发现确实可以影响程序。 最好的方法是将其可视化。 请记住:代码中的错误越会破坏安全性,他们将为此付出的代价就越多。
仅此而已。 祝你好运,找到你的奖励!

如果您想与讲英语的读者分享这篇文章,请使用翻译链接:George Gribkov。
Bug赏金赚钱的一种简单方法 。