当前位置: 首页 > 知识库问答 >
问题:

如何获取veracode漏洞报告的详细信息?

安明亮
2023-03-14

如何获取veracode漏洞报告的详细信息?

我是一个流行的JS库Ramda的维护者,我们最近收到一份报告,称该库存在原型污染漏洞。这一点可以追溯到veracode的一份报告,该报告说:

拉姆达易受原型污染。攻击者可以通过curry2函数将属性注入现有的构造原型,并修改属性,例如,构造函数和原型。

我明白他们在谈论什么原型污染。一个很好的解释是snyk对lodash.merge的写作。Ramda的设计不同,明显类似的Ramda代码不受这种漏洞的影响。这并不意味着Ramda的任何部分都不受其影响。但是报告没有包含任何细节,没有代码片段,也没有办法质疑他们的发现。

他们描述的细节显然是错误的。_curry2不可能受到这个问题的影响。但是由于该函数被用作许多其他函数的包装器,因此可能存在被记者误解隐藏的真正漏洞。

是否有方法获取此错误报告的详细信息?演示问题的代码片段?任何东西我已经填好了他们的联系表。答案可能还在,就像24小时前一样,但我并没有屏住呼吸——它似乎主要是一张销售表格。我所做的所有搜索都会得到有关如何使用其安全工具的信息,而几乎没有关于如何创建自定义报告的信息。我在CVE数据库中找不到这个。

共有1个答案

贲功
2023-03-14

好的,为了回答我自己的问题,以下是如何在不到四周的时间内通过五十五个简单的步骤获得Veracode漏洞报告的详细信息。

>

  • 让某人针对您的库发布一个问题,建议其mapObjIndexed函数受到原型污染漏洞的影响。

    回答说你认为用户没有表现出众所周知的漏洞,但你会深入挖掘。

    写一篇详细的文章,描述该漏洞的含义,并证明该库实际上不受其约束,或者至少提供的示例没有证明它。

    与感兴趣的各方进行简短的交谈,更彻底地解释这一点并回应反对意见。

    让问题暂时悬而未决,以便最初的记者能够论证这一点并作出回应1

    >

    修复ramda中发现的原型污染漏洞的VULN票据

    对该评论进行讨论,了解有一份报告声称

    拉姆达易受原型污染。攻击者可以通过curry2函数将属性注入现有的构造原型,并修改属性,例如,构造函数和原型。

    最终了解到这是由于软件安全公司Veracode的一份报告。

    >

    检查报告和Veracode网站的其他部分,发现没有公共机制质疑此类报告。

    >

  • 向库的问题报告,报告一定是错误的,因为所提到的函数不可能生成所描述的行为。

    发布正在讨论的漏洞的实际示例和库中的并行片段,以证明它不共享问题。

    查找Veracode的在线支持表单,并提交帮助请求。保持低期望值,因为这可能是针对销售部门的。

    发布一个StackOverflow问题,询问如何找到Veracode漏洞报告的详细信息,使用足够的详细信息,如果社区知道,应该很容易回答。

    • 试着享受你的周五和周六。不要强迫性地检查您的电子邮件以查看Veracode是否已回复。不要每小时访问StackOverflow问题以查看是否有人发布了解决方案。真的,不要做这些事情;他们没有帮助。
    • 在StackOverflow问题中添加250声望点赏金,试图从以前一定处理过这个问题的聪明人那里获得额外的关注。
    • 在Veracode网站上查找直接电子邮件支持地址,并发送一封电子邮件,询问假定漏洞的详细信息、演示问题的片段以及质疑其发现的程序。

    >

  • 收到来自Veracode支持电子邮件地址的回复,其中部分内容是,

    你是说我们的Vuln db根据您的github源不正确吗?如果是这样,我可以将其发送给我们的研究团队以确保它看起来不错,如果不是,则更新它。

    至于代码片段,我们不提供。

    回复,解释您发现报告缺少质疑它所需的详细信息,但是的,您认为它是不正确的。

    收到的回复是,这是“链上的一枪”,您很快就会收到他们的回复。

    • 同样,不要强迫性地检查您的电子邮件或StackOverflow问题。但是,如果您碰巧看了一眼StackOverflow,请注意,虽然仍然没有答案,但有足够的赞成票来支付超过一半的赏金费用。显然,您并不是唯一想知道如何做到这一点的人。

    >

  • 从Veracode接收电子邮件:

    感谢您对应用程序安全和Veracode的兴趣。

    下周你有时间联系吗?

    此外,为了确保您与正确的代表保持一致,您的公司总部在哪里?

    回答你不是潜在客户,并再次解释你在寻找什么。

    在StackOverflow中添加一条注释,解释流程的进展,并表达您的沮丧。

    >

  • 看着又一个周末过去,却没有任何办法解决这个问题。

    在StackOverflow帖子的评论中参与一个关于原型污染的有趣讨论。

    >

  • 收到一封来自Veracode的非常有用的电子邮件,该电子邮件由一位新人发送,其签名显示他是一名销售经理。电子邮件如下所示:

    嗨,斯科特,我请我的团队帮助解决你的问题,以下是他们的回答:

    我们根据https://github.com/ramda/ramda/pull/3192.在Pull请求中,有一个POC(https://jsfiddle.net/3pomzw5g/2/)清楚地展示了mapObjIndexed函数中的原型污染脆弱性。在演示中,用户对象通过proto修改__​ 属性,被认为是对中情局三合会完整性的侵犯。这已反映在vuln db中该漏洞的CVSS评分中。

    该漏洞还有一个未合并的修复程序,它也包含在我们的工件中(https://github.com/ramda/ramda/pull/3192/commits/774f767a10f37d1f844168cb7e6412ea6660112d()

    如果对POC有争议,请告诉我,我们可以进一步调查。

    当您意识到您认为可能是由看过Veracode报告的人提出的问题反而是该报告的来源时,请尽量避免将您的头撞到墙上太久。

    回复这位乐于助人的人,是的,你会对此产生争议,并询问你是否可以直接与Veracode的相关人员联系,这样就不必有中间人。

    从这位乐于助人的人那里收到一封电子邮件——他需要一个名字,我们叫他“Kevin”——从Kevin那里收到一封电子邮件,将研究团队添加到电子邮件链中。(我告诉过你他很有帮助!)

    给凯文和团队一个简短的回复,你将花一些时间写一个回复,并尽快回复他们。

    再次查看Veracode报告,注意描述已更改为

    拉姆达易受原型污染。攻击者可以通过proto属性通过mapObjIndexed函数注入和修改对象的属性。

    但也要注意,它仍然不包含任何细节、片段和争议过程。

    收到退回的电子邮件通知,因为该研究团队的电子邮件仅供Veracode内部使用。

    笑吧,因为唯一的选择就是哭。

    告诉凯文发生了什么,并确保他愿意继续担任中间人。他也很有帮助,会马上同意的。

    花几个小时写一个详细的回复,解释什么是原型污染,以及示例如何不显示这种行为。提前发布该问题。(还记得这个问题吗?这是一个关于这个问题的故事。3)在发送电子邮件之前,向阅读者征求建议。。。主要是为了确保你不会因为愤怒而发送这些信息。

    无论如何,请立即通过电子邮件发送它;无论如何,如果你说了一些太生气的话,你现在可能不想被说服。

    请注意,不可退还的StackOverflow悬赏已过期,没有提供任何答案。

    >

  • 摆弄你的拇指一周,但与此同时...

    收到Veracode发来的营销电子邮件,Veracode以前从未向您发送过营销电子邮件。

    请注意,Veracode再次更新了描述,说

    Ramda允许对象原型操作。攻击者能够通过proto属性通过mapObjInded函数注入和修改对象的属性。但是,由于ramda的设计中对象不变性是默认的,因此此漏洞的影响仅限于对象的范围,而不是底层对象原型。尽管如此,引用下的概念验证中所示的对象原型操作的可能性可能会导致应用程序中出现意外行为。目前没有已知的漏洞利用。

    如果这还不清楚,可以这样翻译:“嘿,我们报道了这件事,我们不想退让,所以我们要说的是,尽管我们注意到的行为实际上没有发生,但那里的行为仍然是错误的。”

    请注意,一位拥有Veracode帐户的图书馆粉丝能够从他们的报告中收集更多信息。事实证明,这些漏洞的详细信息仅限于登录用户,因此完全不清楚他们认为应该如何修复这些漏洞。

    >

  • 给Kevin发一封跟进邮件,说

    我想知道是否对此有任何回应。

    我看到漏洞报告已经更新,但没有删除。
    我仍然对它的更改版本提出异议。如果这种行为是一个真正的漏洞,你能告诉我JavaScript的Object.assign上的等效报告,如前所述,它与有问题的函数存在完全相同的问题。

    我眼前的目标是看到这份报告被撤回。但我还想指出这个过程中所涉及的痛苦,我认为Veracode可以解决的痛苦:

    我不是客户,但您的客户作为Ramda的维护人员来找我,以解决您报告的问题。该报告中应该有足够的信息,以便我确认报告的漏洞。我了解到,登录的客户可以使用这些信息。这无助于我或其他处于我地位的人找到信息。求助于电子邮件并通过销售部门进行过滤,是一个非常可怕的过程。您是否可以修改您的公开报告,以包含或指向该漏洞的概念证明<您能否在报告中进一步提供一些关于争议过程的提示?

    >

  • 收到一封来自仍然乐于助人的Kevin的电子邮件,上面写着

    感谢[的跟进...],我将继续管理与我的团队的沟通,目前他们正在调查此事,并已将其提高到最高级别。

    如果72小时内没有回复,请联系我。

    感谢您在我们调查这个问题时的耐心,这对我来说也是一个新的过程。

    大声嘲笑他认为你很有耐心的想法。

    回应,向凯文道歉,他被夹在了中间,并读了他善意的回答。

    >

  • 从凯文那里听到你的主要目标已经实现:

    嗨,Scott,我想提供更新,我的工程团队回复了
    给我以下内容:

    “最终结果是更新数据库以删除报告”

    我还要求他们让我知道您关于竞争调查结果的能力的问题,并在收到反馈后将其转达。

    否则,我希望这能满足您的要求,如果此时需要我们采取任何进一步的行动,请告诉我。

    感激地回复凯文,并注意到你仍然想听听他们是如何改变流程的。

    回复您自己的电子邮件,就您尝试在移动设备上键入短文本以外的内容时发生的所有拼写错误向Kevin道歉。

    与具有Veracode登录功能的Ramda用户一起检查站点是否正确更新。

    当同一个用户在五分钟内没有回复时,在推特上联系他。这并不是说你很焦虑,想把这件事抛在脑后。真的不是。你不是那种人。

    阅读该用户的详细回复,解释一切正常。

    收到Veracode支持电子邮件地址的跟进信息,告诉您

    经过深思熟虑,我们决定更新数据库以删除此报告。

    他们正在解决这个问题。

    嘲笑他们在一周的工作结束后(周五晚上7:00你的时间)发送这个的事实。

    礼貌地回应说你对结果很感激,但你仍然希望看到他们的争议过程现代化。

    • 为自己的堆栈溢出问题写一个2257字的答案,详细解释解决此问题的过程

    这就是一切。所以下次你遇到这个问题时,你也可以解决它!

    (因为你知道这不会那么容易!)

    >

  • 从新的Veracode客户主管处收到一封电子邮件,其中写道

    感谢您的关注!介绍我自己作为您在Veracode的对接人。

    我很高兴有机会回答您对Veracode服务和空间方法的任何疑问。

    你有几分钟的时间联系基地吗?请让我知道你方便的时间,我会跟进的。

    礼貌地回复那封建议与凯文交谈的电子邮件,并附上指向此步骤列表的链接。

    这是Ramda问题的标准行为,但这可能是Veracode选择报告此问题的主要原因

    2小心不要进入无限循环。这个递归没有基本情况。

    嘿,这是感恩节前后的事。一定有爱丽丝餐厅的推荐信

    4如果您还没有找到Kevin,现在是坚持Veracode为您提供一个的好时机。

    包括脚注

  •  类似资料:
    • This document outlines security procedures and general policies for the Libra project. Note: As Libra Core is currently in the prototype stage and does not power a blockchain with a currency that has

    • 所以这一天终于来了,你发现了你的第一个漏洞。 首先,恭喜你! 认真来讲,发现漏洞并不容易,但是有一些不爽的事情。 我的第一条建议是放松,不要过度兴奋。 我知道在提交报告时的极度兴奋感,以及当你被告知它不是漏洞,公司关闭了漏洞报告,损害了你在漏洞平台上的声望,被拒绝的沮丧感。我想帮你避免它们。所以,第一件事是首先: 阅读披露准则 在 HackerOne 和 Bugcrowd 上,每个参与公司都列出了

    • 问题内容: 在WooCommerce中,从以下代码行: 如何从订单ID获取WooCommerce订单详细信息? 问题答案: 3.0版以上的WOOCOMMERCE订单 自Woocommerce大型主要更新3.0+以来,事情已经发生了很多变化: 对于 对象,无法像以前一样直接访问属性,并且会引发一些错误。 现在,对象实例需要使用new 以及 getter和setter方法。 此外,还有一些用于订购商品

    • 问题内容: 我要获取exe / dll / sys文件的“文件描述”和“版权”,如右键单击文件并选择属性时,在“详细信息”选项卡中所示。 问题答案: 使用Windows API,您可以调用VerQueryValue以获取该信息。JNA有一个用于访问此API的类,称为Version。 这另一个问题有一些代码示例可以帮助您入门: 获取.exe的版本信息 这是一个读取产品名称的C代码示例,您可以将其转换

    • 问题内容: 我试图用JUnit测试编写一只蚂蚁,但得到以下结果: 它只是显示没有打印详细信息的错误,我在build.xml中指定以下参数也尝试以开头,但没有任何运气。有人可以帮忙吗? 蚂蚁1.8.2,sun jdk1.6.0_20,junit 4.8.2 为了缩小问题的范围,我创建了一个单独的项目,这是我的build.xml 下面是simpletest.java C:\ TestPrj>蚂蚁 C:

    • 从以下行代码输入: 如何从订单id获取WooCommerce订单详细信息?