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

25

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

我是Ramda这个流行JS库的维护者,我们最近收到了一份报告, 指出该库存在原型污染漏洞。这个问题被追溯到veracode报告, 其中指出:

ramda存在原型污染漏洞。攻击者可以通过_curry2函数将属性注入到现有构造函数原型中,并修改__proto__constructorprototype等属性。

我理解他们所谈论的原型污染问题。一个很好的解释在snyk对lodash.merge的说明中。 Ramda的设计与其不同,显然类似的Ramda代码不会受到此类漏洞的影响。但这并不意味着Ramda的所有部分都不受其影响。但报告中没有详细信息、没有代码片段,也没有任何方式来质疑他们的发现。

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

有没有办法获取此错误报告的详细信息?有展示问题的代码片段吗?还是别的什么?我已经填写了他们的联系表格。答案可能仍在路上,因为只是24小时前,但我并不抱太大希望 - 它似乎主要是一个销售表格。我所做的所有搜索都是关于如何使用他们的安全工具的信息,几乎找不到任何关于如何创建他们的自定义报告的信息。我也无法在CVE数据库中找到这个问题。


4
更新一下,我已经收到了来自Veracode的回复,目前只是他们的前线支持人员说会将此问题转交给专业人士,但这也是进展。考虑到该问题得到了大量赞同票,但没有答案,即使有很高的悬赏,我猜想这可能不是一个有着众所周知解决方案的问题。 - Scott Sauyet
1
另一个后续:我从Veracode收到了某种形式的回复:一封来自销售人员的电子邮件,他认为我想购买他们的产品。唉,这真是令人沮丧。 - Scott Sauyet
1
我查看了 Ramda 代码和 Veracode 上的漏洞。我同意您关于报告可能误导 _curry2 函数存在风险的观点。就我所知,即使是基础函数 _curry1 也不会有问题。但是在#3192 PR 中,您可以清楚地看到 Ramda 代码中的 prototype 污染漏洞,出现在 mapObjIndexed 函数中。您认为呢? - grandouassou
@florian:好吧,根据那个讨论的其余部分来看,这并不是原型污染的情况。原型污染是指修改共享原型,例如 Object.prototype。该示例仅显示您可以更改特定现有对象的原型。我认为这通常并不是原型污染所指的......不过也许你能证明我错了呢? - Scott Sauyet
1
@florian:这份报告中提供了一个关于旧版 lodash 的简单测试用例:https://security.snyk.io/vuln/SNYK-JS-LODASH-450202 - Scott Sauyet
显示剩余6条评论
1个回答

9

好的,回答自己的问题,以下是在不到四周时间内仅需 55 步就可以获取 Veracode 漏洞报告详细信息的方法。


预备工作

第1天

  • 收到一条评论,其中提到用户收到了一个VULN票据来修复在ramda中发现的原型污染漏洞

  • 讨论这条评论,了解有一份报告声称ramda容易受到原型污染攻击。攻击者可以通过_curry2函数向现有构造函数原型中注入属性,并修改__proto__constructorprototype等属性。

    最终得知这是由软件安全公司Veracode发布的一份报告引起的。

第二天和第三天

  • 查看报告发现其中没有详细信息,没有解释如何触发漏洞,也没有建议的修复方法。

  • 查看报告和Veracode网站的其他部分,发现没有公共机制来挑战这样的报告。

第四天

  • 回报图书馆的问题,说明报告一定是错误的,因为所提及的函数不可能产生所描述的行为。

  • 发布一个实际示例来讨论漏洞,并从库中提供一个相应代码片段以证明它没有这个问题。

  • 找到Veracode的在线支持表格,并提交帮助请求。但要保持期望值低,因为这可能是销售部门的事情。

  • 发表一个StackOverflow问题2,询问如何使用足够的细节查找Veracode漏洞报告的详细信息,如果社区有知识,那么应该很容易回答。

第5和第6天

  • 尽量享受周五和周六。不要过度检查您的电子邮件以查看Veracode是否已回复。不要每小时访问StackOverflow问题,以查看是否有人发布了解决方案。真的,不要做这些事情;它们没有帮助。

第7天

  • 在StackOverflow问题上添加一个250声望点悬赏,试图从那些必须先前处理过此类问题的聪明人那里获得额外的关注。

第8天

  • 在Veracode网站上查找直接的电子邮件支持地址,并发送一封电子邮件,询问所谓漏洞的详细信息、演示该问题的代码片段以及挑战其发现的程序。

第9天

  • 收到来自Veracode支持电子邮件地址的回复,部分内容如下:

    您是否在说我们的漏洞数据库与您的github源不一致?如果是这样,我可以将其发送给我们的研究团队以确保它看起来很好,如果不是,则进行更新。

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

  • 回复,解释您发现报告缺少挑战所需的细节,但是是的,您认为它是不正确的。

  • 收到回复称已经“上报”了此事,并且您将很快得到回复。

第10-11天

  • 同样,不要过度检查您的电子邮件或StackOverflow问题。但是,如果您碰巧瞥见StackOverflow,会注意到虽然仍然没有答案,但有足够的赞数覆盖了赏金的一半以上。显然,您并不孤单,想知道如何做到这一点。

第12天

  • 收到来自Veracode的电子邮件:

    感谢您对应用安全和Veracode的关注。

    下周你有时间联系吗?

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

  • 回复说您不是潜在客户,并再次解释您正在寻找什么。

  • 在StackOverflow上添加评论,解释流程所处位置并表达您的沮丧之情。

第13-14天

  • 又度过了一个周末,没有任何解决这个问题的方法。

  • 参与了有关原型污染的讨论,这使得StackOverflow帖子变得有趣。

第15天

  • 收到一封来自Veracode的真正有用的电子邮件,由一个新人发送,他的签名称他是销售经理。电子邮件将看起来像这样:

    嗨Scott,我让我的团队帮助回答你的问题,这是他们的回答:

    我们根据https://github.com/ramda/ramda/pull/3192中提供的信息制作了这个工件。 在Pull Request中,有一个POC(https://jsfiddle.net/3pomzw5g/2/),清楚地演示了mapObjIndexed函数中的原型污染漏洞。在演示中,用户对象通过__proto__属性进行修改,被认为是违反了CIA三元素中的完整性。这已经反映在我们对此漏洞的CVSS评分中。

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

    如果对POC有异议,请告诉我,我们可以进一步研究。

  • 当您意识到您认为可能由某人提出Veracode报告的问题实际上是该报告的来源时,请尽量避免长时间撞头。

  • 回复这位有帮助的人,表示您确实会对此提出争议,并询问是否可以直接联系相关的Veracode人员,以避免中间人。

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

  • 向Kevin和团队发出简短的说明,表示您将花费一些时间撰写答复,并很快回复他们。

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

    ramda易受原型污染攻击。攻击者能够通过mapObjIndexed函数通过proto属性注入和修改对象的属性。

    但请注意,它仍然没有详细信息,没有代码片段,没有争议处理流程。

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

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

  • 告诉Kevin发生了什么,并确保他愿意继续担任中间人。再次,他很有帮助,会立即同意。

  • 花费数小时撰写详细回复,解释原型污染是什么以及示例未显示此行为。在问题上提前发布。(还记得这个问题吗?这是一个关于该问题的故事。3)在发送电子邮件之前要求读者提供建议......主要是为了确保您不是出于愤怒而发送此电子邮件。

  • 无论如何都可以立即发送电子邮件;如果说了什么太生气了,现在可能不

    第16-21天

    • 闲着无聊一周,但同时...

    • 收到Veracode的市场营销邮件,他们之前从未给您发送过邮件。

    • 注意到Veracode再次更新了描述,以说明

      ramda允许对象原型操作。攻击者可以通过mapObjIndexed函数通过proto属性注入和修改对象的属性。然而,由于ramda的设计使对象不变性成为默认设置,因此该漏洞的影响仅限于对象范围,而不是底层对象原型。尽管如此,在参考文献中演示的潜在对象原型操作可能会导致应用程序产生意外行为。目前没有已知的利用方法。

      如果不清楚,翻译为“嘿,我们报告了这个问题,并且我们不想退缩,所以我们要说即使我们指出的行为实际上并没有发生,那里的行为仍然是错误的。”

    • 注意到该库的粉丝的雇主拥有Veracode帐户,因此能够从其报告中搜集更多信息。结果发现他们的详细信息仅限于已登录用户,完全不清楚他们如何认为应该修复此类漏洞。

    第22天

    给Kevin4发送一封跟进电子邮件,内容为:“我想知道是否有任何回复。我看到漏洞报告已经更新但未被删除。我仍然对其修改版本提出异议。如果这种行为是真正的漏洞,请指出JavaScript的Object.assign的等效报告,因为正如之前展示的那样,它与所讨论的函数存在完全相同的问题。我的直接目标是撤销此报告。但我也想指出这个过程中的痛苦,我认为Veracode可以解决:我不是客户,但您的客户作为Ramda的维护者来找我解决您报告的问题。该报告确实应该包含足够的信息,以允许我确认所报告的漏洞。我了解到这些信息对于已登录的客户是可用的。这对于像我这样的人找到信息并没有帮助。通过电子邮件并过滤它们通过您的销售部门,这是一个非常可怕的过程。您能否更改您的公共报告以包含或指向漏洞的概念证明?并且在报告中能否提供一些争议过程的提示?”

    第23天

    • 收到仍然乐于助人的凯文发来的电子邮件,内容如下:

      感谢您的跟进[ ... ],我将继续与我的团队进行沟通,目前他们正在研究此事,并已上报至最高层。

      如果您在72小时内没有得到答复,请再次联系我。

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

    • 大笑,因为他认为你很有耐心。

    • 回复凯文,向他道歉他被卷入其中,并读取他友好的回复。

    第25天

    • 收到 Kevin 的回复,称你的主要目标已经达成:

      嗨,Scott,我想提供一个更新,我的工程团队给我回信如下:

      “将报告从我们的数据库中删除是最终结果”

      我还要求他们在收到反馈后让我知道有关争议发现能力的问题。否则, 我希望这满足了您的要求,请让我知道是否此时需要我们采取进一步行动。

    • 感激地回复 Kevin 并指出您仍然想听听他们如何改进他们的流程。

    • 回复自己的电子邮件,为您在移动设备上试图输入更多内容时造成的所有拼写错误向 Kevin 道歉。

    • 询问具有 Veracode 登录权限的有用 Ramda 用户,网站是否已适当更新。

    • 在五分钟内该用户未做出回应时请通过 Twitter 联系该用户。这不是因为您焦虑且想尽快解决问题。事实上并非如此。您不是那种人。

    • 阅读该用户的 详细响应,解释一切都很好。

    • 从 Veracode 支持电子邮件地址接到后续,告诉您

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

      并且他们正在关闭这个问题。

    • 对于他们在周末最后一个小时(当地时间晚上7:00)发送此信息感到好笑。

    • 礼貌地回复说您感激结果,但仍然希望看到他们的争议处理流程现代化。

    第27天

    • 撰写一篇2257字的答案5,回答你自己在Stack Overflow上的问题,并详细解释你是如何解决这个问题的。

    就是这样。所以下次遇到这种情况,你也可以解决它!




    更新

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

    第61天

    • 收到一封来自新Veracode账户执行人的电子邮件,内容如下:

      感谢您的关注!我是您在Veracode的联系人。

      我很乐意回答您可能对Veracode的服务和方法有的任何问题。

      您有几分钟的时间与我联系吗?请告诉我一个方便的时间,我会相应地跟进。

    • 礼貌地回复该电子邮件,建议与Kevin交谈,并包含此步骤列表的链接。



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

    2 谨防进入无限循环。此递归没有基本情况。

    3 嘿,这发生在感恩节附近。一定会有一个 Alice's Restaurant 的参考!

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

    5 包括脚注。


1
感谢Scott提供详细的评论。我在使用Veracode时遇到了完全相同的问题。看起来数据库仍然没有更新。因此,我已经向他们回复了这条评论的链接。我会及时通报更新情况。此外,我还发现了Veracode的博客文章。https://www.veracode.com/blog/secure-development/yet-another-perspective-prototype-pollution - Gautam Chadha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接