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

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 数据库中找不到这个。

Sco*_*yet 9

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

\n
\n

前期工作

\n\n

第一天

\n
    \n
  • 收到有关该问题的评论,表明用户已\n收到

    \n
    \n

    修复此问题的 VULN 票证Prototype Pollution vulnerability found in ramda.

    \n
    \n
  • \n
  • 对此评论进行讨论以了解\n有一份报告声称

    \n
    \n

    ramda 很容易受到原型污染。攻击者可以通过函数将属性注入到现有构造原型中_curry2,并修改属性,例如__proto__ constructor prototype

    \n
    \n

    最终得知这是由于软件\n安全公司Veracode的报告造成的。

    \n
  • \n
\n

第 2 天和第 3 天

\n
    \n
  • 检查该报告,发现它没有详细信息,没有解释如何触发该漏洞,也没有建议的修复方法。

    \n
  • \n
  • 检查该报告和 Veracode 站点的其他部分,发现\n没有公共机制来质疑此类报告。

    \n
  • \n
\n

第 4 天

\n
    \n
  • 向图书馆的问题报告,该报告一定是错误的,\n提到的功能不可能生成\n所描述的行为。

    \n
  • \n
  • 发布正在讨论的漏洞的实际示例和\n并行片段,以证明它没有共享该问题。

    \n
  • \n
  • 查找 Veracode 的在线支持表格,然后提交帮助请求。保持\n较低的期望,因为这可能是针对销售部门的。

    \n
  • \n
  • 发布StackOverflow 问题2,询问如何查找\nVeracode 漏洞报告的详细信息,使用足够的详细信息,如果\n社区具备相关知识,应该很容易回答。

    \n
  • \n
\n

第 5 天和第 6 天

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

第 7 天

\n
    \n
  • 为 StackOverflow 问题添加 250 点声誉点奖励,\n尝试吸引之前处理过此问题的聪明人的额外关注。\n
  • \n
\n

第 8 天

\n
    \n
  • 在 Veracode 网站上查找直接电子邮件支持地址,然后发送一封电子邮件,询问假定漏洞的详细信息、演示问题的片段以及质疑其发现的程序。
  • \n
\n

第 9 天

\n
    \n
  • 收到来自 Veracode 支持电子邮件地址的回复,\n 部分,

    \n
    \n

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

    \n

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

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

    \n
  • \n
  • 收到回复,表明这已“迅速上链”,您\n很快就会收到他们的回复。

    \n
  • \n
\n

第 10 - 11 天

\n
    \n
  • 再次强调,不要过分地检查您的电子邮件或 StackOverflow 问题。\n但是,如果您碰巧浏览了 StackOverflow,请注意,虽然\n仍然没有答案,但已经有足够的赞成票来支付\n一半以上的成本赏金。显然,您并不是唯一一个想知道如何做到这一点的人。
  • \n
\n

第 12 天

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

    \n
    \n

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

    \n

    下周你有时间联系吗?

    \n

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

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

    \n
  • \n
  • 在 StackOverflow 中添加评论来解释该流程的进展情况并表达您的不满。

    \n
  • \n
\n

第 13 - 14 天

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

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

    \n
  • \n
\n

第 15 天

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

    \n
    \n

    嗨,斯科特,我请我的团队帮助解决您的问题,这是\n他们的回复:

    \n

    我们根据https://github.com/ramda/ramda/pull/3192中提供的信息构建了此工件。在 Pull 请求中,\n POC ( https://jsfiddle.net/3pomzw5g/2/ ) 清楚地展示了\nmapObjIndexed 函数中的原型污染漏洞。在演示中,用户对象是通过__proto__\xe2\x80\x8b属性修改的,并且是
    认为违反了 CIA 三元组的完整性。这已反映在我们的 vuln 数据库中对此漏洞的 CVSS 评分中。

    \n

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

    \n

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

    \n
    \n
  • \n
  • 当您\n意识到您认为的问题可能是由看过 Veracode 报告的人\n提出的,而不是来源时,请尽量避免长时间用头撞墙

    \n
  • \n
  • 回复这位乐于助人的人,是的,您会为此产生争议,\n并询问是否可以直接与相关的 Veracode\n人员联系,这样就不需要中间人了。

    \n
  • \n
  • 收到来自这位乐于助人的人的电子邮件 - 他需要名字,我们称他为“凯文” - 收到凯文的电子邮件,将研究团队添加到电子邮件链中。(我告诉过你他很有帮助!)

    \n
  • \n
  • 回复凯文和团队并附上一条简短的说明,\n您将花一些时间写下回复并尽快回复他们。

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

    \n
    \n

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

    \n
    \n

    但还要注意,它仍然不包含任何细节、没有片段、没有争议\n过程。

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

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

    \n
  • \n
  • 告诉凯文发生了什么事,并确保他愿意继续担任\n中间人。他再次乐于助人,并且会立即同意。

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

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

    \n
  • \n
  • 请注意,不可退还的 StackOverflow 赏金已过期,且未提供\n单一答案。

    \n
  • \n
\n

第 16 - 21 天

\n
    \n
  • 玩弄你的拇指一周,但与此同时......

    \n
  • \n
  • 接收来自 Veracode 的营销电子邮件,该电子邮件之前从未向您发送过\n。

    \n
  • \n
  • 请注意,Veracode 再次更新了描述:

    \n
    \n

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

    \n
    \n

    如果这还不清楚,翻译会是,“嘿,我们报告了这一点,\n我们不想让步,所以我们会说,即使\n我们注意到的行为没有\n实际上并没有发生,那里的行为仍然存在,嗯,呃,不知何故是错误的。”

    \n
  • \n
  • 请注意,雇主拥有 Veracode 帐户的图书馆粉丝\n已经能够从他们的报告中收集更多信息。\n事实证明,他们的详细信息仅限于登录用户,\n完全不清楚他们如何看待此类漏洞应该\n修复。

    \n
  • \n
\n

第 22 天

\n
    \n
  • 向 Kevin 4发送后续电子邮件说

    \n
    \n

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

    \n

    我看到漏洞报告已更新但未删除。
    \n我仍然对它的修改版本有争议。如果此行为是一个真正的漏洞,您能否向我指出 JavaScript 的等效报告Object.assign,如前所述,该报告具有与相关函数完全相同的问题。

    \n

    我的近期目标是撤回这份报告。但我也想\n指出这个过程中涉及的痛点,我认为 Veracode\n 可以解决的痛点:

    \n

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

    \n
    \n
  • \n
\n

第 23 天

\n
    \n
  • 收到一封来自仍然乐于助人的凯文的电子邮件,其中写道

    \n
    \n

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

    \n

    如果您在 72 小时内没有\xe2\x80\x99 回复,请联系我。

    \n

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

    \n
    \n
  • \n
  • 当他认为你很有耐心时,请大声笑出来。

    \n
  • \n
  • 做出回应,向凯文道歉,因为他夹在中间,然后阅读他善意的回复。

    \n
  • \n
\n

第 25 天

\n
    \n
  • 收到凯文的回复,您的主要目标已经实现:

    \n
    \n

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

    \n

    \xe2\x80\x9c更新我们的数据库以删除报告是最终结果\xe2\x80\x9d

    \n

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

    \n

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

    \n
    \n
  • \n
  • 感激地回应凯文,并指出您仍然想听\n他们如何改变流程。

    \n
  • \n
  • 回复您自己的电子邮件,向凯文道歉,\n当您尝试在移动设备上\n键入除短文本以外的任何内容时,\n出现拼写错误。

    \n
  • \n
  • 请与具有 Veracode 登录功能、乐于助人的 Ramda 用户联系\n该网站是否已正确更新。

    \n
  • \n
  • 如果该用户在五分钟内没有回复,请联系 Twitter 上的同一个用户。\n 这并不是说你很焦虑,想把这件事抛在脑后。\n真的不是。你不是那样的人。

    \n
  • \n
  • 阅读该用户的详细回复,解释一切都很好。

    \n
  • \n
  • 接收来自 Veracode 支持电子邮件地址的后续信息,告诉您\n

    \n
    \n

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

    \n
    \n

    并且他们正在解决这个问题。

    \n
  • \n
  • 他们是在本周下班时间(周五晚上 7:00)之后才发送此消息,这让我们大笑。

    \n
  • \n
  • 礼貌地回应说您对结果表示感谢,但\n您仍然希望看到他们的争议流程现代化。

    \n
  • \n
\n

第 27 天

\n
    \n
  • 针对您自己的 Stack Overflow 问题编写一个 2257 字的答案5 \n\n详细解释您解决此问题\n的过程。
  • \n
\n
\n

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

\n
\n
\n
\n

更新

\n

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

\n

第 61 天

\n
    \n
  • 收到一封来自新 Veracode 客户主管的电子邮件,其中写道

    \n
    \n

    感谢您的关注!自我介绍为您在 Veracode 的\n联系人。

    \n

    我很高兴有机会回答您有关 Veracode 服务和该领域的方法的任何问题。

    \n

    您有几分钟的空闲时间来联系基地吗?请告诉我您方便的时间,我会及时跟进。

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

    \n
  • \n
\n
\n
\n

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

\n

2 注意不要陷入无限循环。此递归没有基本情况。

\n

3嘿,这件事发生在感恩节前后。一定有爱丽丝餐厅的参考!

\n

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

\n

5包括脚注。

\n