Sco*_*yet 25 javascript veracode ramda.js cve
如何获取 veracode 漏洞报告的详细信息?
我是一个流行的 JS 库Ramda的维护者,我们最近收到一份报告,称该库存在原型污染漏洞。这可以追溯到veracode 报告,其中写道:
ramda 很容易受到原型污染。攻击者可以通过该
_curry2函数将属性注入到现有的构造原型中,并修改诸如__proto__、constructor、 和 之类的属性prototype。
我明白他们所说的原型污染是什么。snyk 的 writeuplodash.merge中有一个很好的解释。Ramda 的设计有所不同,明显类似的 Ramda 代码不会受到此类漏洞的影响。这并不意味着 Ramda 的任何部分都不受其约束。但该报告没有包含任何细节,没有代码片段,也没有办法质疑他们的发现。
他们描述的细节显然是错误的。 _curry2不可能会遇到这个问题。但由于该函数被用作许多其他函数的包装器,因此报告者的误解可能隐藏着真正的漏洞。
有没有办法获取此错误报告的详细信息?演示问题的代码片段?任何事物?我已经填写了他们的联系表。答案可能仍在到来,因为才 24 小时前,但我并没有屏住呼吸——这似乎主要是一份销售表格。我所做的所有搜索都提供了有关如何使用其安全工具的信息,但几乎没有提供有关如何创建自定义报告的信息。我在 CVE 数据库中找不到这个。
好的,为了回答我自己的问题,以下是如何在不到四个星期的时间内通过 55 个简单步骤获取 Veracode 漏洞报告的详细信息。
\n让某人针对您的库提出 问题mapObjIndexed,建议\n其功能受到原型\n污染漏洞的影响。
回应说您认为用户没有表现出众所周知的漏洞,但您会更深入地挖掘。
\n写一篇详细的文章描述该漏洞的含义,并证明该库实际上不受该漏洞的影响,或者至少提供的示例未证明该漏洞。
\n让问题暂时开放,以便原始报告者可以争论\n观点并做出回应。1
\n收到有关该问题的评论,表明用户已\n收到
\n\n\n修复此问题的 VULN 票证
\nPrototype Pollution vulnerability found in ramda.
\n\n\nramda 很容易受到原型污染。攻击者可以通过函数将属性注入到现有构造原型中
\n_curry2,并修改属性,例如__proto__、constructor和prototype。
检查该报告,发现它没有详细信息,没有解释如何触发该漏洞,也没有建议的修复方法。
\n检查该报告和 Veracode 站点的其他部分,发现\n没有公共机制来质疑此类报告。
\n向图书馆的问题报告,该报告一定是错误的,\n提到的功能不可能生成\n所描述的行为。
\n查找 Veracode 的在线支持表格,然后提交帮助请求。保持\n较低的期望,因为这可能是针对销售部门的。
\n发布StackOverflow 问题2,询问如何查找\nVeracode 漏洞报告的详细信息,使用足够的详细信息,如果\n社区具备相关知识,应该很容易回答。
\n收到来自 Veracode 支持电子邮件地址的回复,\n 部分,
\n\n\n您是说我们的 vuln 数据库根据您的 github 源代码不正确吗?如果\n是这样,我可以将其发送给我们的研究团队以确保它看起来不错,如果\n不是,则更新它。
\n至于代码片段,我们不提供。
\n
回复,解释说您发现该报告缺少质疑它所需的详细信息,但您认为它是不正确的。
\n收到回复,表明这已“迅速上链”,您\n很快就会收到他们的回复。
\n收到来自 Veracode 的电子邮件:
\n\n\n感谢您对应用程序安全和 Veracode 的兴趣。
\n下周你有时间联系吗?
\n另外,为了确保您与正确的代表保持一致,您的\n公司总部在哪里?
\n
回答说您不是潜在客户,并再次解释您正在寻找什么。
\n在 StackOverflow 中添加评论来解释该流程的进展情况并表达您的不满。
\n又一个周末过去了,却没有任何办法解决这个问题。
\n在 StackOverflow 帖子的评论中参与关于原型污染的有趣讨论。
\n收到来自 Veracode 的一封非常有用的电子邮件,该电子邮件由新人发送,\n其签名表明他是销售经理。该电子邮件将如下所示:\n
\n\n\n嗨,斯科特,我请我的团队帮助解决您的问题,这是\n他们的回复:
\n我们根据https://github.com/ramda/ramda/pull/3192中提供的信息构建了此工件。在 Pull 请求中,\n POC ( https://jsfiddle.net/3pomzw5g/2/ ) 清楚地展示了\nmapObjIndexed 函数中的原型污染漏洞。在演示中,用户对象是通过
\n__proto__\xe2\x80\x8b属性修改的,并且是
认为违反了 CIA 三元组的完整性。这已反映在我们的 vuln 数据库中对此漏洞的 CVSS 评分中。该漏洞还有一个未合并的修复程序,该修复程序也已
\n
包含在我们的工件中(https://github.com/ramda/ramda/pull/3192/commits/774f767a10f37d1f844168cb7e6412ea6660112d)如果对 POC 存在争议,请告诉我,我们可以进一步对此进行调查。
\n
当您\n意识到您认为的问题可能是由看过 Veracode 报告的人\n提出的,而不是来源时,请尽量避免长时间用头撞墙。
\n回复这位乐于助人的人,是的,您会为此产生争议,\n并询问是否可以直接与相关的 Veracode\n人员联系,这样就不需要中间人了。
\n收到来自这位乐于助人的人的电子邮件 - 他需要名字,我们称他为“凯文” - 收到凯文的电子邮件,将研究团队添加到电子邮件链中。(我告诉过你他很有帮助!)
\n回复凯文和团队并附上一条简短的说明,\n您将花一些时间写下回复并尽快回复他们。
\n再次查看Veracode 报告,并注意描述已\n更改为
\n\n\nramda 很容易受到原型污染。攻击者能够通过proto
\nmapObjIndexed属性通过函数注入和修改对象的属性。
但还要注意,它仍然不包含任何细节、没有片段、没有争议\n过程。
\n收到退回电子邮件通知,因为该研究团队的电子邮件仅供 Veracode 内部使用。
\n笑吧,因为唯一的选择就是哭。
\n告诉凯文发生了什么事,并确保他愿意继续担任\n中间人。他再次乐于助人,并且会立即同意。
\n花几个小时写下详细的回复,解释什么是原型污染以及示例为何不显示这种行为。 提前发布有关该问题的信息。(还记得\n这个问题吗?这是一个关于这个问题的故事。3 )在发送电子邮件之前\n向阅读者询问建议...主要是为了确保\n你不会在愤怒中发送此邮件。
\n无论如何,请立即通过电子邮件发送;如果你说了一些太生气的话,\n无论如何,你现在可能不想被说服。
\n请注意,不可退还的 StackOverflow 赏金已过期,且未提供\n单一答案。
\n玩弄你的拇指一周,但与此同时......
\n接收来自 Veracode 的营销电子邮件,该电子邮件之前从未向您发送过\n。
\n请注意,Veracode 再次更新了描述:
\n\n\nramda 允许对象原型操作。攻击者能够通过proto
\nmapObjIndexed属性通过函数注入和修改对象的属性。但是,由于 ramda 的设计\n默认对象不变性,因此该漏洞的影响\n仅限于对象的范围,而不是\n底层对象原型。尽管如此,\n引用下的概念验证中所演示的对象原型操作的可能性可能会导致\n应用程序中出现意外的行为。目前没有已知的漏洞。
如果这还不清楚,翻译会是,“嘿,我们报告了这一点,\n我们不想让步,所以我们会说,即使\n我们注意到的行为没有\n实际上并没有发生,那里的行为仍然存在,嗯,呃,不知何故是错误的。”
\n请注意,雇主拥有 Veracode 帐户的图书馆粉丝\n已经能够从他们的报告中收集更多信息。\n事实证明,他们的详细信息仅限于登录用户,\n完全不清楚他们如何看待此类漏洞应该\n修复。
\n向 Kevin 4发送后续电子邮件说
\n\n\n我想知道对此是否有任何回应。
\n我看到漏洞报告已更新但未删除。
\n
\n我仍然对它的修改版本有争议。如果此行为是一个真正的漏洞,您能否向我指出 JavaScript 的等效报告Object.assign,如前所述,该报告具有与相关函数完全相同的问题。我的近期目标是撤回这份报告。但我也想\n指出这个过程中涉及的痛点,我认为 Veracode\n 可以解决的痛点:
\n我不是客户,但您的客户作为 Ramda 的维护人员来找我,以解决您报告的问题。该报告确实应该包含足够的信息,以便我确认所报告的漏洞。据我所知,已登录的客户可以使用此类信息。这并不能帮助我或处于我这个位置的其他人找到\n信息。求助于电子邮件并通过销售部门过滤它,是一个非常可怕的过程。您能否更改您的公开报告以包含或指出该漏洞的概念证明?
\n
\n您能否在报告中进一步提供一些有关争议过程的暗示\n?
收到一封来自仍然乐于助人的凯文的电子邮件,其中写道
\n\n\n感谢您的跟进[...],我将继续管理与我的团队的沟通,目前他们正在调查此事,并且已将此事提升至最高级别。
\n如果您在 72 小时内没有\xe2\x80\x99 回复,请联系我。
\n感谢您在我们调查问题时的耐心等待,这对我来说也是一个新的\n流程。
\n
当他认为你很有耐心时,请大声笑出来。
\n做出回应,向凯文道歉,因为他夹在中间,然后阅读他善意的回复。
\n收到凯文的回复,您的主要目标已经实现:
\n\n\n嗨,斯科特,我想提供更新,我的工程团队回来了
\n
给我回复了以下内容:\xe2\x80\x9c更新我们的数据库以删除报告是最终结果\xe2\x80\x9d
\n我还要求他们让我知道您关于争论结果的能力的问题,并在收到反馈后将其转发回来。
\n否则,我希望这能满足您的要求,如果此时需要我们采取任何进一步的行动,请告诉我。
\n
感激地回应凯文,并指出您仍然想听\n他们如何改变流程。
\n回复您自己的电子邮件,向凯文道歉,\n当您尝试在移动设备上\n键入除短文本以外的任何内容时,\n出现拼写错误。
\n请与具有 Veracode 登录功能、乐于助人的 Ramda 用户联系\n该网站是否已正确更新。
\n如果该用户在五分钟内没有回复,请联系 Twitter 上的同一个用户。\n 这并不是说你很焦虑,想把这件事抛在脑后。\n真的不是。你不是那样的人。
\n阅读该用户的详细回复,解释一切都很好。
\n接收来自 Veracode 支持电子邮件地址的后续信息,告诉您\n
\n\n\n经过深思熟虑,我们决定更新数据库以删除\n此报告。
\n
并且他们正在解决这个问题。
\n他们是在本周下班时间(周五晚上 7:00)之后才发送此消息,这让我们大笑。
\n礼貌地回应说您对结果表示感谢,但\n您仍然希望看到他们的争议流程现代化。
\n这就是所需要的一切。所以下次你遇到这个问题时,你也可以解决它!
\n(因为你知道这不可能那么容易!)
\n收到一封来自新 Veracode 客户主管的电子邮件,其中写道
\n\n\n感谢您的关注!自我介绍为您在 Veracode 的\n联系人。
\n我很高兴有机会回答您有关 Veracode 服务和该领域的方法的任何问题。
\n您有几分钟的空闲时间来联系基地吗?请告诉我您方便的时间,我会及时跟进。
\n
礼貌地回复建议与 Kevin 交谈的电子邮件,并\n包含此步骤列表的链接。
\n1这是 Ramda 问题的标准行为,但这可能是 Veracode 选择报告此问题的主要原因。
\n2 注意不要陷入无限循环。此递归没有基本情况。
\n3嘿,这件事发生在感恩节前后。一定有爱丽丝餐厅的参考!
\n4如果您还没有找到 Kevin,现在是坚持让 Veracode 为您提供一个的好时机。
\n5包括脚注。
\n