WakaTime竞态条件漏洞分析:同名组织重复创建的技术细节

本文详细分析了WakaTime平台存在的竞态条件漏洞,该漏洞允许攻击者通过并发请求创建多个同名组织,绕过前端和后端的唯一性约束检查,可能导致数据完整性问题、权限混淆和业务逻辑错误。

WakaTime | 报告 #3248712 - 非漏洞:竞态条件允许创建多个同名组织 | HackerOne

时间线

ID验证黑客(已成功完成ID验证检查的黑客) ctrl_cipher 向 WakaTime 提交了一份报告。 2025年7月12日,12:57 AM UTC

摘要

组织创建逻辑中存在竞态条件漏洞,允许攻击者创建多个同名组织,违反了用户界面强制执行的预期唯一性约束。根据平台如何处理组织身份,这可能导致混淆、业务逻辑中断或潜在滥用。

重现步骤

  1. 登录您的账户并导航到组织创建页面。
  2. 选择一个组织名称,例如 ctrl2,并在 burp 中拦截请求的同时创建组织。
  3. 观察组织是否成功创建。
  4. 现在尝试使用与第一个相同的名称创建另一个组织,并观察您是否收到错误“您已有一个同名的组织”。如下所示:

图片 F4557889: image.png 43.14 KiB

  1. 在您的 burpsuite 流量中找到组织创建请求,如下所示:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
POST /settings/orgs/new HTTP/2
Host: wakatime.com
Cookie: csrftoken=c25cc215f903abf846b48d367d927846cef87dfdf937fb24a5ea5608a5a4ac55; session=.eJxNkctqKzEMhvd9ijLrGuSrrHmOrroZZFk-HZpkwJOBQsm710nOgbOz9V_0Gf-8vL5OS-u6f07ztR_69hisdZqnCjUn66pn5KrimzI3jRacyBw5sMS_jfrccXiJKBnGWEwoGQz5VExNhUOwKXoP0_wz3nWBsduCiATQW3m2aAecIH4-2oV-HztM43_7VP55o2SZUm4xTO3ZgzCZTyQbFl-RQAoB7Aq37Itulrf286JnX0yKnbdf63y9uff2zdG3au_Zpvhyn02N-XM_Lvh1ddB-4t5fbL91QjFs.aHGhqQ.8Gxi0UY4hovSw40rLf4uXSR0gyg; ?????????; github_csrf_token=c2cc079fb1ba0e7be7439ab9d84d11aa; remember_token=94bdd862-5199-4932-8e8c-b9712500f5d5|45aaa269d747d5c764973ad9397758e1e36e8f308fdb6cff4f934e85dad66ba73a0914e77fe2164d926b37b59e6ecc475669ab40326b91bbd5a0abfa6fe34976
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:140.0) Gecko/20100101 Firefox/140.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://wakatime.com/settings/orgs/new
Content-Type: application/x-www-form-urlencoded
Content-Length: 85
Origin: https://wakatime.com
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Sec-Fetch-User: ?1
Priority: u=0, i
Te: trailers

csrftoken=c25cc215f903abf846b48d367d927846cef87dfdf937fb24a5ea5608a5a4ac55&name=ctrl2
  1. 将请求发送到您的 burp repeater,并将 “name” 参数修改为您想要为多个组织命名的任何名称,并为请求创建一个组,将请求复制到超过10个类似的请求,如下所示(组4标签):

图片 F4557892: image.png 214.38 KiB

  1. 现在并行发送这组请求(单包攻击),以便请求同时并发发送,如下所示:

图片 F4557894: image.png 26.89 KiB

  1. 允许请求完成并跟随所有请求的重定向。返回浏览器,观察通过利用此竞态条件创建了许多同名组织(我创建了超过30个同名组织):

图片 F4557896: image.png 140.02 KiB

  1. 确认您也收到了大量组织创建的电子邮件,如下所示: 图片 F4557900: image.png 1017.69 KiB

尽管用户界面显示错误“您已有一个同名的组织”,但将创建多个同名组织。

影响

  • 数据完整性违规:重复的组织名称破坏了平台的数据假设并违反了预期约束。
  • 授权和业务逻辑混淆:许多系统依赖唯一的组织名称来限定权限、审计或计费。多个条目可能导致不正确的访问授权或错误归属。
  • 潜在利用:攻击者可能滥用此缺陷:
    • 混淆协作者或支持团队。
    • 绕过组织数量的限制。
    • 导致日志记录、报告或计费机制出现问题。

建议

  • 在服务器端实施适当的锁定或事务检查,以在数据库级别强制执行唯一的组织名称约束。
  • 确保后端验证是竞态安全的,不仅依赖前端或预检查逻辑。
  • 考虑在数据库模式中对组织名称使用 UNIQUE 约束。

附件

5个附件 F4557889: image.png F4557892: image.png F4557894: image.png F4557896: image.png F4557900: image.png

ID验证黑客 ctrl_cipher 发表评论。2025年7月12日,1:37 AM UTC 图片 F4557949: image.png 129.53 KiB 附件 1个附件 F4557949: image.png

ID验证黑客 ctrl_cipher 发表评论。2025年7月12日,2:05 AM UTC 利用此漏洞还会使某些应用内功能无法使用。我认为您应该限制一个人可以创建的组织数量,以便用户可以访问所有应用内功能。 图片 F4557973: image.png 34.51 KiB 附件 1个附件 F4557973: image.png

alanhamlett WakaTime 员工 将严重性从中等(6.5)更新为无。2025年7月12日,5:35 AM UTC 这是一个错误,不是漏洞。

alanhamlett WakaTime 员工 关闭报告并将状态更改为信息性。2025年7月12日,5:41 AM UTC 谢谢!

ID验证黑客 ctrl_cipher 发表评论。2025年7月12日,6:55 AM UTC 感谢您的回复。虽然我理解这可能看起来像业务逻辑错误,但需要注意的是,这是一个基于竞态条件的逻辑缺陷,具有直接的安全影响:

  • 它绕过了前端和后端强制执行的约束,违反了系统的设计假设(即组织名称的唯一性)。
  • 它导致数据完整性问题,可能影响授权逻辑、计费系统、审计跟踪甚至用户信任。
  • 如果任何下游系统假设组织名称是唯一的,这可能成为一个攻击向量(例如,冒充、权限混淆)。

这与已知漏洞分类一致:

  • CWE-840:业务逻辑错误
  • CWE-362:竞态条件
  • CWE-693:保护机制失败

多个平台(例如 GitHub、GitLab、Atlassian)将此类竞态条件绕过视为安全问题,当它们导致未经授权的重复或约束违规时。 我希望重新考虑分类——特别是因为该问题是通过并发请求利用的,而不是正常的用户界面行为,表明并发控制中的缺陷而不是用户界面缺陷。

ID验证黑客 ctrl_cipher 发表评论。2025年7月12日,7:00 AM UTC 想要一个利用吗?如果我为一个组织付费,它会反映在所有同名组织的付费状态上….如果您仍然认为这是一个“错误”而不是漏洞,我希望请求披露此报告。 图片 F4558326: image.png 240.87 KiB 附件 1个附件 F4558326: image.png

ctrl_cipher 请求披露此报告。2025年7月12日,7:00 AM UTC

ID验证黑客 ctrl_cipher 发表评论。2025年7月12日,7:03 AM UTC 这是我第一次被告知竞态条件是“错误”而不是漏洞…..有趣 ;p

ID验证黑客 ctrl_cipher 发表评论。2025年7月12日,7:10 AM UTC 我认为这是一个漏洞,因为它破坏了一个安全相关的约束,该约束是应用程序强制执行的,以确保没有组织以相同的名称创建作为业务规则。我刚刚描述的问题绕过了安全规则。

ID验证黑客 ctrl_cipher 发表评论。2025年7月12日,7:32 AM UTC https://hackerone.com/reports/2682392 https://hackerone.com/reports/1913309 https://hackerone.com/reports/2598548 https://hackerone.com/reports/3104355

alanhamlett WakaTime 员工 发表评论。2025年7月12日,3:36 PM UTC 我们实际上允许重复的组织名称,这样设计是为了防止一个人加入由两个不同人创建的具有相同名称的组织。这最多是一个错误,甚至不接近漏洞。抱歉!

WakaTime 已锁定此报告。2025年7月12日,3:36 PM UTC

ID验证黑客 ctrl_cipher 取消了披露此报告的请求。2025年7月13日,12:26 PM UTC 如果是这样的话,请披露此报告… kindly

alanhamlett WakaTime 员工 重新打开了此报告。2025年7月14日,12:35 AM UTC

alanhamlett WakaTime 员工 关闭报告并将状态更改为不适用。2025年7月14日,12:36 AM UTC 因为您一直在浪费我们的时间,我们将此更改为 N/A 并披露。

alanhamlett WakaTime 员工 请求披露此报告。2025年7月14日,12:36 AM UTC

alanhamlett WakaTime 员工 披露了此报告。2025年7月14日,12:37 AM UTC

alanhamlett WakaTime 员工 将报告标题从“竞态条件允许创建多个同名组织”更改为“非漏洞:竞态条件允许创建多个同名组织”。2025年7月14日,12:38 AM UTC

WakaTime 已锁定此报告。2025年7月14日,12:38 AM UTC

报告详情

报告于 2025年7月12日,12:57 AM UTC 报告者 ctrl_cipher 报告给 WakaTime 参与者 报告 ID #3248712 严重性 无 (0.0) 披露于 2025年7月14日,12:37 AM UTC 弱点 业务逻辑错误 CVE ID赏金 隐藏 账户详情

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计